Closed cooperq closed 4 years ago
How do I sign up to test with a HackRF?
Not necessarily cheaper but the usrp b205mini-I works with uhd. Confirmed, at least in my case, that it works. Is there a way to pass a soapy argument to srsue via the crocodile py file?
I have a lime SDR but would need some guidance to test
I have the three devices. I will give it a try. Where should I report the results ?
I have a lime SDR but would need some guidance to test
me too. I have lime SDR and would like to test but would need some guidance
You will have to start by enabling the SOAPY SDR drivers in https://github.com/EFForg/srsLTE/blob/master/CMakeLists.txt and then get your device working with SOAPY SDR. Compile SRSLTE by hand then test it with one of the test scripts. If it all works please let me know here!
Made this for someone else trying to use soapy and srslte. I don’t really have an issue using soapy so long as there’s only one device plugged in and/or being recognized by soapy as I don’t know yet how to pick individual devices when using soapy with srslte. It just picks the first device in the list so make sure you have only one thing being recognized by SoapySDRUtil, otherwise if you know the arguments to select specific devices please share.
Also, while soapy works when using some things with srslte directly, not sure how to pass this along when starting it with the crocodile file.
So I have SoapySDR running with the HackRF. It looks like it is found without issue.
ubuntu@ubunu2004:~/srsLTE$ SoapySDRUtil --find
######################################################
## Soapy SDR -- the SDR abstraction library ##
######################################################
Found device 0
device = HackRF One
driver = hackrf
label = HackRF One #0 XXXXXXXXXXXXXXX
part_id = a000cb3c0055434e
serial = 0000000000000000XXXXXXXXXXXXXXX
version = 2018.01.1
I made sure that the SoapySDR was enabled in the CMakeLists.txt file for srsLTE.
option(ENABLE_GUI "Enable GUI (using srsGUI)" OFF)
option(ENABLE_UHD "Enable UHD" ON)
option(ENABLE_BLADERF "Enable BladeRF" ON)
option(ENABLE_SOAPYSDR "Enable SoapySDR" ON)
option(ENABLE_HARDSIM "Enable support for SIM cards" OFF)
When running the crcodilehunter.py I get the following output. Is there something that needs to be passed to tell the script to use SoapySDR?
ubuntu@ubunu2004:~/crocodilehunter/src$ ./crocodilehunter.py -p default
* 22:00:10 default - INFO starting crododile hunter project: default
* 22:00:10 default - INFO Starting WebUI
* 22:00:10 default - INFO * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
* 22:00:10 default - INFO Checking for config file
* 22:00:10 default - INFO Checking for SDR
* 22:00:10 default - INFO No bladeRF devices connected. Assuming UHD device.
* 22:00:10 default - INFO No UHD device found either
* 22:00:10 default - CRITICAL Bootstrapping failed
* 22:00:10 default - ERROR Exiting...
* 22:00:10 default - WARNING Stopping Watchdog
* 22:00:10 default - SUCCESS See you space cowboy...
I showed in the video above what needs to be passed when running srslte normally to use soapy. It doesn’t appear this is possible with the crocodile script.
ah yea the problem here is the bootstrap script I have looks for either a bladeRF or Ettus device and quits if it doesn't find one. If you know bash this should be pretty easy to patch, if not I can try to get a patch today .
If you run crocodilehunter/src/srsLTE/build/lib/examples/cell_measurement -z <list,of,earfcns>
on its own with the hackrf does it work?
closing #91 as a duplicate of this issue.
Yeah, I noticed that. I commented the tests out and found an issue with my gps. I'm working on that at the moment. I'll let you know if I get to the point where I can build and test the hackrf with the cell_measurement. Hopefully soon.
So I was able to get it to run by commenting out the bladeRF and Ettus device checks. The web interface starts but still no joy on the SoapySDR for HackRF.
* 01:11:23 default - INFO starting crododile hunter project: default
* 01:11:23 default - INFO Starting WebUI
* 01:11:23 default - INFO * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
* 01:11:23 default - INFO -e Checking for config file
* 01:11:23 default - INFO -e Checking for SDR
* 01:11:23 default - INFO -e Starting GPS
* 01:11:24 default - INFO Warning: Stopping gpsd.service, but it can still be activated by:
* 01:11:24 default - INFO gpsd.socket
* 01:11:24 default - INFO -e Waiting for GPS to sync
* 01:11:25 default - INFO -e GPS successfully got location
* 01:11:25 default - INFO -e Compiling srsUE
* 01:11:27 default - INFO /home/ubuntu/Desktop/crocodilehunter/src/srsLTE/lib/src/phy/rf/rf_soapy_imp.c: In function ‘rf_soapy_open_multi’:
* 01:11:27 default - INFO /home/ubuntu/Desktop/crocodilehunter/src/srsLTE/lib/src/phy/rf/rf_soapy_imp.c:347:52: warning: passing argument 2 of ‘SoapySDRDevice_setupStream’ makes integer from pointer without a cast [-Wint-conversion]
* 01:11:27 default - INFO 347 | if(SoapySDRDevice_setupStream(handler->device, &(handler->rxStream), SOAPY_SDR_RX, SOAPY_SDR_CF32, rx_channels, numChannels, NULL) != 0) {
* 01:11:27 default - INFO | ^~~~~~~~~~~~~~~~~~~~
* 01:11:27 default - INFO | |
* 01:11:27 default - INFO | SoapySDRStream ** {aka struct SoapySDRStream **}
* 01:11:27 default - INFO In file included from /home/ubuntu/Desktop/crocodilehunter/src/srsLTE/lib/src/phy/rf/rf_soapy_imp.c:37:
* 01:11:27 default - INFO /usr/local/include/SoapySDR/Device.h:295:31: note: expected ‘int’ but argument is of type ‘SoapySDRStream **’ {aka ‘struct SoapySDRStream **’}
* 01:11:27 default - INFO 295 | SOAPY_SDR_API SoapySDRStream *SoapySDRDevice_setupStream(SoapySDRDevice *device,
* 01:11:27 default - INFO | ^~~~~~~~~~~~~~~~~~~~~~~~~~
* 01:11:27 default - INFO /home/ubuntu/Desktop/crocodilehunter/src/srsLTE/lib/src/phy/rf/rf_soapy_imp.c:347:74: warning: passing argument 3 of ‘SoapySDRDevice_setupStream’ makes pointer from integer without a cast [-Wint-conversion]
* 01:11:27 default - INFO 347 | if(SoapySDRDevice_setupStream(handler->device, &(handler->rxStream), SOAPY_SDR_RX, SOAPY_SDR_CF32, rx_channels, numChannels, NULL) != 0) {
* 01:11:27 default - INFO | ^~~~~~~~~~~~
* 01:11:27 default - INFO | |
* 01:11:27 default - INFO | int
* 01:11:27 default - INFO In file included from /home/ubuntu/Desktop/crocodilehunter/src/srsLTE/lib/src/phy/rf/rf_soapy_imp.c:37:
* 01:11:27 default - INFO /usr/local/include/SoapySDR/Device.h:295:31: note: expected ‘const char *’ but argument is of type ‘int’
* 01:11:27 default - INFO 295 | SOAPY_SDR_API SoapySDRStream *SoapySDRDevice_setupStream(SoapySDRDevice *device,
* 01:11:27 default - INFO | ^~~~~~~~~~~~~~~~~~~~~~~~~~
* 01:11:27 default - INFO /home/ubuntu/Desktop/crocodilehunter/src/srsLTE/lib/src/phy/rf/rf_soapy_imp.c:347:88: error: passing argument 4 of ‘SoapySDRDevice_setupStream’ from incompatible pointer type [-Werror=incompatible-pointer-types]
* 01:11:27 default - INFO 347 | if(SoapySDRDevice_setupStream(handler->device, &(handler->rxStream), SOAPY_SDR_RX, SOAPY_SDR_CF32, rx_channels, numChannels, NULL) != 0) {
* 01:11:27 default - INFO | ^~~~~~~~~~~~~~
* 01:11:27 default - INFO | |
* 01:11:27 default - INFO | char *
* 01:11:27 default - INFO In file included from /home/ubuntu/Desktop/crocodilehunter/src/srsLTE/lib/src/phy/rf/rf_soapy_imp.c:37:
* 01:11:27 default - INFO /usr/local/include/SoapySDR/Device.h:295:31: note: expected ‘const size_t *’ {aka ‘const long unsigned int *’} but argument is of type ‘char *’
* 01:11:27 default - INFO 295 | SOAPY_SDR_API SoapySDRStream *SoapySDRDevice_setupStream(SoapySDRDevice *device,
* 01:11:27 default - INFO | ^~~~~~~~~~~~~~~~~~~~~~~~~~
* 01:11:27 default - INFO /home/ubuntu/Desktop/crocodilehunter/src/srsLTE/lib/src/phy/rf/rf_soapy_imp.c:347:104: warning: passing argument 5 of ‘SoapySDRDevice_setupStream’ makes integer from pointer without a cast [-Wint-conversion]
* 01:11:27 default - INFO 347 | if(SoapySDRDevice_setupStream(handler->device, &(handler->rxStream), SOAPY_SDR_RX, SOAPY_SDR_CF32, rx_channels, numChannels, NULL) != 0) {
* 01:11:27 default - INFO | ^~~~~~~~~~~
* 01:11:27 default - INFO | |
* 01:11:27 default - INFO | size_t * {aka long unsigned int *}
* 01:11:27 default - INFO In file included from /home/ubuntu/Desktop/crocodilehunter/src/srsLTE/lib/src/phy/rf/rf_soapy_imp.c:37:
* 01:11:27 default - INFO /usr/local/include/SoapySDR/Device.h:295:31: note: expected ‘size_t’ {aka ‘const long unsigned int’} but argument is of type ‘size_t *’ {aka ‘long unsigned int *’}
* 01:11:27 default - INFO 295 | SOAPY_SDR_API SoapySDRStream *SoapySDRDevice_setupStream(SoapySDRDevice *device,
* 01:11:27 default - INFO | ^~~~~~~~~~~~~~~~~~~~~~~~~~
* 01:11:27 default - INFO /home/ubuntu/Desktop/crocodilehunter/src/srsLTE/lib/src/phy/rf/rf_soapy_imp.c:347:117: warning: passing argument 6 of ‘SoapySDRDevice_setupStream’ makes pointer from integer without a cast [-Wint-conversion]
* 01:11:27 default - INFO 347 | if(SoapySDRDevice_setupStream(handler->device, &(handler->rxStream), SOAPY_SDR_RX, SOAPY_SDR_CF32, rx_channels, numChannels, NULL) != 0) {
* 01:11:27 default - INFO | ^~~~~~~~~~~
* 01:11:27 default - INFO | |
* 01:11:27 default - INFO | size_t {aka long unsigned int}
* 01:11:27 default - INFO In file included from /home/ubuntu/Desktop/crocodilehunter/src/srsLTE/lib/src/phy/rf/rf_soapy_imp.c:37:
* 01:11:27 default - INFO /usr/local/include/SoapySDR/Device.h:295:31: note: expected ‘const SoapySDRKwargs *’ {aka ‘const struct <anonymous> *’} but argument is of type ‘size_t’ {aka ‘long unsigned int’}
* 01:11:27 default - INFO 295 | SOAPY_SDR_API SoapySDRStream *SoapySDRDevice_setupStream(SoapySDRDevice *device,
* 01:11:27 default - INFO | ^~~~~~~~~~~~~~~~~~~~~~~~~~
* 01:11:27 default - INFO /home/ubuntu/Desktop/crocodilehunter/src/srsLTE/lib/src/phy/rf/rf_soapy_imp.c:347:8: error: too many arguments to function ‘SoapySDRDevice_setupStream’
* 01:11:27 default - INFO 347 | if(SoapySDRDevice_setupStream(handler->device, &(handler->rxStream), SOAPY_SDR_RX, SOAPY_SDR_CF32, rx_channels, numChannels, NULL) != 0) {
* 01:11:27 default - INFO | ^~~~~~~~~~~~~~~~~~~~~~~~~~
* 01:11:27 default - INFO In file included from /home/ubuntu/Desktop/crocodilehunter/src/srsLTE/lib/src/phy/rf/rf_soapy_imp.c:37:
* 01:11:27 default - INFO /usr/local/include/SoapySDR/Device.h:295:31: note: declared here
* 01:11:27 default - INFO 295 | SOAPY_SDR_API SoapySDRStream *SoapySDRDevice_setupStream(SoapySDRDevice *device,
* 01:11:27 default - INFO | ^~~~~~~~~~~~~~~~~~~~~~~~~~
* 01:11:27 default - INFO /home/ubuntu/Desktop/crocodilehunter/src/srsLTE/lib/src/phy/rf/rf_soapy_imp.c:356:53: warning: passing argument 2 of ‘SoapySDRDevice_setupStream’ makes integer from pointer without a cast [-Wint-conversion]
* 01:11:27 default - INFO 356 | if (SoapySDRDevice_setupStream(handler->device, &(handler->txStream), SOAPY_SDR_TX, SOAPY_SDR_CF32, NULL, 0, NULL) != 0) {
* 01:11:27 default - INFO | ^~~~~~~~~~~~~~~~~~~~
* 01:11:27 default - INFO | |
* 01:11:27 default - INFO | SoapySDRStream ** {aka struct SoapySDRStream **}
* 01:11:27 default - INFO In file included from /home/ubuntu/Desktop/crocodilehunter/src/srsLTE/lib/src/phy/rf/rf_soapy_imp.c:37:
* 01:11:27 default - INFO /usr/local/include/SoapySDR/Device.h:295:31: note: expected ‘int’ but argument is of type ‘SoapySDRStream **’ {aka ‘struct SoapySDRStream **’}
* 01:11:27 default - INFO 295 | SOAPY_SDR_API SoapySDRStream *SoapySDRDevice_setupStream(SoapySDRDevice *device,
* 01:11:27 default - INFO | ^~~~~~~~~~~~~~~~~~~~~~~~~~
* 01:11:27 default - INFO /home/ubuntu/Desktop/crocodilehunter/src/srsLTE/lib/src/phy/rf/rf_soapy_imp.c:356:89: error: passing argument 4 of ‘SoapySDRDevice_setupStream’ from incompatible pointer type [-Werror=incompatible-pointer-types]
* 01:11:27 default - INFO 356 | if (SoapySDRDevice_setupStream(handler->device, &(handler->txStream), SOAPY_SDR_TX, SOAPY_SDR_CF32, NULL, 0, NULL) != 0) {
* 01:11:27 default - INFO | ^~~~~~~~~~~~~~
* 01:11:27 default - INFO | |
* 01:11:27 default - INFO | char *
* 01:11:27 default - INFO In file included from /home/ubuntu/Desktop/crocodilehunter/src/srsLTE/lib/src/phy/rf/rf_soapy_imp.c:37:
* 01:11:27 default - INFO /usr/local/include/SoapySDR/Device.h:295:31: note: expected ‘const size_t *’ {aka ‘const long unsigned int *’} but argument is of type ‘char *’
* 01:11:27 default - INFO 295 | SOAPY_SDR_API SoapySDRStream *SoapySDRDevice_setupStream(SoapySDRDevice *device,
* 01:11:27 default - INFO | ^~~~~~~~~~~~~~~~~~~~~~~~~~
* 01:11:27 default - INFO /home/ubuntu/Desktop/crocodilehunter/src/srsLTE/lib/src/phy/rf/rf_soapy_imp.c:356:105: warning: passing argument 5 of ‘SoapySDRDevice_setupStream’ makes integer from pointer without a cast [-Wint-conversion]
* 01:11:27 default - INFO 356 | if (SoapySDRDevice_setupStream(handler->device, &(handler->txStream), SOAPY_SDR_TX, SOAPY_SDR_CF32, NULL, 0, NULL) != 0) {
* 01:11:27 default - INFO | ^~~~
* 01:11:27 default - INFO | |
* 01:11:27 default - INFO | void *
* 01:11:27 default - INFO In file included from /home/ubuntu/Desktop/crocodilehunter/src/srsLTE/lib/src/phy/rf/rf_soapy_imp.c:37:
* 01:11:27 default - INFO /usr/local/include/SoapySDR/Device.h:295:31: note: expected ‘size_t’ {aka ‘const long unsigned int’} but argument is of type ‘void *’
* 01:11:27 default - INFO 295 | SOAPY_SDR_API SoapySDRStream *SoapySDRDevice_setupStream(SoapySDRDevice *device,
* 01:11:27 default - INFO | ^~~~~~~~~~~~~~~~~~~~~~~~~~
* 01:11:27 default - INFO /home/ubuntu/Desktop/crocodilehunter/src/srsLTE/lib/src/phy/rf/rf_soapy_imp.c:356:9: error: too many arguments to function ‘SoapySDRDevice_setupStream’
* 01:11:27 default - INFO 356 | if (SoapySDRDevice_setupStream(handler->device, &(handler->txStream), SOAPY_SDR_TX, SOAPY_SDR_CF32, NULL, 0, NULL) != 0) {
* 01:11:27 default - INFO | ^~~~~~~~~~~~~~~~~~~~~~~~~~
* 01:11:27 default - INFO In file included from /home/ubuntu/Desktop/crocodilehunter/src/srsLTE/lib/src/phy/rf/rf_soapy_imp.c:37:
* 01:11:27 default - INFO /usr/local/include/SoapySDR/Device.h:295:31: note: declared here
* 01:11:27 default - INFO 295 | SOAPY_SDR_API SoapySDRStream *SoapySDRDevice_setupStream(SoapySDRDevice *device,
* 01:11:27 default - INFO | ^~~~~~~~~~~~~~~~~~~~~~~~~~
* 01:11:27 default - INFO cc1: some warnings being treated as errors
* 01:11:27 default - INFO make[2]: *** [lib/src/phy/rf/CMakeFiles/srslte_rf.dir/build.make:76: lib/src/phy/rf/CMakeFiles/srslte_rf.dir/rf_soapy_imp.c.o] Error 1
* 01:11:27 default - INFO make[1]: *** [CMakeFiles/Makefile2:3197: lib/src/phy/rf/CMakeFiles/srslte_rf.dir/all] Error 2
* 01:11:27 default - INFO make: *** [Makefile:163: all] Error 2
* 01:11:27 default - INFO -e SrsUE built succesfully
* 01:11:27 default - INFO -e Reticulating Splines
* 01:11:27 default - SUCCESS Watchdog server running
* 01:11:27 default - NOTICE Using earfcn list 41094,40978,8340,66836,66711,66586,675,5035,2225,1075,2485,66486,66487,8763,8640,66761,41292,40270,975,2000,8665,9820,5230,5110,8315
* 01:11:27 default - INFO EARFCNS: 41094,40978,8340,66836,66711,66586,675,5035,2225,1075,2485,66486,66487,8763,8640,66761,41292,40270,975,2000,8665,9820,5230,5110,8315
* 01:11:27 default - INFO Running srsUE
Traceback (most recent call last):
File "./crocodilehunter.py", line 225, in <module>
crocodile_hunter.start()
File "./crocodilehunter.py", line 109, in start
proc = self.start_srslte()
File "./crocodilehunter.py", line 140, in start_srslte
proc = Popen(["./srsLTE/build/lib/examples/cell_measurement", "-z", earfcns], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
File "/usr/lib/python3.8/subprocess.py", line 854, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.8/subprocess.py", line 1702, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: './srsLTE/build/lib/examples/cell_measurement'
^ * 01:12:00 default - CRITICAL You pressed Ctrl+C!
* 01:12:00 default - ERROR Exiting...
* 01:12:00 default - WARNING Stopping Watchdog
* 01:12:00 default - SUCCESS See you space cowboy...
So even if you build in soapy support (I just did with no errors), if you have a look at the examples they only allow or at least say they do “ -a RF args” and not device_name which is what I think is needed. If you have a look at the UE.conf you’ll see that device_name is different than device_args. I’m trying to run any of the examples with soapy but it reverts to uhd. I’ll keep trying but I think something more is needed.
I don't think that the crocodilehunter/src/srsLTE/build/lib/examples/cell_measurement
is being built. The directory is empty. I do have the crocodilehunter/src/srsLTE/lib/examples/cell_measurement.cc
file.
Go to the src/srslte directory. mkdir build cd build cmake .. make
See where it’s failing. Are you building on 20.04? If so, it doesn’t build. 18.04 works.
I am building on 20.04. So I need to do this on 18.04? I'll get a VM put together and see if I can try that out this afternoon.
I put together a video of how I built it on a project I maintain, which is based on 18.04. You could maybe use the video as a reference should you encounter the same problems as me. Later today or tomorrow I was going to just upload a dvd that has everything running by default.
But as to 20.04. I could not get the required version of srslte to compile, however, I could get the newest srslte to compile. So I tried various changes mentioned in other issue tickets but no luck for me.
Sent from my Android
On Aug 17, 2020, at 4:40 PM, phantomdennis notifications@github.com wrote:
I am building on 20.04. So I need to do this on 18.04? I'll get a VM put together and see if I can try that out this afternoon.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
I used the DragonOS, thank you @alphafox02 and I was able to get the system compiled and running a bit more than before. See output below. This is with the HackRF and SoapySDR. Any thoughts @cooperq?
* 11:39:28 default - INFO starting crocodile hunter project: default
* 11:39:28 default - INFO Starting WebUI
* 11:39:28 default - INFO * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
* 11:39:28 default - INFO Checking for config file
* 11:39:28 default - INFO Checking for SDR
* 11:39:28 default - INFO Starting GPS
* 11:39:29 default - INFO Waiting for GPS to sync
* 11:39:30 default - INFO GPS successfully got location
* 11:39:30 default - INFO Compiling srsUE
* 11:39:34 default - INFO SrsUE built succesfully
* 11:39:34 default - INFO Reticulating Splines
* 11:39:34 default - SUCCESS Watchdog server running
* 11:39:34 default - WARNING Getting earcn list for the first time, this might take a while
* 11:39:38 default - NOTICE Using earfcn list
* 11:39:38 default - INFO EARFCNS:
* 11:39:38 default - INFO Running srsUE
* 11:39:38 default - SUCCESS srsUE started with pid 4256
Exception in thread Thread-3:
Traceback (most recent call last):
File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/usr/lib/python3.6/threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "./crocodilehunter.py", line 154, in monitor_srslte
line = nbsr.readline(int(self.config["general"]["crash_timeout"]))
ValueError: invalid literal for int() with base 10: '30 ;number of seconds until we assume process has crashed. On a raspberry pi this needs to be more like 120'
yea the process is crashing but we don't know why, if you run cell_measurement on its own what is the output?
This is the output:
sudo ./cell_measurement -z 41094
- Scanning 1 EARFCNs
Opening RF device...
Then it just sits there.
So couple things, that exception trace back thing - it’s not actually crashing. It does it on my end and appears to be doing nothing but in fact it’s actually working and will find cells and move on. Each time it goes to look for a cell it’ll pop back up that exception thread 3 thing or more as you can sorta see in the background of the video I posted.
As for running cell measurement on its own you need to run it something like this ./cell_measurement -z 900
Or whatever earfcn list you have.. but as I mentioned there’s no way to specify soapy and so I believe it sticks to uhd only which hangs the hackrf. You can change devices args but not the device name. So I think you’ll find that crocodile hunter will work for you if you had a bladerf or usrp. I’m sitting here now using usrp and seeing that same “exception in thread” rubbish you show above. No impact on it running though.
I also just went ahead and added crocodile hunter to the ISO as that was quicker than making another one. I’ll upload it tonight and hopefully that’ll help some people... but I to would love this soapy + LimeSDR. or whatever. I think the examples need more added though. Hope I’m wrong.
I just edited the cmake file and disabled uhd and bladerf and only enabled soapy. I’ll see what happens, maybe that’ll let us know if those examples are made to run anything but uhd.
I'm fairly certain it is using SoapySDR. I adjusted the CMakeList.txt to use only SoapySDR and turned off the UHD and USRP. I also ran the hackrf_info and the device is listed as busy while the cell_measure is running. I'm just not getting any output. What would I get if it found something with cell_measurement?
I did a cell search. An suggestion on the band? I was thinking 700mhz? I dont know if I need to put this in hz or khz
./cell_search -v -s 41094 -e 42000 -b 700
Opening RF device...
Soapy has found device #0: device=HackRF One, driver=hackrf, label=HackRF One #0 , part_id=a000cb3c0055434e, serial=000000000000000, version=2018.01.1,
[INFO] Opening HackRF One #0 ...
Set Rx bandwidth to 2.50 MHz
Set Tx bandwidth to 1.75 MHz
Setting up RX stream
Setting up TX stream
Available device sensors:
Available sensors for RX channel 0:
State of gain elements for Rx channel 0 (AGC not supported):
- LNA: 16.00 dB
- AMP: 0.00 dB
- VGA: 16.00 dB
State of gain elements for Tx channel 0 (AGC not supported):
- LNA: 0.00 dB
- AMP: 0.00 dB
- VGA: 0.00 dB
Rx antenna set to TX/RX
Tx antenna set to TX/RX
Set master clock rate to 0.00 MHz
Error: Invalid band 700
Error getting EARFCN list
Okay this is looking good at least in my test with an ettus. I deleted the build directory for srslte. I then edited the CMakeLists.txt and put OFF next to uhd and bladerf and on next to soapy.
mkdir build cmake .. make
Now when I run the cell measurement example it tells me it’s using Soapy and not uhd!! Now the only other issue may be that I have soapy audio installed and it’s listed as the device 0 and my ettus is device 2. So with you running DragonOS do this
SoapySDRUtil —find
If it’s listing anything other than your hackrf then remove it.
Sudo apt-get remove soapysdr0.7-module-audio.
Nice! We both did the same thing.
Bingo I can search with HackRF :)
./cell_search -v -s 5010 -e 5035 -b 12
Opening RF device...
Soapy has found device #0: device=HackRF One, driver=hackrf, label=HackRF One #0 , part_id=a000cb3c0055434e, serial=0000000000000000, version=2018.01.1,
[INFO] Opening HackRF One #0
...
Set Rx bandwidth to 2.50 MHz
Set Tx bandwidth to 1.75 MHz
Setting up RX stream
Setting up TX stream
Available device sensors:
Available sensors for RX channel 0:
State of gain elements for Rx channel 0 (AGC not supported):
- LNA: 16.00 dB
- AMP: 0.00 dB
- VGA: 16.00 dB
State of gain elements for Tx channel 0 (AGC not supported):
- LNA: 0.00 dB
- AMP: 0.00 dB
- VGA: 0.00 dB
Rx antenna set to TX/RX
Tx antenna set to TX/RX
Set master clock rate to 0.00 MHz
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
Tuned Rx to 729.00 MHz
[INFO]: Set rf_freq to 729.000 MHz
[ 0/25]: EARFCN 5010 Freq. 729.00 MHz looking for PSS.
[INFO]: Setting sampling frequency 1.92 MHz for PSS search
Set Rx bandwidth to 2.50 MHz
[INFO]: Starting receiver...
[INFO]: CP-CFO: estimated=0.001197, mean=0.001197
[INFO]: PSS: id=0, peak_pos=1097, peak_value=1.006247
[INFO]: SYNC FIND: sf_idx=0, ret=0, next_state=0
Now go back and run crocodile and just let it sit and run. This is awesome. Knowing it can do cell search is great, now I can remove the old cell scanner I was using for hackrf and save space. Just wish there was a way to pass device type in the examples. It’s like you have to force it to soapy and only have soapy seeing one device or at least the device you want to use at the top of the list.
So I get nothing now with crocodile forcing use of just soapy and the ettus. It just sits there after that value error line and if I run cell measurement on its own it starts with soapy, finds the ettus and eventually says error searching cell. If I rebuild and run with uhd it appears to run fine.
Ok, so I let it the crocodilehunter run for almost 45 minutes and I am not getting anything.
I think it’s something with soapy and cell measurement because this combo with my ettus fails when running on its own or via crocodile. Works fine when not using soapy. I’ll grab a hackrf and some other hardware and continue testing. Seems encouraging that you got cell search to work.
I would love to have an ettus. Unfortunately, all I have at the moment is a hackrf and a small stack of rtlsdrs. I'm ready to test if something changes.
What happens if you run cell search or measurement with the rtlsdr on a band/freq within its range?
It certainly finds the device and starts running then gets hung up.
./cell_search -v -s 6150 -e 6449 -b 20
Opening RF device...
Found Fitipower FC0013 tuner
Soapy has found device #0: available=Yes, driver=rtlsdr, label=Generic RTL2832U OEM :: 00000013, manufacturer=Realtek, product=RTL2838UHIDIR, rtl=0, serial=00000013, tuner=Fitipower FC0013,
Found Fitipower FC0013 tuner
Set Rx bandwidth to 0.00 MHz
Set Tx bandwidth to 0.00 MHz
Setting up RX stream
[INFO] Using format CF32.
Available device sensors:
Available sensors for RX channel 0:
State of gain elements for Rx channel 0 (AGC supported):
- TUNER: 0.00 dB
State of gain elements for Tx channel 0 (AGC supported):
- TUNER: 0.00 dB
Rx antenna set to RX
Tx antenna set to RX
Receiving async metadata not supported by device. Exiting thread.
Set master clock rate to 0.00 MHz
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
***** plan dft 1d
Tuned Rx to 791.00 MHz
[INFO]: Set rf_freq to 791.000 MHz
[ 0/299]: EARFCN 6150 Freq. 791.00 MHz looking for PSS.
[INFO]: Setting sampling frequency 1.92 MHz for PSS search
Set Rx bandwidth to 0.00 MHz
[INFO]: Starting receiver...
I see this error Receiving async metadata not supported by device. Exiting thread.
I wonder if this is indicative of the hackrf just not being supported by srsLTE.
I'm on vacation this week but I will test the LimeSDR when I get back next week
I am able to get full scans with the latest srsLTE from the official repository. The version from this repository is not iterating through the EARFCNs like it does in the other for cell search.
@phantomdennis Someone else pointed out that in the config.ini file to remove the comments so it'd look like this,
crash_timeout = 30 run_us_centeric_heuristics = false
Then run and you should find that all those errors will be gone and you'll be able to see what's going on.
@alphafox02 Good idea. I was able to run this again with those commented out and it looks like the srsUE cell_measurement is being called.
Run with a known good EARFCN tested with SDRSharp as having a reasonably good signal strength. I still get an error. I found that the SoapySDR driver fails when the srsUE fails. I have to disconnect the hackrf and reconnect because hackrf_info says the device is busy even after the process is killed. I'm getting the feeling that this not likely going to work with hackrf right this moment. I might just have to see if I can get a limeSDR mini after someone tests to see if it works.
* 09:13:51 default - INFO starting crocodile hunter project: default
* 09:13:51 default - INFO Starting WebUI
* 09:13:51 default - INFO * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
* 09:13:51 default - INFO Checking for config file
* 09:13:51 default - INFO Checking for SDR
* 09:13:51 default - INFO Skipping GPS test
* 09:13:51 default - INFO Compiling srsUE
* 09:13:55 default - INFO SrsUE built succesfully
* 09:13:55 default - INFO Reticulating Splines
* 09:13:55 default - SUCCESS Watchdog server running
* 09:13:55 default - NOTICE Using earfcn list 8763
* 09:13:55 default - INFO EARFCNS: 8763
* 09:13:55 default - INFO Running srsUE
* 09:13:55 default - SUCCESS srsUE started with pid 21530
* 09:14:27 default - WARNING srsUE has exited unexpectedly
* 09:14:27 default - WARNING It's dying words were: ***** plan dft 1d
* 09:14:27 default - NOTICE Using earfcn list 8763
* 09:14:27 default - INFO EARFCNS: 8763
* 09:14:27 default - INFO Running srsUE
* 09:14:27 default - SUCCESS srsUE started with pid 21546
* 09:14:40 default - CRITICAL You pressed Ctrl+C!
* 09:14:40 default - ERROR Exiting...
A look at the srslte.backtrace.crash below.
--- command='./srsLTE/build/lib/examples/cell_measurement -z 8763' version=18.12.0 signal=13 date='20/08/2020 09:13:43'$
./srsLTE/build/lib/examples/cell_measurement(+0x58128a) [0x55c14971128a]
/lib/x86_64-linux-gnu/libc.so.6(+0x3efd0) [0x7f54b3583fd0]
/lib/x86_64-linux-gnu/libc.so.6(__write+0x47) [0x7f54b3655297]
/lib/x86_64-linux-gnu/libc.so.6(_IO_file_write+0x2d) [0x7f54b35d022d]
/lib/x86_64-linux-gnu/libc.so.6(_IO_file_xsputn+0x1ff) [0x7f54b35d0b9f]
/lib/x86_64-linux-gnu/libc.so.6(+0x5e787) [0x7f54b35a3787]
/lib/x86_64-linux-gnu/libc.so.6(_IO_vfprintf+0x396) [0x7f54b35a07b6]
/lib/x86_64-linux-gnu/libc.so.6(__fprintf_chk+0x106) [0x7f54b3677676]
/usr/lib/x86_64-linux-gnu/libSoapySDR.so.0.7(SoapySDR_vlogf+0x65) [0x7f54b33352a5]
/usr/lib/x86_64-linux-gnu/SoapySDR/modules0.7/libHackRFSupport.so(+0xadc4) [0x7f54b2ed7dc4]
/usr/lib/x86_64-linux-gnu/SoapySDR/modules0.7/libHackRFSupport.so(_ZN11SoapyHackRFC2ERKSt3mapINSt7__cxx1112basi$
/usr/lib/x86_64-linux-gnu/SoapySDR/modules0.7/libHackRFSupport.so(+0x7901) [0x7f54b2ed4901]
/usr/lib/x86_64-linux-gnu/libSoapySDR.so.0.7(_ZNSt17_Function_handlerIFSt10unique_ptrINSt13__future_base12_Resu$
/usr/lib/x86_64-linux-gnu/libSoapySDR.so.0.7(+0x22379) [0x7f54b330b379]
/lib/x86_64-linux-gnu/libpthread.so.0(+0xf827) [0x7f54b406c827]
/usr/lib/x86_64-linux-gnu/libSoapySDR.so.0.7(_ZNSt13__future_base15_Deferred_stateINSt6thread8_InvokerISt5tuple$
/usr/lib/x86_64-linux-gnu/libSoapySDR.so.0.7(+0x22ddf) [0x7f54b330bddf]
/usr/lib/x86_64-linux-gnu/libSoapySDR.so.0.7(_ZN8SoapySDR6Device4makeERKSt3mapINSt7__cxx1112basic_stringIcSt11c$
/usr/lib/x86_64-linux-gnu/libSoapySDR.so.0.7(SoapySDRDevice_make+0x38d) [0x7f54b3334f6d]
/home/mrclean/crocodilehunter/src/srsLTE/build/lib/src/phy/rf/libsrslte_rf.so(rf_soapy_open_multi+0x18c) [0x7f5$
/home/mrclean/crocodilehunter/src/srsLTE/build/lib/src/phy/rf/libsrslte_rf.so(srslte_rf_open_devname+0x61) [0x7$
./srsLTE/build/lib/examples/cell_measurement(main+0x118) [0x55c1492c2c98]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7f54b3566b97]
./srsLTE/build/lib/examples/cell_measurement(_start+0x2a) [0x55c1492c48da]
I’ll have a lime tomorrow or Monday. Also if you look at this link
https://github.com/EFForg/crocodilehunter/issues/84
It shows how we can build work 20.04. Which I’m testing now and hoping to just include in m new DragonOS project.
LimeSDR mini in hand. It looks promising as it starts and runs with soapy but I’m getting some error about insufficient rx gain etc.. I think I need to get the device args right and manually place them in the crocodile file after I figure out what’s right running the cell measurement tool on its own. I’ll video it all tonight and see if anyone has advice, but again it looks promising at least with my quick check on 20.04 with latest LimeSuite from the PPa.
There’s still checking it in 18.04 and with different s versions of soapy etc etc.. hoping it’s just the device args though that’ll make it work regardless of other variables.
15:00 minutes in I start to mess with the LimeSDR and crocodile hunter. I think it’s a matter of correct device args being passed and if so maybe the crocodile hunter will need to have a way to pass them across to cell measurement, unless you just hard code them in the script.
Open to any suggestions anyone may have on what I could do differently to get it working.
I noticed in your video your clock reference for the LimeSDR is at 40 MHz. In the srsLTE documentation it mentions that devices need to run a clock of 30.72 MHz. You may need to set the clock reference to 30.72 MHz. In the srsLTE issue 437, the user was able to get the clock reference to 30.72 MHz.
[INFO] Reference clock 30.72 MHz
[INFO] Device name: LimeSDR-USB
[INFO] Reference: 30.72 MHz
I’ve found a way to change the clock reference in the lime suite GUI but I think there’s a difference between the normal LimeSDR and the mini.
https://discourse.myriadrf.org/t/limesdr-on-srslte-unable-to-find-network-on-lte-device/5182/2
I’ve found a way to change the clock reference in the lime suite GUI but I think there’s a difference between the normal LimeSDR and the mini.
https://discourse.myriadrf.org/t/limesdr-on-srslte-unable-to-find-network-on-lte-device/5182/2
Unfortunately any changes applied to the GUI are relevant while the board is connected to it. Any configs in the GUI will go away as soon as you disconnect the board from it. I believe you can still save and restore the configs through the GUI but nothing gets stored to the chip. For LimeSDR mini to support an external clock, you need to first do an board modification (move a 0ohm resistance).
Edit: I can see that the Lime API also supports https://docs.myriadrf.org/LMS_API/group___f_n___l_o_w___l_v_l.html#gaf654ad677321956d6d782a9003d939c4 an API call to set the frequency of the clock, but haven't tested it.
Not sure if this would help any, but I’ve tried this program with the LimeSDR mini and it seems to work, https://github.com/falkenber9/falcon
“ Note: FALCON requires a patched version of srsLTE 18.12 that is automatically downloaded and included as subproject during the build process.”
I got crocodilehunter working on LimeSDR mini (ubuntu 18.04). I found 3 issues:
1) When crocodilehunter first loads I get the following error
ValueError: invalid literal for int() with base 10: '30 ;number of seconds until we assume process has crashed. On a raspberry pi this needs to be more like 120'.
I don't see any impact so far.
2) ValueError: Not a boolean: false ;check if towers are operating with the MCCs and MNCs below, they vary by country. If not sure leave it to false
This error keeps popping when finding towers. I don't see any impact so far.
3) (High Impact): I've setup my config with 5 earfcns values. cell_measurement sub-process memory keeps going up non-stop. In just two minutes it's ~ 7GiB (res) memory. I keep killing it before it maxes out my laptop.
Strangely, If I try to run cell_measurement seperately, it will run for a while, locate some CELLs and then crash.
$ cat ./srsLTE.backtrace.crash
--- command='./srsLTE/build/lib/examples/cell_measurement -z ***' version=18.12.0 signal=6 date='12/09/2020 22:17:12' ---
./srsLTE/build/lib/examples/cell_measurement(+0x57df1a) [0x55f8059d6f1a]
/lib/x86_64-linux-gnu/libc.so.6(+0x3efd0) [0x7fe4884a1fd0]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0xc7) [0x7fe4884a1f47]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x141) [0x7fe4884a38b1]
/lib/x86_64-linux-gnu/libc.so.6(+0x89907) [0x7fe4884ec907]
/lib/x86_64-linux-gnu/libc.so.6(+0x9097a) [0x7fe4884f397a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x6b4) [0x7fe4884fb074]
/lib/x86_64-linux-gnu/libusb-1.0.so.0(+0x903d) [0x7fe4878e703d]
/lib/x86_64-linux-gnu/libusb-1.0.so.0(libusb_handle_events_timeout_completed+0xf0) [0x7fe4878e8130]
/lib/x86_64-linux-gnu/libusb-1.0.so.0(libusb_handle_events_completed+0x30) [0x7fe4878e8280]
/lib/x86_64-linux-gnu/libusb-1.0.so.0(+0xab99) [0x7fe4878e8b99]
/lib/x86_64-linux-gnu/libusb-1.0.so.0(+0xac9d) [0x7fe4878e8c9d]
/lib/x86_64-linux-gnu/libusb-1.0.so.0(libusb_bulk_transfer+0xf) [0x7fe4878e903f]
/usr/local/lib/libLimeSuite.so.20.07-1(+0x9046f) [0x7fe487b8646f]
/usr/local/lib/libLimeSuite.so.20.07-1(_ZN4lime14LMS64CProtocol14TransferPacketERNS0_13GenericPacketE+0x167) [0x7fe487b49cd7]
/usr/local/lib/libLimeSuite.so.20.07-1(_ZN4lime14LMS64CProtocol15ReadLMS7002MSPIEPKjPjmj+0x2c8) [0x7fe487b45588]
/usr/local/lib/libLimeSuite.so.20.07-1(_ZN4lime8LMS7002M14SPI_read_batchEPKtPtt+0x1eb) [0x7fe487b30c7b]
/usr/local/lib/libLimeSuite.so.20.07-1(_ZN4lime8LMS7002M8SPI_readEtbPi+0xcc) [0x7fe487b30fec]
/usr/local/lib/libLimeSuite.so.20.07-1(_ZN4lime8LMS7002M19Modify_SPI_Reg_bitsEthhtb+0x2d) [0x7fe487b31e2d]
/usr/local/lib/libLimeSuite.so.20.07-1(_ZN4lime8LMS7002M11EnableSXTDDEb+0x1e) [0x7fe487b333be]
/usr/local/lib/libLimeSuite.so.20.07-1(+0x74dd5) [0x7fe487b6add5]
/usr/local/lib/SoapySDR/modules0.7/libLMS7Support.so(+0xbd68) [0x7fe487dd7d68]
/usr/local/lib/libSoapySDR.so.0.7(SoapySDRDevice_setFrequency+0x420) [0x7fe488250140]
/home/alex/test/crocodilehunter/src/srsLTE/build/lib/src/phy/rf/libsrslte_rf.so(rf_soapy_set_rx_freq+0x16) [0x7fe4897c3356]
./srsLTE/build/lib/examples/cell_measurement(main+0x3d9) [0x55f80558bf69]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7fe488484b97]
./srsLTE/build/lib/examples/cell_measurement(_start+0x2a) [0x55f80558d8ca]
--- command='./srsLTE/build/lib/examples/cell_measurement -z ***' version=18.12.0 signal=6 date='12/09/2020 22:23:07' ---
./srsLTE/build/lib/examples/cell_measurement(+0x57df1a) [0x55a4bdc0bf1a]
/lib/x86_64-linux-gnu/libc.so.6(+0x3efd0) [0x7fa1a6894fd0]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0xc7) [0x7fa1a6894f47]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x141) [0x7fa1a68968b1]
/lib/x86_64-linux-gnu/libc.so.6(+0x89907) [0x7fa1a68df907]
/lib/x86_64-linux-gnu/libc.so.6(+0x9097a) [0x7fa1a68e697a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x6b4) [0x7fa1a68ee074]
/lib/x86_64-linux-gnu/libusb-1.0.so.0(+0x903d) [0x7fa1a5cda03d]
/lib/x86_64-linux-gnu/libusb-1.0.so.0(libusb_handle_events_timeout_completed+0xf0) [0x7fa1a5cdb130]
/lib/x86_64-linux-gnu/libusb-1.0.so.0(libusb_handle_events_completed+0x30) [0x7fa1a5cdb280]
/lib/x86_64-linux-gnu/libusb-1.0.so.0(+0xab99) [0x7fa1a5cdbb99]
/lib/x86_64-linux-gnu/libusb-1.0.so.0(+0xac9d) [0x7fa1a5cdbc9d]
/lib/x86_64-linux-gnu/libusb-1.0.so.0(libusb_bulk_transfer+0xf) [0x7fa1a5cdc03f]
/usr/local/lib/libLimeSuite.so.20.07-1(+0x9046f) [0x7fa1a5f7946f]
/usr/local/lib/libLimeSuite.so.20.07-1(_ZN4lime14LMS64CProtocol14TransferPacketERNS0_13GenericPacketE+0x167) [0x7fa1a5f3ccd7]
/usr/local/lib/libLimeSuite.so.20.07-1(_ZN4lime14LMS64CProtocol15ReadLMS7002MSPIEPKjPjmj+0x2c8) [0x7fa1a5f38588]
/usr/local/lib/libLimeSuite.so.20.07-1(_ZN4lime8LMS7002M14SPI_read_batchEPKtPtt+0x1eb) [0x7fa1a5f23c7b]
/usr/local/lib/libLimeSuite.so.20.07-1(_ZN4lime8LMS7002M8SPI_readEtbPi+0xcc) [0x7fa1a5f23fec]
/usr/local/lib/libLimeSuite.so.20.07-1(_ZN4lime8LMS7002M19Modify_SPI_Reg_bitsEthhtb+0x2d) [0x7fa1a5f24e2d]
/usr/local/lib/libLimeSuite.so.20.07-1(_ZN4lime8LMS7002M11EnableSXTDDEb+0x1e) [0x7fa1a5f263be]
/usr/local/lib/libLimeSuite.so.20.07-1(+0x74dd5) [0x7fa1a5f5ddd5]
/usr/local/lib/SoapySDR/modules0.7/libLMS7Support.so(+0xbd68) [0x7fa1a61cad68]
/usr/local/lib/libSoapySDR.so.0.7(SoapySDRDevice_setFrequency+0x420) [0x7fa1a6643140]
/home/alex/test/crocodilehunter/src/srsLTE/build/lib/src/phy/rf/libsrslte_rf.so(rf_soapy_set_rx_freq+0x16) [0x7fa1a7bb6356]
./srsLTE/build/lib/examples/cell_measurement(main+0x3d9) [0x55a4bd7c0f69]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7fa1a6877b97]
./srsLTE/build/lib/examples/cell_measurement(_start+0x2a) [0x55a4bd7c28ca]
Update: For the first and second issues, I just fixed the config. The python code doesn't seem to support the default comments in the config.ini file. Unfortunately the memory leak still persists.
I ended up trying the mini again and found that it located one cell when I let it run using uhd soapy vs forcing it to just the straight normal soapy. I would always get an error mx code 4 and something about the tx Calibration which is mentioned a lot on forums. Considering you found cells and I found one I have some hope it’ll be usable with some more work.
Test to see if crocodile hunter can run on a cheaper SDR: