op25 Boatbod VM Workstation 17 Pro with Ubuntu on Win 10 install.sh fails

Carter911

Member
Joined
Aug 17, 2021
Messages
69
Hello Everyone,
I have an RTL-SDR V3 running OP-25 on an RPi, (Summit County, OH), and the setup is working well.
I would like to move the RTL-SDR to a Dell Laptop, Running Win 10, (core i7, running 2.8xxx GHz, 8 GB Ram).
I know NOTHING about Linux / Ubuntu etc. (Steep learning curve... for me, anyway).
I have never run a VM before, so that is also a steep learning curve.

There is a Wiki on RadioRef, simply labeled OP25, (dated July 2022), that I have used as a guide for installing a Ubuntu VM, and then installing OP-25 therewithin.

I think that my VM is up and running correctly.
I have a Ubuntu desktop with a bunch of icons running down the left side of the screen, and I can see files, and open a terminal.

My VM is: VMware Workstation 17 Pro.
This is the free, personal use, version.
(This replaces Workstation Player, per the Broadcom site)

The RR Wiki instructions say:
1. sudo apt-get install git
2. sudo apt install build-essential
3. cd ~
4. git clone GitHub - boatbod/op25: Fork of osmocom OP25 by boatbod
5. cd op25
6. ./install.sh

The first 2 or 3 times I ran the install.sh it locked up, (I gave it a few hours the first time...).

It now runs install.sh, with many lines scrolling past the screen, until it gets to an error:
(Re-typed here, not copy / pasted...)

gmake: *** [Makefile:127: cmTC_3da89/fast] Error 2

CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:5 (project)

.. Configuring incomplete, errors occurred!
make: *** No targerts specified and no makefile found. Stop.
make: *** No rule to make target "install". Stop.

If I can get OP-25 to install, then I think I can replicate my rx.py setup.

Guidance on how best to proceed would be greatly appreciated!
Unfortunately, given my total lack of knowledge about C and Ubuntu and VMs, I really need keystroke - by - keystroke guidance.
Highlevel guidance like: Well just remake the make file... are insufficient for my feeble brain...

Thank you,

Jay
 

dkcorlfla

Member
Premium Subscriber
Joined
Feb 12, 2023
Messages
408
Location
Orlando
You say you know nothing about Linux but you have a RPi running OP25 fine - RPi runs on Linux ;-)

Here are some things to consider: trying to run a second OS in a VM adds a lot of complexity.

If you want to play around with Ubuntu I would recommend doing a full backup of your current Windows 10 and then shrink the HD or even better add a second HD then install Ubuntu as a dual boot system.

The system you have will run Windows 10 or Ubuntu just fine but trying to use Windows 10 as the host and then running Ubuntu in a VM is going to put a big load on the system.

Just so you have something to compare to my Linux host has a 10 core CPU and 32 GB ram. If I run a second Linux OS in a KVM and run a SDR program like SDR++ I get something like about 50% CPU usage though some of that may have to do with tweeks I have not tried yet.
 

dkcorlfla

Member
Premium Subscriber
Joined
Feb 12, 2023
Messages
408
Location
Orlando
A few things that might help, try entering the errors as a search string - can be amazing what will pop up.

Take a look at line 127 in the makefile what does it say?

You should be able to copy text from a terminal window but may have trouble pasting into the host, for now just past it into a text editor on the Ubuntu VM

One thing you will want to learn is the amazing history command, just type history in a terminal window for a numbered list of all the commands that have been run so far. Great for reviewing and I use it all the time to re-run commands just type !number to re-run.
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,108
Location
NE Wisconsin
Hello Everyone,
I have an RTL-SDR V3 running OP-25 on an RPi, (Summit County, OH), and the setup is working well.
I would like to move the RTL-SDR to a Dell Laptop, Running Win 10, (core i7, running 2.8xxx GHz, 8 GB Ram).
I know NOTHING about Linux / Ubuntu etc. (Steep learning curve... for me, anyway).
I have never run a VM before, so that is also a steep learning curve.

There is a Wiki on RadioRef, simply labeled OP25, (dated July 2022), that I have used as a guide for installing a Ubuntu VM, and then installing OP-25 therewithin.

I think that my VM is up and running correctly.
I have a Ubuntu desktop with a bunch of icons running down the left side of the screen, and I can see files, and open a terminal.

My VM is: VMware Workstation 17 Pro.
This is the free, personal use, version.
(This replaces Workstation Player, per the Broadcom site)

The RR Wiki instructions say:
1. sudo apt-get install git
2. sudo apt install build-essential
3. cd ~
4. git clone GitHub - boatbod/op25: Fork of osmocom OP25 by boatbod
5. cd op25
6. ./install.sh

The first 2 or 3 times I ran the install.sh it locked up, (I gave it a few hours the first time...).

It now runs install.sh, with many lines scrolling past the screen, until it gets to an error:
(Re-typed here, not copy / pasted...)

gmake: *** [Makefile:127: cmTC_3da89/fast] Error 2

CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:5 (project)

.. Configuring incomplete, errors occurred!
make: *** No targerts specified and no makefile found. Stop.
make: *** No rule to make target "install". Stop.

Jay,

Open a Linux terminal and submit the commands listed below then respond back with the output results.

(1) apt list | grep gnuradio-dev
(2) cd op25
(3) git branch
 

Carter911

Member
Joined
Aug 17, 2021
Messages
69
Hi dkcorlfla,

I hope you are doing well in Orlando! Its been years since I took my kids to Disney!

TY for the suggestions.

It took a lot of work, (for me, anyways...), to get my original OP-25 up and running on the RPI.
Fortunately, I've not needed to tweak anything there since it was set up several years ago.
Once in a blue moon I re-start it and then click on the internet Icon to restart the web interface.
That's about the extent of my Linux capabilities!

I was hoping to follow the wiki and give op-25 a trial under the VM, as I am sure creating a dual-boot system also has a significant learning curve. Even if it (almost) saturates the processor, as long as it doesn't miss radio traffic I don't care, as it is / was envisioned as a stand-alone system.

I was hoping a simple tweak to the make file would soon have me up and running!

I will, however, keep the dual boot option in mind if I can't resolve the current issue.

TY for the history command pointer, that also is helpful.
I'll add it to the two other commands I know, ls and chmod +x...

One baby step at a time ;)

Jay
 

Carter911

Member
Joined
Aug 17, 2021
Messages
69
Hi Bill,

You may not recall, but a few years ago you, Mr. Norbury, and a few others helped me get my original system up and running, and playing the audio. We also had a chat or two about Motorola HTs, etc.

Anyway, I hope you, also, are doing well!

apt list | grep gnuradio-dev
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
gnuradio-dev/noble 3.10.9.2-1ubuntu2 amd64

cd op25
git branch
* master

Jay
 

dkcorlfla

Member
Premium Subscriber
Joined
Feb 12, 2023
Messages
408
Location
Orlando
Hi dkcorlfla,

I hope you are doing well in Orlando! Its been years since I took my kids to Disney!

TY for the suggestions.

It took a lot of work, (for me, anyways...), to get my original OP-25 up and running on the RPI.
Fortunately, I've not needed to tweak anything there since it was set up several years ago.
Once in a blue moon I re-start it and then click on the internet Icon to restart the web interface.
That's about the extent of my Linux capabilities!

I was hoping to follow the wiki and give op-25 a trial under the VM, as I am sure creating a dual-boot system also has a significant learning curve. Even if it (almost) saturates the processor, as long as it doesn't miss radio traffic I don't care, as it is / was envisioned as a stand-alone system.

I was hoping a simple tweak to the make file would soon have me up and running!

I will, however, keep the dual boot option in mind if I can't resolve the current issue.

TY for the history command pointer, that also is helpful.
I'll add it to the two other commands I know, ls and chmod +x...

One baby step at a time ;)

Jay
I just ran the history command on this computer and it's over 900 lines long - and this computer is new ;-)

here are a few I use often: uptime, how long has it been running.

pwd, print working directory

cd Dow*, wild card to the Downloads directory - saves typing

cd .. go back one directory

htop, nice little terminal system monitor - sudo apt install htop it it's not already installed.

ping -c 4 google.com, ping google or any IP with a count of just 4.
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,108
Location
NE Wisconsin
Jay,

Since the installer script locked up, there's no telling what corruption might exist. I would try nuking the op25 folder then perform a
fresh git clone and attempt to run the installer script again and see what happens.

(From your home folder)

sudo rm -r op25 git clone https://github.com/boatbod/op25.git cd op25 ./install.sh

Bill
 

Carter911

Member
Joined
Aug 17, 2021
Messages
69
Wow, so I re-started the VM, then did the full re-install, and this time it worked!

I'll now set up the associated files and rx.py command and give it a go.

I'll report back later.

Thank you!

Jay
 

Carter911

Member
Joined
Aug 17, 2021
Messages
69
Wow… This was a much bigger challenge than I expected.

Scramming the reactor on a nuclear sub is easier than getting the web interface for OP25 working on (my) VMWare Workstation, Ubuntu, on a 3 GHz Core i7 with 8 GB Ram, Dell laptop running Win 10.

Success:

I have OP25, Boatbod, up and running in TERMINAL MODE, within the virtual machine.


The Win Task Manager shows a CPU usage of 10 - 23%, and a Disk usage of 0 – 10%. (So pretty minimal resources.) This is working well. Occasionally, the Disk Usage goes to 100%, but OP25 keeps playing radio traffic.

I have the OP25 Boatbod web interface mode up and running on an RPi, so I am familiar with what it should look like, and how it should behave.

I can NOT, however, get OP25 Boatbod to run with the web interface within the Ubuntu virtual machine.

Interestingly, I think the web interface is running, and playing audio, UNTIL I load the Firefox web browser. The web interface, (outline only, no data), will appear after entering the http addr, but then the web interface locks up, and the audio stops playing. I never get to the point of seeing any talk groups show up, etc.

Firefox will work if I am not running OP25 and am just surfing the web with it. I suspect that my system just doesn’t have the horse power to run OP25, under the VM, with the web interface. When I try to run the web interface, my Win Task Manager CPU usage goes from 20% up to 50+ % when I start the Firefox browser within the VM. (I have 5 of 8 GB of RAM allocated to the VM.)

I am running the same rx.py …. version, with the same command line, with the exception of adding the -l http… for both the terminal mode and for the web interface version.

Rx.py --args ‘rtl’ --gains ‘LNA:35’ --crypt-behavior 2 -S 1000000 -x 2 – o 25000 -q 0 -d -200 -T trunkJCAll.tsv -D cqpsk -w -U 2>stderr.2

(Add -l http:0.0.0.0:8080 after the -U for the web interface version.)

(No Whitelist for now, just monitoring all traffic.)

(Phase 1 system, Summit County, OH).

I GIVE UP trying to get the web interface up and running on the VM under Windows, on my laptop. It might work well for others, but for now I’ll just stick with the Terminal Mode interface.

I fully acknowledge that I am a total beginner to both Linux and to using VMs. So, there might well be some “simple” tweaks and settings to make the web interface work, but it isn’t worth any more time and frustration. It takes about 10 – 15 minutes to reload a “snapshot” of my current VM every time I have to re-start the system, and coupled with all of my beginner, steep learning curve, mistakes, I’ve spent enough time (and frustration) on this.

Just to be clear: I suspect that the underlying cause for my issues lie with my laptop and the virtual machine, not with OP25 Boatbod!

In Summary:

I have OP25 Boatbod up and running, in Terminal Mode, within a Ubuntu virtual machine, on a Win 10 laptop!

Thank you, again, to Mr. Norbury for your OP25 Boatbod SW, I do use it, and I appreciate it greatly.

Thank you, again, to Mr. Becks, for your help both several years ago, and currently!

Thank you to dkcorlfla for your input, (and no, I haven’t forgotten your dual-boot suggestion, that might run significantly better!)

Jay
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,512
Location
Talbot Co, MD
A couple thoughts:-

Two utilize the new web-based UI you need to be running multi_rx.py rather than rx.py. When you run rx.py, only the older web interface will be available. (Either rx.py or multi_rx.py runs with the curses terminal)

Accessing the terminal on a virtual machine typically requires your VM to be accessible from the host machine's network, which rules out using NAT virtual adapters (the usual default). All my VMs get set up with bridged adapters so that they are accessible from anywhere in my LAN. Secondly, you need to set up op25 so that the web server is listening on the real ip address (or 0.0.0.0) rather than the loopback address (127.0.0.1).
 

Carter911

Member
Joined
Aug 17, 2021
Messages
69
Thank you,

I was working on setting up the old/original web interface, as that is what I have up and running on my RPi setup, and hence is the one I am familiar with.
I do have my VM "bridge" connected, and the VM's Firefox browser sees the WWW just fine.
I do have the rx.py set up as http:0.0.0.0:8080 for when I am attempting to use the (old) web interface.

Thank you,

Jay
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,512
Location
Talbot Co, MD
Thank you,

I was working on setting up the old/original web interface, as that is what I have up and running on my RPi setup, and hence is the one I am familiar with.
I do have my VM "bridge" connected, and the VM's Firefox browser sees the WWW just fine.
I do have the rx.py set up as http:0.0.0.0:8080 for when I am attempting to use the (old) web interface.

Thank you,

Jay
Those settings sound good. Can you ping from the host machine to the VM?
Possibly you may need to open the op25 terminal port on the VM machine's firewall. Depending which os version, that could be ufw, iptables, or something else entirely.
 

Carter911

Member
Joined
Aug 17, 2021
Messages
69
Thank you,

I learned about "bridging" for having the VM gain internet access, but I had not even considered a firewall issue!
I will have to look into that further, but it may be a day or two before I can investigate that.

Thank you,

Jay
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,512
Location
Talbot Co, MD
As I recall, when I upgraded the ubuntu instance on my VPS it silently installed nftables and refused to pass inbound http/https traffic on a custom (non-privileged) port because I hadn't told nftables to allow it. Very frustrating! Subsequently I disabled nft and went back to iptables + ufw.

 

Carter911

Member
Joined
Aug 17, 2021
Messages
69
If I can, I'd like to ask another OP25 question, and put the VM web interface on the back burner for now.

My Win 10 Laptop / VMWare / Ubuntu / OP25 / Boatbod / Terminal Mode is up and running, (rx.py, Phase I system).
My White List has only two TG IDs, and the Terminal Display shows a Delta Frequency of typically < +/- 25 Hz, (much better than my RPi web interface system, where the Delta Freq typically bounces around < +/- 250 Hz.)
So, I think the tuning for the Win 10 system is right on the mark.

The Win 10 system is showing, on the Windows Task Manager, only about 15 % CPU usage, so minimal.
However, the Win 10 system is correctly capturing the desired TG ID, (as shown at the bottom of the Terminal Display, when active), and yet often doesn't play the audio, or plays only a few mSec of unrecognizable noise.

At the same time the RPi system, sitting on the same desktop, captures the audio transmissions loud and clear, as if the individual was sitting in the room with me.

Both systems are using ultra-cheap, 6 inch, telescopic rabbit ear antennas that came with the RTL-SDR "package".
I am fortunate that I have a strong signal.
I am making some adjustments with the antenna position and orientation, as well as the SDR's internal RF gain, but I am not seeing, so far, much change.

And now, finally, the question:
I wondered if the OP25 code internally measures its packet decoding error rates, (and makes that info available)?
I think that the Control Channel's packets are being decoded just fine, (as I see the capture and display of my desired TGs).
I suspect that possibly the error rate on decoding the audio data is higher, and hence it is not getting passed along the processing chain.

The audio transmissions, from a rough glance at the two displays, seem to be distributed across the 20-ish frequency channels that the system uses, (there are often 10 or more simultaneous audio channels active). So I don't think I have a local EMI / interference on any one data channel. (Additionally confirmed by the RPi system working well).

It is challenging to isolate the issue, is Window's using more CPU processing than seen on Task Manager, is the VM bogged down running its virtual machine, is the data being processed down the OP25 signal chain, and then running out of time within the given packet's time, to decode and play the audio? Does OP25 correctly receive and decode the audio packets, and then the VM and Windows botch the final transfer of the audio data to the laptop's audio sub-system? Who knows. Clearly there are incredibly more variables on the Win 10 system than on the RPi system.

At the end of the day, I am likely to write this all off as an interesting learning experience, and then simply stick with the RPi system.

Thank you again for your interest, time, and feedback.
And for letting me ramble and think "out loud"...

Jay
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,512
Location
Talbot Co, MD
Lots to digest there...

1. Make sure your windows machine has USB3.0 set up for the client usb emulation. I've seen op25 have problems in a virtual environment when the USB drivers are set to 2.0. In one case in my own test environment, switching usb versions made the difference between syncing and completely not syncing.

2. If you increase logging to -v 9 (or above) you should see IMBE or AMBE codewords being logged, along with the "errs" and "err_rate". The first number (errs) is the number of bit errors encountered when applying FEC to the frame, and the second number (err_rate) is the average error rate. Low numbers of bit errors are correctable, but higher numbers mean the frame cannot be decoded without bit errors remaining. With a good strong signal, errs should be close to zero.

3. If you are monitoring a phase 1 only system that is a stand-alone site (not simulcast) you may need to switch to the fsk4 demodulator. The cqpsk demodulator is the default because it works with most systems which are either LSM simulcast and/or mixed Phase1/Phase 2. With rx.py you do this by specifying "-D fsk4" on the command line. This is one of those things that you either try and it works better, or try and it flat out doesn't work at all.

4. Just because your frequency is dialed-in on the control channel does not mean you are spot-on correct on a distant voice channel. You might want to look at the various plots to see how they perform when tuned to voice vs control.
 

Carter911

Member
Joined
Aug 17, 2021
Messages
69
Wow, Thank you.
I have some work to do!
I know you have ceased work on the rx.py and have focused on the version that uses JSON files, but...
If you were ever board and needed "a weekend project" you could always add the error rate to the real-time data displays, (terminal mode and web mode). That might augment the info currently provided for tuning the system.
I will definitely look at the USB setup, give the fsk4 demod a try, and take a look at the error file with -v 9.
I never looked at the plots on any frequency other than the Control Channel, (it had never occurred to me to do so..., Duh...(again!)), that is an easy test.

Thank you!

Jay
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,108
Location
NE Wisconsin
Jay,

Looking back at Post #10 I spotted a conflict with your rx.py command line arguments.

Rx.py --args ‘rtl’ --gains ‘LNA:35’ --crypt-behavior 2 -S 1000000 -x 2 – o 25000 -q 0 -d -200 -T trunkJCAll.tsv -D cqpsk -w -U 2>stderr.2

The (-w) directs audio to be sent in the form of UDP packets to the host's loopback (127.0.0.1) network stack while (-U) is used to send
decoded audio to the default Linux sound device. You'll also need to include (-V) Vocoder in your command line.

Example

./rx.py --args "rtl" --gains 'lna:35' --crypt-behavior 2 -S 1000000 -x 2 -q 0 -o 25000 -d -200 -V -U -T trunkJCall.tsv -D cqpsk 2> stderr.2

The use of offsets (-o) is not usually necessary with most RTL devices unless they produced a DC spike at the center of the tuned
spectrum that can degrade the performance of the demodulator. Applying offsets can and usually impact tuning errors too. I sometimes
apply experimental offset values to aid in trimming an SDR that can't otherwise be dialed in with PPM (-q) or Fine Tuning (-d) alone.
For now, leave them in your command line in that you're apparently decoding the control channel without any issues.

The Demodulator Type (-D) cqpsk works well for systems/sites using C4FM (Phase-I Non-Simulcast) modulation and is the only
correct choice for use with simulcast clusters.

I am also willing to work with you offline, if desired, to get your VM and OP25 optimized. Just PM.

Bill
 

Carter911

Member
Joined
Aug 17, 2021
Messages
69
Hi Bill,

It is always good to hear from you.

Thank you for the sharp eyes, I will correct the audio routing right now.

I appreciate the off-line guidance offer, let me tinker a bit more before I take up your time.

Jay
 
Top