OP25 op25 boatbod with gnuradio-3.10

DC31

Member
Feed Provider
Joined
Feb 19, 2011
Messages
1,618
Location
Massachusetts
i have had the boatbod OP25 running very well for months on my Raspberry Pi4 using the following command line to start it:
./rx.py --nocrypt --args "rtl" --gains 'lna:30' -S 960000 -l "http:0.0.0.0:8088" -X -q 0 -d 300 -v 1 -2 -V -w -U -T trunk.tsv 2> stderr.2 &
chromium-browser --no-startup-window --window-size=760,620 --app="http://0.0.0.0:8088”

Suddenly today it isn’t running and I get the following when trying to start it. Any ideas where to start my troubleshooting?

[4311:4311:0618/194211.896147:ERROR:component_loader.cc(186)] Failed to parse extension manifest.
[4311:4415:0618/194212.481960:ERROR:eek:bject_proxy.cc(622)] Failed to call method: org.freedesktop.DBus.Properties.Get: object_path= /org/freedesktop/UPower: org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.UPower was not provided by any .service files
[4311:4415:0618/194212.483087:ERROR:eek:bject_proxy.cc(622)] Failed to call method: org.freedesktop.UPower.GetDisplayDevice: object_path= /org/freedesktop/UPower: org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.UPower was not provided by any .service files
[4311:4415:0618/194212.484075:ERROR:eek:bject_proxy.cc(622)] Failed to call method: org.freedesktop.UPower.EnumerateDevices: object_path= /org/freedesktop/UPower: org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.UPower was not provided by any .service files
Fontconfig error: Cannot load default config file: No such file: (null)
[4366:4366:0618/194212.866070:ERROR:gpu_init.cc(441)] Passthrough is not supported, GL is egl
[4366:4366:0618/194213.600965:ERROR:gl_surface_presentation_helper.cc(260)] GetVSyncParametersIfAvailable() failed for 1 times!
[4366:4366:0618/194216.823566:ERROR:gl_surface_presentation_helper.cc(260)] GetVSyncParametersIfAvailable() failed for 2 times!
[4366:4366:0618/194219.050398:ERROR:gl_surface_presentation_helper.cc(260)] GetVSyncParametersIfAvailable() failed for 3 times!


Thank you
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,531
Location
Talbot Co, MD
None of those errors have any relationship with op25 or your RTL device, but they do appear to be affecting linux drivers (DBus).
 

W3VVV

Member
Joined
May 16, 2004
Messages
17
Location
Olney, MD
An version of boatbod op25 supporting gnuradio-3.10 (ubuntu 22.04) is now available for alpha testing. Presently the code is only available from the "gr310" branch of my github repo and the install.sh script is somewhat minimal in it's error detection. Functionality is identical to the current gnuradio-3.8 version.

Code:
git clone https://github.com/boatbod/op25
cd op25
git checkout gr310
./install.sh

I have not testing this on any os other than ubuntu-22.04 using multi_rx.py. Bugs are inevitably still lurking in there!
Just want to share that I successfully used these instructions to run OP25 with 6 feeds on an Asus Chromebox CN60 with 4 GB of RAM running Ubuntu 22.04.3 LTS. The Chromebox was modified to support Linux by installing the MrChromebox.tech BIOS. Also upgraded the 16 GB SSD to a 256 GB SSD, although a 128 GB SSD would have been more than adequate.

A Chromebox has only 4 USB ports so I used a powered USB hub to enable it to support 6 RTL-SDRs.

If upgrading the SSD, be sure to install the MrChromebox BIOS before upgrading the SSD so that you can get the Chromebox into the correct mode to replace ChromeOS with Ubuntu.

I was previously running my 6 feeds on a Pi4b but I prefer the Chromebox because the it runs cooler and seems faster than the Pi4b.

The CN60 and CN62 Chromebox models no longer receive software upgrades from Google so they are often available cheap or free from schools and individuals who are disposing of them. Google considers these models to be "expired" but they can be given a new life by installing Linux.

Some of the smaller Linux distributions will fit on 12 GB or less, especially if the optional features are not installed, so a Chromebox with the standard 16 GB SSD can also be used if you are trying to keep costs to absolute minimum. Another option is to use an external USB drive, although booting and program startup will be slower.

 
Last edited:

W3VVV

Member
Joined
May 16, 2004
Messages
17
Location
Olney, MD
Just want to share that I successfully used these instructions to run OP25 with 6 feeds on an Asus Chromebox CN60 with 4 GB of RAM running Ubuntu 22.04.3 LTS. The Chromebox was modified to support Linux by installing the MrChromebox.tech BIOS. Also upgraded the 16 GB SSD to a 256 GB SSD, although a 128 GB SSD would have been more than adequate.

A Chromebox has only 4 USB ports so I used a powered USB hub to enable it to support 6 RTL-SDRs.

If upgrading the SSD, be sure to install the MrChromebox BIOS before upgrading the SSD so that you can get the Chromebox into the correct mode to replace ChromeOS with Ubuntu.

I was previously running my 6 feeds on a Pi4b but I prefer the Chromebox because the it runs cooler and seems faster than the Pi4b.

The CN60 and CN62 Chromebox models no longer receive software upgrades from Google so they are often available cheap or free from schools and individuals who are disposing of them. Google considers these models to be "expired" but they can be given a new life by installing Linux.

Some of the smaller Linux distributions will fit on 12 GB or less, especially if the optional features are not installed, so a Chromebox with the standard 16 GB SSD can also be used if you are trying to keep costs to absolute minimum. Another option is to use an external USB drive, although booting and program startup will be slower.


Also, to run 6 RTL-SDRs, I had to increase the number of USB buffers from its default of 16. I went with 256, but could have probably gotten away with something smaller. Google <usbfs_memory_mb> if you need help with this.
 

HankFrank

Member
Joined
Nov 6, 2009
Messages
128
Location
RVA
For anyone that likes a challenge, I can confirm successfully building and running op25 boatbod on both Arch and Fedora 37. Both require manual installation of dependency packages and op25 build (forget the install.sh script) but they do work if you get everything just so! Red Hat Enterprise Linux (RHEL 9) was a bust because there are just too many support packages not available. My guess is that you could build everything from sources, but seems like a lot of extra work for little benefit.
Hey boatbod sorry for the late reply to this. I was working on building op25 on Fedora 39 but ran into a roadbump with libitpp. Seems to no longer be packaged in the distro. Did you compile it from source?


Thanks!
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,531
Location
Talbot Co, MD
Hey boatbod sorry for the late reply to this. I was working on building op25 on Fedora 39 but ran into a roadbump with libitpp. Seems to no longer be packaged in the distro. Did you compile it from source?


Thanks!
Sorry, it's been a while since I tested op25 with Fedora and that was with Fedora 37. I do recall something about libitpp but not what I had to do to make it work. Building from source should be ok.
 

HankFrank

Member
Joined
Nov 6, 2009
Messages
128
Location
RVA
Thanks, yes it worked but there's plenty of hurdles to jump through. It seems to be working OK but I have an issue where I sometimes lose audio if the screen locks, or I open and close the Gnome sounds settings. Using pulse seems to help.

In case anyone is interested in Fedora 39, here are all the OS dependencies. You should be able to use dnf to install these:

gnuradio
git
cmake
make
gcc
g++
uhd-devel
castxml
rtl-sdr
rtl-sdr-devel
airspyone_host
airspy_one-devel
gr-osmosdr
boost-devel
cppunit-devel
gnuradio-devel
spdlog-devel
gmp-devel
blas-devel
lapack-devel
fftw-devel
pybind11-devel
libpcap-devel
python-waitress

I also needed to use pip to install pygccxml


Compile latest itpp from here:


ITPP has soft dependencies on blas, fftw, and lapack, which should have been installed above.

ITPP make will install header files to /usr/lib64/include/itpp/


OP25 Build:

Use the gnuradio 3.10 branch (git checkout gr310)


When you go to build op25 you need to point cmake to the itpp includes:

cmake ../ -DITPP_LIBRARY=/usr/lib64/include/itpp/


After building and installing, you will also need to link all the itpp libraries to /usr/lib64, they wound up in /usr/lib64/lib/.

(From inside /usr/lib64/ directory: )

sudo ln -s lib/libitpp.so libitpp.so
sudo ln -s lib/libitpp.so.8 libitpp.so.8
sudo ln -s lib/libitpp.so.8.2.1 libitpp.so.8.2.1


(Maybe if I had RTFM better on ITPP I could have avoided some of the above)

By default, the op25 install will put all the op25 libraries in /usr/local/lib64, so you need to link those, This could be adjusted probably.

(from within /usr/lib64/ directory: )

sudo ln -s /usr/local/lib64/libgnuradio-op25_repeater.so libgnuradio-op25_repeater.so
sudo ln -s /usr/local/lib64/libgnuradio-op25_repeater.so.1.0.0 libgnuradio-op25_repeater.so.1.0.0
sudo ln -s /usr/local/lib64/libgnuradio-op25_repeater.so.1.0.0.0 libgnuradio-op25_repeater.so.1.0.0.0
sudo ln -s /usr/local/lib64/libgnuradio-op25.so libgnuradio-op25.so
sudo ln -s /usr/local/lib64/libgnuradio-op25.so.1.0.0 libgnuradio-op25.so.1.0.0
sudo ln -s /usr/local/lib64/libgnuradio-op25.so.1.0.0.0 libgnuradio-op25.so.1.0.0.0



Don't forget to blacklist the default RTL kernel drivers:


sudo install -m 0644 ./blacklist-rtl.conf /etc/modprobe.d/


I think that was it.
 

newbbb

Newbie
Joined
Jul 23, 2023
Messages
4
@boatbod The install.sh file didn't work fully for me. First it couldn't find log4CPP so I installed the liblog4cpp5-dev package. Then gave this error. Trying a manual build also gives the same error:

[ 1%] Building CXX object op25/gr-op25/lib/CMakeFiles/gnuradio-op25.dir/fsk4_demod_ff_impl.cc.o
/home/folder/op25/op25/gr-op25/lib/fsk4_demod_ff_impl.cc: In static member function ‘static gr:: op25::fsk4_demod_ff::sptr gr:: op25::fsk4_demod_ff::make(gr::msg_queue::sptr, float, float, bool)’:
/home/folder/op25/op25/gr-op25/lib/fsk4_demod_ff_impl.cc:178:9: error: could not convert ‘gnuradio::get_initial_sptr(T*) [with T = gr:: op25::fsk4_demod_ff_impl]()’ from ‘boost::shared_ptr<gr:: op25::fsk4_demod_ff_impl>’ to ‘gr:: op25::fsk4_demod_ff::sptr’ {aka ‘std::shared_ptr<gr:: op25::fsk4_demod_ff>’}
177 | return gnuradio::get_initial_sptr
| ~~~~~~~~~~~~~~~~~~~~~~~~~~
178 | (new fsk4_demod_ff_impl(queue, sample_rate_Hz, symbol_rate_Hz, bfsk));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| boost::shared_ptr<gr:: op25::fsk4_demod_ff_impl>
make[2]: *** [op25/gr-op25/lib/CMakeFiles/gnuradio-op25.dir/build.make:76: op25/gr-op25/lib/CMakeFiles/gnuradio-op25.dir/fsk4_demod_ff_impl.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:290: op25/gr-op25/lib/CMakeFiles/gnuradio-op25.dir/all] Error 2
make: *** [Makefile:146: all] Error 2
 
Last edited:

boatbod

Member
Joined
Mar 3, 2007
Messages
3,531
Location
Talbot Co, MD
Are you sure you are using the correct version of op25 for the version of gnuradio that Fedora is using?
Use of the boost libraries mostly went away with the change from gnuradio-3.8 to gnuradio-3.10. If you are still on the gr38 branch, you might need to move over to gr310 branch.

Beyond that, unfortunately I'm not able to offer much (if any) help with either Fedora or Arch as I just don't have the available time to mess around with them. Debian/Ubuntu is must easier to get working.
 
Last edited:

newbbb

Newbie
Joined
Jul 23, 2023
Messages
4
Are you sure you are using the correct version of op25 for the version of gnuradio that Fedora is using?
Use of the boost libraries mostly went away with the change from gnuradio-3.8 to gnuradio-3.10. If you are still on the gr38 branch, you might need to move over to gr310 branch.

Beyond that, unfortunately I'm not able to offer much (if any) help with either Fedora or Arch as I just don't have the available time to mess around with them. Debian/Ubuntu is must easier to get working.

The thing is I'm definitely using the gr310 branch (I used the master brach first then checked out gr310 but same result) and I'm using Debian. I tried to install an older version of guradio a while back unsuccessfully so maybe it's picking something up there but I honestly don't know what to do to fix it.
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,531
Location
Talbot Co, MD
The thing is I'm definitely using the gr310 branch (I used the master brach first then checked out gr310 but same result) and I'm using Debian. I tried to install an older version of guradio a while back unsuccessfully so maybe it's picking something up there but I honestly don't know what to do to fix it.
In the interests of figuring out exactly what's going on, can you run the following and report back:
Code:
git branch
git pull
git status
Code:
cd ~/op25/op25/gr-op25/include/op25/
grep boost *.h
Code:
apt list --installed | grep gnuradio
 

newbbb

Newbie
Joined
Jul 23, 2023
Messages
4
In the interests of figuring out exactly what's going on, can you run the following and report back:
Code:
git branch
git pull
git status
Code:
cd ~/op25/op25/gr-op25/include/op25/
grep boost *.h
Code:
[/QUOTE]
Hi, I just want to thank you for your help. Your hint that it was an older version definitely helped home into the root cause. The issue was the older gnu radio installation that I had tried to install unsuccessfully on a previous occasion unsuccessfully GNURadio (3.8.5) that I tried to build manually and it had left its files, libraries and settings everywhere that I was unable to remove.

The problem in the installation script started when it was "checking for module 'gnu radio-runtime'" and was finding and using the "3.8.5git" version instead of the 3.10.5 version. The script kept running and finally broke when it came time to build.

Trying to remove all of the older 3.8.5 installation files in my OS broke my gnu radio permanently (even re-installing it didn't help) So, I nuked my Linux and started over with a fresh OS and I was successfully able to install the latest gnu radio and use the install.sh script to install op25 with your gr310 branch checked out. Hope this clarifies things and thank you for reaching out and for the quick response!

Note: As of right now, It has built successfully but not showing up in GNU radio blocks. Currently trying to figure that out.
 
Last edited:

boatbod

Member
Joined
Mar 3, 2007
Messages
3,531
Location
Talbot Co, MD
Hi, I just want to thank you for your help. Your hint that it was an older version definitely helped home into the root cause. The issue was the older gnu radio installation that I had tried to install unsuccessfully on a previous occasion unsuccessfully GNURadio (3.8.5) that I tried to build manually and it had left its files, libraries and settings everywhere that I was unable to remove.

The problem in the installation script started when it was "checking for module 'gnu radio-runtime'" and was finding and using the "3.8.5git" version instead of the 3.10.5 version. The script kept running and finally broke when it came time to build.

Trying to remove all of the older 3.8.5 installation files in my OS broke my gnu radio permanently (even re-installing it didn't help) So, I nuked my Linux and started over with a fresh OS and I was successfully able to install the latest gnu radio and use the install.sh script to install op25 with your gr310 branch checked out. Hope this clarifies things and thank you for reaching out and for the quick response!

Note: As of right now, It has built successfully but not showing up in GNU radio blocks. Currently trying to figure that out.
Glad to hear it's working now!
The installation script is really only designed to work with standard packages installed using the OS's package tools. As you found out, it doesn't have the smarts to deal with locally built versions, nor what to do when there are conflicts. Fortunately, seeing the mismatch errors between 'boost' and 'std' was a small clue that the build environment was mixed between gr-3.8 (uses boost) and gr-3.10 (uses std).
 

newbbb

Newbie
Joined
Jul 23, 2023
Messages
4
Glad to hear it's working now!
The installation script is really only designed to work with standard packages installed using the OS's package tools. As you found out, it doesn't have the smarts to deal with locally built versions, nor what to do when there are conflicts. Fortunately, seeing the mismatch errors between 'boost' and 'std' was a small clue that the build environment was mixed between gr-3.8 (uses boost) and gr-3.10 (uses std).
It works great now and I was successfully able to start it up in terminal :) I haven't found any extensive documentation on its full implementation but is it possible to import your version of op25 into gnu radio companion and use it's op25 decoder block taking the same inputs as the cli version? Similar to the now outdated gr-baz?
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,531
Location
Talbot Co, MD
It works great now and I was successfully able to start it up in terminal :) I haven't found any extensive documentation on its full implementation but is it possible to import your version of op25 into gnu radio companion and use it's op25 decoder block taking the same inputs as the cli version? Similar to the now outdated gr-baz?
No, the app uses the gnuradio framework for it's flowgraph handling and dsp blocks, but once the signal is demodulated into dibits it's all c++ and python for the real work of decoding and call handling.
 
Top