This repository is to provide GNU Radio support for the Vienna Wireless Society SDR Project. See the description at Vienna Wireless Society Software Defined Receiver.
My development plan:
- Simulate the VWS SDR functionality with GNU Radio using a FunCube Pro Plus.
- FunCube to audio or ZMQ on Lenovo
- FunCube to audio or ZMQ on rPi
- Build a GNU Radio flowgraph for a SSB receiver using the simulation above.
- SSB_rcv for ZMQ on Lenovo
- SSB_rcv for audio on Lenovo
IMPORTANT NOTES:
- These instructions are written for a Linux OS. Similar commands work for Mac and Windows.
- Use the
clonecommand rather than downloading a Zip file!
- Open a terminal window.
- Change to the home directory.
cd ~/
- If you don't have 'git', enter
sudo apt install git
- Clone the repository:
git clone https://github.com/duggabe/gr-VWS-Project.git
- To use the FunCubePro Plus dongle, you must install gr-funcube using a terminal screen as follows (one line at a time):
cd $HOME
sudo apt install libusb-1.0-0-dev libudev-dev libhidapi-dev
gnuradio-config-info --prefix
git clone https://github.com/dl1ksv/gr-funcube.git
cd $HOME/gr-funcube
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=<prefix from gnuradio-config-info> ../
make
sudo make install
sudo ldconfig
cd /etc/udev/rules.d
sudo cp $HOME/gr-funcube/50-funcube.rules ./
sudo udevadm control --reload-rules
sudo udevadm trigger
Once gr-funcube is built, gnuradio needs to find it so you don't get an error about "failure to import funcube". So, do the following steps.
- In a terminal screen enter
find {your-prefix} -name gnuradio | grep "packages"
find {your-prefix} -name funcube | grep "packages"
- Continue by following ModuleNotFoundError#C._Setting_PYTHONPATH
For Ubuntu 24.04.1 and GNU Radio v3.10.9.2 I added this to my .bash_aliases file:
export PYTHONPATH=/usr/lib/python3/dist-packages:/usr/lib/python3.12/site-packages:$PYTHONPATH
export LD_LIBRARY_PATH=/usr/lib:$LD_LIBRARY_PATH
- On your terminal enter
exit. Then start a new terminal.
VWS_SDR_sim_1 - original testing with GUI, audio or ZMQ out
VWS_SDR_sim_2 - model of VWS SDR - no GUI, remote frequency set, audio out
VWS_SDR_sim_3 - model of VWS SDR - no GUI, remote frequency and gain set, ZMQ out
VWS_SDR_sim_4 - model of VWS SDR - no GUI, remote frequency and gain set, audio out
SSB_rcv_1 - original testing with GUI, ZMQ in
SSB_rcv_2 - original testing with GUI, audio in
SSB_rcv_3 - full GNU Radio SSB receiver with GUI, ZMQ in, Weaver method
SSB_rcv_4 - full GNU Radio SSB receiver with GUI, audio in, Weaver method
SSB_rcv_5 - full GNU Radio SSB receiver with GUI, ZMQ in, filter method
SSB_rcv_6 - full GNU Radio SSB receiver with GUI, audio in, filter method
RTL_SDR_rcv.grc Completed flowgraph from tutorial
RTL_SDR_p1.grc RF front end for SSB receiver
RTL_SDR_p2.grc Baseband tuner for SSB receiver
RTL_SDR_p3.grc Completed SSB receiver
SSB_demo.grc SSB simulation; showing sidebands
VWS_GR_presentation.txt Outline, links, and summary of files
VWS_SSB_presentation.odp Presentation slides
NOTES:
The package uses two separate processes: (a) the VWS_SDR Simulation and (b) a SSB Receiver. These run in two separate terminal windows (or tabs).
- Open a terminal window on the computer where the VWS_SDR Simulation will be executed.
- Go to the gr-VWS-Project folder.
cd ~/gr-VWS-Project
- Execute
gnuradio-companion.
gnuradio-companion
- Open the
VWS_SDR_sim_4.grcflowgraph. - If
VWS_SDR_sim_4is not to run on the same computer as the SSB receiver, change theZMQ SUB Message Sourceaddress to the IP address of the computer running the SSB Receiver; for example:tcp://192.168.1.194:49204 - Click 'Generate the flowgraph' or press F5.
- Exit
gnuradio-companionby clicking the "X" in the upper right corner of the screen. - On the same terminal screen, execute the VWS_SDR Simulation
python3 -u VWS_SDR_sim_4.py
- There is no GUI, but informational messages will be given during the program startup and operation. To terminate the program, press the "Enter" key.
- Note: For subsequent executions of the program, if there are no changes to the flowgraph, you can skip steps 3 through 7.
- Open a second terminal window on the computer where the SSB Receiver will be executed.
- Go to the gr-VWS-Project folder.
cd ~/gr-VWS-Project
- Execute
gnuradio-companion.
gnuradio-companion
- Open the
SSB_rcv_6.grcflowgraph. - If
SSB_rcv_6is not to run on the same computer as the VWS_SDR Simulation, change theZMQ PUB Message Sinkaddress to the IP address of the computer running the SSB Receiver; for example:tcp://192.168.1.194:49204 - Click 'Generate the flowgraph' or press F5.
- Exit
gnuradio-companionby clicking the "X" in the upper right corner of the screen. - On the same terminal screen, execute the SSB_rcv_6 flowgraph.
python3 -u SSB_rcv_6.py
- A new window will open showing various controls, a waterfall display, and a Frequency display. The receive frequency can be changed in three ways: (a) by clicking on the digits, where clicking on the uppper part of the digit increases the value, and clicking on the lower part of the digit decreases the value; (b) by double clicking on the waterfall display at the desired frequency; or (c) by entering the desired frequency in the "Quick Set Frequency" box. That value is in Hz and can be the complete integer digits (e.g. 14250000) or in scientific notation (e.g. 14.25e6).
- To terminate that window, click the "X" in the upper right corner.
- Note: For subsequent executions of the program, if there are no changes to the flowgraph, you can skip steps 3 through 7.
For testing with an audio cable between the VWS_SDR_sim_4 and the SSB_rcv_6 programs, audio dongles seem to work better than integrated sound cards. The audio level of the input to SSB_rcv_6 needs to be adjusted so that it is high enough to provide a good signal, but not overdriving the input.
To test with ZMQ (TCP/IP) links between the VWS_SDR_sim and the SSB_rcv programs, using VWS_SDR_sim_3 and SSB_rcv_5 has given good results. The "Screenshot from 2025-02-10.png" shows an "over the air" signal. Even though the level was not much above the noise floor, the audio was clear and easy to understand.
- Open a terminal window.
- Go to the gr-VWS-Project folder.
cd ~/gr-VWS-Project
- Execute
gnuradio-companion.
gnuradio-companion
- Open the
RTL_SDR_p3.grcflowgraph. - Execute the flowgraph by selecting the menu items "Run -> Execute" or pressing F6.
- To terminate the
RTL_SDR_p3window, click the "X" in the upper right corner of that window. - Exit
gnuradio-companionby clicking the "X" in the upper right corner of the screen.