Commit Graph

1159 Commits

Author SHA1 Message Date
Piotr Krysik e4da417f8d Remove local copy of associated osmo libraries
Change-Id: I2b4afedd9f2d568b5287d791891b2c2893fc6843
2021-05-03 07:14:00 +02:00
Piotr Krysik df417739b0 cmake: make formatting of install statements follow one pattern
Change-Id: Ib7d571af629b0af78397a411b0cca409a6d218d8
2021-05-03 07:14:00 +02:00
Piotr Krysik 21b0f7d228 cmake: change 'gsm' to 'grgsm'
Change-Id: I130a7912e179b1f04e68eb131e06800becca5a00
2021-05-03 07:14:00 +02:00
Piotr Krysik d8211032fa trx: Removing old and unused grc based radio_if
Change-Id: I7d43e6f2962b21ff03601cf1b1aafc222f2c4661
2021-05-03 07:14:00 +02:00
Vasil Velichkov b82bbeb026 Fix compiling with the local libosmocore copy
Change-Id: Ic72e6ca7f9cc40bc2d78b931e54e66cd71444835
2021-05-03 07:14:00 +02:00
Vasil Velichkov 284f1dbb40 Log import errors as currently GRC 3.8 suppress them
See gnuradio/grc/core/FlowGraph.py:194

Change-Id: Ie6213428c218720692a544c98dc32c16bd50cbe1
2021-05-03 07:14:00 +02:00
Vasil Velichkov e05ada3a78 travis: Test in Ubuntu 18.04 container
- Install gnuradio from the new official PPA repository
  https://launchpad.net/~gnuradio/+archive/ubuntu/gnuradio-releases

Change-Id: Iaa8813ab0ae91b667285ab3ef42ffaa279e3a885
2021-05-03 07:14:00 +02:00
Vasil Velichkov dfcf7fd5a3 Print the error message on stderr in a python2 compatible way
Change-Id: Iaea1510b02a2df924ef9777d107d22c45cb37d12
2021-05-03 07:14:00 +02:00
Vasil Velichkov cc8d86320e tests: export VOLK_GENERIC=1 to workaround VOLK's bug 278
Change-Id: Ib9ad4384388e480b8fa2f91e02359c85c749e802
2021-05-03 07:14:00 +02:00
Vasil Velichkov 71fb85cc79 tests: Get more information about CPU and user limits
Change-Id: I0bd3c206f422e11a59070a1c9aace38201ff7c85
2021-05-03 07:14:00 +02:00
Vasil Velichkov fc046c48cd tests: fix some shellcheck errors.
Execute "gnuradio-config-info --version" instead of
"gnuradio-companion --version"

Change-Id: Ia399324ae7a39e120e338c86d449d7c4d54bd866
2021-05-03 07:14:00 +02:00
Vasil Velichkov fa1bd24c1d travis: Use bionic build environment
https: //docs.travis-ci.com/user/reference/bionic/

Change-Id: I8f622506329ee97ff3555c2a43a2165303d9ae82
2021-05-03 07:14:00 +02:00
Vasil Velichkov f90804500f travis: Install gr-osmosdr from the apt repository
Also install liborc-dev as gnuradio depends on it

Change-Id: I0bbc33a39ef1e4edc1636c338e429639e0b15066
2021-05-03 07:14:00 +02:00
Vasil Velichkov a12e9e1a9f Add .dockerignore file
Change-Id: I8d4b527a2e5c7b69e5c7338cafba3fbdac381ae1
2021-05-03 07:14:00 +02:00
Vasil Velichkov 601c786d51 tests: Close the temp file handle in qa_burst_file_source
This fixes the following warning

./usr/lib64/python3.7/unittest/case.py:645: ResourceWarning: unclosed file <_io.BufferedWriter name='/tmp/tmpkkz_akd6'>
  testMethod()
ResourceWarning: Enable tracemalloc to get the object allocation traceback

Change-Id: I66c2be2e5bf6915e3df253b3a69f5516534e3750
2021-05-03 07:14:00 +02:00
Vasil Velichkov f6314031e7 Python 3 compatibility changes in fn_time.py
- Use range instead of xrange as it has been removed
- Use integer division operator (//)
- Import uniform and fn_time_delta_cpp only when started as a script
- Remove the unused imports

Change-Id: I268e0aec8fb8e6d490bfb8b0e9e6d169a9f6c352
2021-05-03 07:14:00 +02:00
Vasil Velichkov 45b04bb3cc Build the grgsm_livemon man page
Change-Id: Ie128d68965b5cb2c919afa408b4c8aa7ca87ea8c
2021-05-03 07:14:00 +02:00
Vasil Velichkov 0c2845650a tests: Do not specify filename when runing gr_unittest
This fixes the following warning

DEPRECATED: Using filename with gr_unittest does no longer have any effect.

Change-Id: I7d6dbc32ff794ebf2bc116fa7437062e6780b85f
2021-05-03 07:14:00 +02:00
Vasil Velichkov 0af1435815 Remove build_utils.py and build_utils_codes.py
These two files are no longer used

Change-Id: I80a364c729e75681a0afd926ea3ecd0eb2d65381
2021-05-03 07:14:00 +02:00
Vasil Velichkov 30eb567619 travis: Add /usr/local/lib/python3/dist-packages/ to PYTHONPATH
and run ldconfig after installing gr-iqbal and gr-osmosdr.

Due to debian-python-install patch [1] the OOT packages are installed in
/usr/local/lib/python3/dist-packages but this path is not in the python3
default search paths (sys.path) and because of this importing OOT
modules fails.

[1] https://salsa.debian.org/bottoms/pkg-gnuradio/blob/25e1de07/debian/patches/debian-python-install

Change-Id: I260c82d1a53dab85f7aac86f23e61309d8841255
2021-05-03 07:14:00 +02:00
Vasil Velichkov 65f95f5ae0 travis: Install liborc-0.4-dev needed for gr-iqbal
on Debian Testing and Kali with gnuradio (3.8.0.0-5)

Change-Id: I4512bb734691f553d63cac59fd2c7ba3ccf3f881
2021-05-03 07:14:00 +02:00
Vasil Velichkov c7134fff20 Do not add python/misc_utils to PYTHONPATH when executing tests
Change-Id: Ib19a181a3fd9bb78c1d3989bad0e55433f060950
2021-05-03 07:14:00 +02:00
Vasil Velichkov 6eea94f7de Fix grcc compilation with python3 by adding local subdirs to __path__
As the directory structure in the repository is different then the one
after the package gets installed we need to add those subdirectories to
the __path__ otherwise python3 is not able to load the modules using the
relative import syntax and grcc compilation and some unit tests fail.

Mofiy __path__ only when the CMAKE_BINARY_DIR environment variable is
present.

Revert "grgsm_livemon: Set cell_allocation to [0]"

This reverts commit 013d4c258c6ad31c2581f0caa4eee3aa609fd9de.

Change-Id: I223fd6181e8e36027039301186b671712a597ff8
2021-05-03 07:14:00 +02:00
Vasil Velichkov 783a1f7b56 Remove the RTLD_GLOBAL hack
It was removed from gnuradio back in 2014
39f14138ac

Change-Id: I1604ad5b9eefe3d4a2228b2a09e2069962844c97
2021-05-03 07:14:00 +02:00
Vasil Velichkov 5e0ea65121 travis: gnuradio-companion 3.8 does not have --version parameter
And currently grgsm, gr-osmosdr and gr-iqbal are installed in
/usr/local/lib/python3/dist-packages/ which is not in the default python
search path.

Change-Id: I7e00c84a4b72e9fa1dcf5ac453882f1733724ac0
2021-05-03 07:14:00 +02:00
Vasil Velichkov 9feb7da807 grgsm_decode: Print frequency or ARFCN message on stderr
For some yet unknown reasons in travis on Debian testing and Kali rolling
the message gets printed after the burst and decode.sh and decrypt.sh
tests fails because of this.

Instead of filtering this messages in the tests I think it is better
such messages to be printed on the standard error output

Change-Id: Ib18be898cac74769cabf1b748e40e21d23f08e98
2021-05-03 07:14:00 +02:00
Vasil Velichkov fc10d03390 grgsm_livemon: Specify localhost as string
Traceback (most recent call last):
  File "/home/vasko/gr38/lib/python3.7/dist-packages/gnuradio/grc/core/FlowGraph.py", line 216, in renew_namespace
    value = eval(parameter_block.params['value'].to_code(), namespace)
  File "<string>", line 1, in <module>
NameError: name 'localhost' is not defined

Change-Id: I6bae2fb1f09038cb0cd3410533d3b3fdc79ed354
2021-05-03 07:14:00 +02:00
Vasil Velichkov 88c2925d46 grgsm_livemon: Set cell_allocation to [0]
Gnuradio 3.8 does not like cell_allocation: '[arfcn.downlink2arfcn(fc)]'
and the Receiver block does not work with an empty cell allocation array

gnuradio.grc.core.platform:["Param - Cell allocation(cell_allocation):\n\tExpression None is invalid for type'float_vector'."]

Change-Id: Iae6de844509b13bdf834c9c7443382b1ab3b0a28
2021-05-03 07:14:00 +02:00
Vasil Velichkov 165288c464 grgsm_livemon: Fix UDP client and server blocks
During the convertion to YAML the block types was changed
from TCP to UDP

Change-Id: I542d7c36c30dc8179fa0ee84fc87e134cd2ba9f5
2021-05-03 07:14:00 +02:00
Vasil Velichkov cb1109851c grgsm_livemon: Change the type of several parameters to string
It seems gnuradio 3.8 does not like parameters with type None and does
not put them as command line arguments

Change-Id: Id67e37e826aa1cc14640d57207a92def682f11e3
2021-05-03 07:14:00 +02:00
Vasil Velichkov f8f25b8694 grgsm_livemon: Disable PPS sync
Because of the following error when used with USRP B100

[INFO] [MULTI_USRP]     1) catch time transition at pps edge
Traceback (most recent call last):
  File "./grgsm_livemon.py", line 365, in <module>
    main()
  File "./grgsm_livemon.py", line 343, in main
    tb = top_block_cls(fc=options.fc, gain=options.gain, osr=options.osr, ppm=options.ppm, samp_rate=options.samp_rate, shiftoff=options.shiftoff)
  File "./grgsm_livemon.py", line 114, in __init__
    self.rtlsdr_source_0.set_time_unknown_pps(osmosdr.time_spec_t())
  File "/home/vasko/gr38/lib/python3.7/dist-packages/osmosdr/osmosdr_swig.py", line 2543, in set_time_unknown_pps
    return _osmosdr_swig.source_sptr_set_time_unknown_pps(self, time_spec)
RuntimeError: RuntimeError: Board 0 may not be getting a PPS signal!
No PPS detected within the time interval.
See the application notes for your device.

Change-Id: Iee6124bdb2441666a53ac9ee5239894aea61dfde
2021-05-03 07:14:00 +02:00
Vasil Velichkov c00008fa7b travis: Manually install gr-iqbal and gr-osmosdr
Currently these two packages still depends on gnuradio 3.8 in debian
testing and kali rolling.

Change-Id: I4f956577293c48d803b8b45d06ba508792501274
2021-05-03 07:14:00 +02:00
Vasil Velichkov fc99ad4258 travis: Install only python3 packages
Change-Id: I3548fa7340afc63557cc65a7a396ecf96c607806
2021-05-03 07:14:00 +02:00
Vasil Velichkov 386dddb620 Convert grgsm_livemon and grgsm_livemon_headless to YAML
Convert by opening them in gnuradio-companion 3.8.0.0 (Python 3.7.4)
and then File -> Save As under different name without any other
modifications

Change-Id: I73023fc66d1ffd6c714a0610962c005395dc126b
2021-05-03 07:14:00 +02:00
Vasil Velichkov 46c90bec99 Various python3 related changes
- Use relative import for grgsm's modules
- Convert map to list
- Remove the hier_block.py workaround as as gnuradio 3.7 is no longer
  supported in this branch

Change-Id: I5ca8fd340823996e8c444aaf18ddacd85c92ab1c
2021-05-03 07:14:00 +02:00
Vasil Velichkov 333027f406 travis: Test only on distributions with gnuradio 3.8
Change-Id: I05706496687bff2dc4e9a111d8ecd4f878b53c12
2021-05-03 07:14:00 +02:00
Vasil Velichkov 14ea82d227 Migrate grc blocks from xml to yaml
Convert the blocks using cmdline_converter.py script from
c861a840e3/cmdline_converter.py

Change-Id: Iee5c611a2e100bd2fdf487611a867dc937d8c292
2021-05-03 07:14:00 +02:00
Vasil Velichkov 1789ae28ee GNU Radio 3.8 support
https://wiki.gnuradio.org/index.php/GNU_Radio_3.8_OOT_Module_Porting_Guide

Change-Id: I23dd638c8c48ed0a4b50559ce33fbd5e60b7dcbc
2021-05-03 07:14:00 +02:00
Vasil Velichkov fa184a9447 Fix uplink sub_slot and sub_types assignment in the sdcch4 and bcch_ccch demappers blocks
Add support for RACH bursts although they are not yet supported in the
receiver and control channel decoder blocks.

3GPP TS 45.002 version 15.1.0 Release 15
Table 3 : Mapping of logical channels onto physical channels (see subclauses 6.3, 6.4, 6.5)
Figure 8a: TDMA frame mapping for FCCH + SCH + BCCH + CCCH

Fixes the following tests:
qa_gsm_bcch_ccch_demapper.test_uplink
qa_gsm_bcch_ccch_sdcch4_demapper.test_uplink

Change-Id: Ia6b3070c1085bcdda6d98fd94a89c6e0982e2aec
2019-07-29 21:12:24 +03:00
Vasil Velichkov c895bf2f22 Fix uplink sub_slot assignment in the sdcch8 demapper block
3GPP TS 45.002 version 15.1.0 Release 15
Table 4 : Mapping of logical channels onto physical channels (see subclauses 6.3, 6.4, 6.5)

Fixes qa_gsm_sdcch8_demapper.test_uplink test

Change-Id: I29e9055805c8478010c51ceb40f86ba3aed5ecab
2019-07-29 21:12:24 +03:00
Vasil Velichkov 4954ae6fbf Fix sub_slot assignment in the universal_ctrl_chans_demapper block
3GPP TS 45.002 version 15.1.0 Release 15
Table 3 : Mapping of logical channels onto physical channels (see subclauses 6.3, 6.4, 6.5)
Table 4 : Mapping of logical channels onto physical channels (see subclauses 6.3, 6.4, 6.5)

Fixes the following tests:
qa_gsm_bcch_ccch_sdcch4_demapper.test_downlink
qa_gsm_sdcch8_demapper.test_downlink

Change-Id: Idc63407694fd1f7be962ab630d4e8c13b4a5d348
2019-07-29 21:12:24 +03:00
Vasil Velichkov ff88ba41ec Add control channels demappers tests
3GPP TS 45.002 version 15.1.0 Release 15
Table 3 : Mapping of logical channels onto physical channels (see subclauses 6.3, 6.4, 6.5)
Table 4 : Mapping of logical channels onto physical channels (see subclauses 6.3, 6.4, 6.5)
Figure 8a: TDMA frame mapping for FCCH + SCH + BCCH + CCCH
Figure 8b: TDMA frame mapping for FCCH + SCH + BCCH + CCCH + SDCCH/4(0...3) + SACCH/4(0...3)

Five of the six tests currently fail and are marked with
@unittest.expectedFailure. Fixes in subsequent commits.

Change-Id: I33b0948832a0c2506bffd389cc134c3236c74d27
2019-07-29 21:09:07 +03:00
Vasil Velichkov 54580d148d Filter out SoapyAudio devices
When gr-osmosdr is compiled with SoapySDR support and SoapyAudio is
installed the audio device is picked as a first choice when detecting
devices but grgsm tools are not able to work with audio devices. So in
such cases the user has to always specify the correct SDR device in the
args parameter which is a bit inconvenient.

When args is not specified call osmosdr.device_find to get all devices
and filter out unspported ones like SoapyAudio devices. When args is
specifed just try to create osmosdr.source with whatever value has been
specified.

Add -l and --list-devices command line option that prints information
about all detected devices.

Example commands:
  grgsm_capture --list-devices
  grgsm_capture --list-devices --args=nofake
  grgsm_capture --args=uhd,type=b210 -a 111 capture.cfile
  grgsm_livemon --args=rtl
  grgsm_livemon --args=uhd,type=b210

Change-Id: Ib84081041ca6c2bc18b9da0c32bac9d3ecef65ca
2019-05-03 00:20:34 +03:00
Vasil Velichkov 61e42c849d grgsm_capture: Fix device arguments
We need a space between numchan=1 and the rest of the device arguments
otherwise when --args is specified it fails with RuntimeError: bad lexical cast

$ grgsm_capture --args=soapy

Traceback (most recent call last):
  File "/usr/local/bin/grgsm_capture", line 179, in <module>
    device_args=options.device_args)
  File "/usr/local/bin/grgsm_capture", line 57, in __init__
    osmosdr.source(args="numchan=1" + device_args )
  File "/usr/local/lib64/python2.7/site-packages/osmosdr/osmosdr_swig.py", line 1170, in make
    return _osmosdr_swig.source_make(*args, **kwargs)
RuntimeError: bad lexical cast: source type value could not be interpreted as target

Change-Id: I2d1bcee835b695c91a5c44ec78a40b2d969f611c
2019-05-02 11:55:39 +00:00
Vasil Velichkov 61a3ca6cb4 Improve the TCH/H decoder logs
- Change "6,90 kbit/s" to "5.9 kbit/s"
  A typo reported in github ptrkrysik/gr-gsm#456
- Comment out the "Error! frame_nr:" message as it turns out to confuse
  users more then it actually helps debugging.
- When voice-boundary detection is enabled write the name of decoded
  control channel messages

Change-Id: I697ef944f30c4cabb62c888317dd3a7f8dcd5611
2019-05-02 12:59:20 +02:00
Piotr Krysik aaac615715 Improve slightly interface of plotting so it's easier to use it
Change-Id: Ia70ab45a8beb81512a9f83e316ad2d2bc385ef19
2019-04-01 09:43:26 +02:00
Vasil Velichkov c5bb436cda Fix the TCH/H decoder and demapper XML definitions
- The second argument of tch_h_decoder constructor is a string that
  accepts the value of MultiRate configuration element and not an enum
  like the tch_f_decoder decoder.
- Make the demapper's burst sink required.
- Make all parameters visible.
- Rename the TCH/H Channel parameter to Sub-channel number.
- Add the qa_tch_h_decoder test in the CMakeLists.txt
- Fix several typos

Change-Id: I92d4f49955c634df7d76f17cfb58d7106846c1bd
2019-03-19 17:36:28 +02:00
Piotr Krysik 81ba56f59d Major simplification and some argument changes in grgsm_capture
grmgs_capture tried to do too many things for a simple recorder.
It was simplified by removing the receiver and ability to
save data to bursts files.

All other stuff that is not necessary for recording signal to disk was
also removed:
-setters/getters,
-storing of parameters that never will be changed.

The 'fc' parameter name was changed to 'freq' to follow GNU Radio
guidelines.

The 'shiftoff' parameter was removed.

'bb_gain' and 'if_gain' parameters were added.

Variables specific to some of SDR's like:
-gains at different stages,
-bandwidth (not all devices can set it),
-antennas (some devices have just one, some not),
were moved to separate options group.

What is left to be exposed is:
-dc_offset_mode,
-iq_balance_mode,
-gain_mode.

Change-Id: I092a43eaddb09a99c6cc05fde13f0ae94d9e0251
2019-03-01 17:03:15 +00:00
Vasil Velichkov 57431ed50c grgsm_livemon: Use the osr variable in all blocks
In the GSM input adaptor and GSM Receiver blocks the osr was hardcoded
to 4 and cannot be changed using the command line parameter.

Change-Id: I4e85b898f05db636f18fdea6e5fee4fed6e0382a
2019-02-25 23:43:00 +02:00
Vasil Velichkov 2f0c096e30 MacOS fixes
- Include grgsm/endian.h in tch_h_decoder_impl.cc
- Revert 0ed39fbf93 as linking with
  boost_thread is needed

Fixes GH-444

Change-Id: I00884962295082cff3eb64fa21e9f73437be0001
2019-02-05 14:28:37 +00:00