New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
qradiolink does not compile with gnuradio-3.9 #101
Comments
Nope, it won't work, sorry. The fact is gnuradio is undergoing fast changes lately, and Qt is also deprecating some of their API very fast. The code will build right now on Debian Bullseye which is just released, but there's not been any work targeting a newer version of gnuradio. |
Debian Bullseye still has GNU Radio 3.8, but software is starting to require 3.9. The end is in sight. ----Steve |
Which software is starting to require 3.9? AFAIK 3.9 is not yet in Bullseye, so it's not of great urgency to make the changes required for 3.9. What needs consideration is the fact that Debian testing will probably have different requirements for Qt, and since Qt is deprecating their own API relatively fast, there needs to be some sort of synchronization between a dependency on newer GNU radio and newer Qt to ensure Debian testing is well supported. |
I am using Debian Bullseye on my Raspberry Pi. Debian does have GNU Radio 3.9 packages, listed as experimental. Edit /etc/apt/sources.list Install GNU Radio 3.9.2.0 I think it is only experimental because it breaks the packages that are not compatible with 3.9 I may experiment with Conda. |
I'd be careful there with mixing packages from two debian distros. Experimental is not stable, and you risk that some GR dependencies which might b e pulled in by such an install breaking packages from your system if the system is based on stable (Bullseye). The problem I have right now with a port to GR 3.9 is that my development system is Debian stable and to make the changes for the port (which I'm sure are pretty simple to do) I have to spin up VMs targeting that Debian version, which is time consuming. |
What I did to be careful was to build a system with GNU Radio 3.9 on a different boot drive. I want to experiment with Conda I know that I spent many long hours trying to get a new enough version of Qt installed on my Bullseye system so I could try out qradiolink. Since there are operating systems using GR 3.9 and others with GR 3.8, it would be a good idea to support both. |
Absolutely agree with moving forward to GR 3.9. But before that, I'd need to know especially what mixture of Qt and GNU radio are distros providing, so I can set a target. Right now, most installed user base is on Ubuntu 21 and Debian Bullseye. Arch has been mentioned here as well, but I have no insights into their Qt versioning. The other dependencies (except maybe protobuf) have slower API and ABI movement so I don't think we need to be too concerned about them. However by moving all audio and video code towards Qt wrappers means I have to be careful about what Qt is changing. It's a tradeoff between the nice support for a lot of subsystems that Qt provides versus having to rewrite a lot of code when Qt deprecates their own API between versions, which they tend to do more and more frequently. |
If you’re going to do all the work to upgrade, I’d suggest doing so with GNU Radio 3.10 as some of the developers said on Twitter that could be considered a version they provide longer term support for. I’m slowly building a new Pi image that has 20.04 with 3.10 from PPA and osmosdr from source. edit: If you’d like to try the combo, have a look here. Username is Ubuntu password dragon. https://drive.google.com/file/d/1qU7cOZNXMQLcneMnqt7nOlz94Evl4Asx/view?usp=drivesdk |
There’s a gentleman that’s taking time to convert all sorts of Gnuradio modules to 3.10 and higher. I’m going to ask if just the Gnuradio part of qradiolink could be rewritten while leaving everything else Qt related as is, that way maybe it can quickly run on 20.04 w/ GR 3.10 (maybe even 3.9?).. at least that my thoughts. |
Regretably, I won't be able to do any porting anytime soon. I'm currently very busy with a DMR implementation on LimeSDR hardware and other real life engagements. |
No rush, I’m actually keeping qradiolink w/ 3.8 in my main project as it’s working nicely. I never had it on the Pi version, so I’m not as concerned about changing that build to GR 3.10. Look forward to seeing your other projects! |
I've pushed a new branch |
22.04 is still on QT5 and I think will be for it’s lifetime (I think). I’ll give it a try! |
Running on 22.04 w/ GR 3.10.4. Appears maybe it uses only soapy now and not gr-osmsodr? The rtlsdr worked fine but hackrf, although found, failed to start rx. Maybe due to me having the 2022 hackrf libs and firmware? I’ll try it on something else soapy related. Thanks for putting this branch up, so far so good! |
I take back what I said about the hackrf. I didn’t realize the “find” button populated the drop down under device setup. Using the entry provided there and the hackrf and other SDRs I’ve plugged in so far works. |
The latest gr-osmosdr module for SDRplay API 3.x only works for GNU Radio > 3.8 although the readme hints otherwise. The latest HackRF driver requires a firmware update. I hope that doesn't wreck everything! Will this be merged with the master branch eventually, allowing qradiolink to compile with GR 3.7 up? I will try it when I get some time, maybe tonight. |
I was able to get gradiolink to compile and run on a Debian bookworm system with GNU Radio 3.10 on my Raspberry Pi. When selecting my SDRplay device, I clicked Find and I thought it listed the gr-osmosdr devices. |
Great! 3.8 will be supported and will remain the main release until at least Bookworm becomes the stable version. Regarding the ZMQ headers, it should only require libzmq3-dev which is listed as a dependency, but on the other hand my VM was a straight upgrade from Bullseye so maybe it's different on a new Bookworm system. Regarding the bug in the device list dropdown where devices are added again each time you click find, I know about it, and it will be fixed. The code onyl detects devices exposed by SoapySDR and LimeSDR devices. To use an osmosdr device directly, not via Soapy, you have to manually enter the device string just as before, it will not be auto-detected. |
Other applications such as gqrx automatically detect the gnuradio version, possibly at compile time, and will work with anything it supports. When I entered anything in the device string, such as sdrplay=0, it always used the rtl-sdr. I never installed cppzmq-dev in earlier versions and didn’t notice it in the requirements then. That is why I asked if it is a new requirement. Maybe it was getting installed with other packages as a depency? |
Looking back at my notes I should enter driver=sdrplay for device string. |
libzmq5 and libzmq3-dev have been dependencies since 0.8.7, they are necessary for the MMDVM SDR operation mode. They are listed in the readme. However cppzmq-dev seems to be a new headers only deb which provides essentially the same functionality as libzmq3-dev but conflicts with it. This package is new in Bookworm and I don't know if I should replace libzmq3-dev in the README. For now libzmq3-dev will remain as a recommended dependency since it's present also on Bullseye. |
I did a lot of experimentation with device strings and I think I have some useful information. The device strings found by gqrx work when entered into rx_device_args in the cfg file. After running qradiolink, they are added to the pull-down list. With 2 MHz Sample rate, there are occasional dropouts playing WFM. Similar with 4 MHz, frequent dropouts with 8 MHz. CPU load is higher than the soapy device when using the same sample rate, and the soapy device has no dropouts. |
You need to press Save after changing or entering a device string, otherwise the settings won't take effect. |
I do press save. It has no effect unless the item is in the list. It doesn’t save strings that are typed in unless they match items in the list. |
You're absolutely right, that was a bug. I've found it and fixed it. Also scanning devices now won't add more duplicates to the list. Luckily this bug never made it into any release. Thanks for testing it! |
Glad you were able to find it so quickly. I noticed that sometimes a string is displayed in the terminal that can be used as a device string for a built in device. Apparently GNU Radio knows what these devices are. Is there a function to query it? |
GNU Radio can't know anything about the device, gr-osmosdr might know, but only what the application tells it to use. Possibly you might be seeing the application log, the devices logged are the same as in the combo box in the UI. SoapySDR can scan devices, and LimeSDR can also be found by using the LimeSuite scanning code. |
As a side note, SoapySDR is pretty mature and I recommend using Soapy devices when possible, with the exception of MMDVM modes where due to specific features used for TDMA it's necessary to use the native Lime device and not go through Soapy which doesn't support tx_time tags. |
@kantooon can you merge the above fix to the gr_3.10 branch? I was just applying manually now and going to rebuild and try as I was seeing the same happen. Would like to test the hackrf again. |
Done, it's merged now in |
Applied and built. Maybe it’s just me, I can do a separate ticket if needed. The find/drop down sees the hackrf string. When selected, saved, and then rx button pushed I get fatal Count not init Rx device. It appears that it’s trying to use soapy via gr-osmsodr. I can see in terminal it’s showing the gr-osmosdr version and the built in source types. String is soapy=0, device=HackRFOne, driver=hackrf etc etc. I’ll keep messing with it. |
So typing in hackrf=0 and then save now works. However if I do not do that first and instead take a fresh setup and click find the rtl=0 stays rtl=0, if that makes sense. Once changed to hackrf=0 and then saved, I can hit find and hackrf=0 stays. So maybe still a small bug? And for whatever reason, hackrf=0 works with gr-osmsodr where as soapy via gr-osmosdr does not (for me with the hackrf at least). |
Split this to a new ticket please. It doesn't really have anything to do with the gnuradio version and likely affects branch |
It’s user error. I just wiped the .config/qradiolink directory and started fresh. It appears I did not click save prior to pushing Rx. Sorry! So both soapy via gr-osmosdr which is what find finds and hackrf=0 works. |
no worries |
I built the fixed gr_3.10 branch. Changing SDRplay Sample rate with SDR running, it crashed: Apparently I need to be careful with this program. |
Is it even supposed to work?
I'm trying to compile qradiolink-0.8.5-2 on Arch Linux, which uses gnuradio-3.9.
This is what I get:
Gnuradio-3.9 doen not have 'rational_resampler_base.h', but instead 'rational_resampler.h'
Gnuradio-3.8 is nearing EOL, major distributions like Arch and Ubuntu have already upgraded to 3.9, 3.10 is already in development... I'd suggest that you should seriously consider updating qradiolink to be compatible with gnuradio-3.9
The text was updated successfully, but these errors were encountered: