QRadioLink is a VOIP (radio over IP) GNU/Linux SDR (software defined radio) transceiver application using Internet for communication, built on top of GNU radio,
which allows experimenting with software defined radio hardware using different digital and analog radio signals and a Qt5 user interface.
Its primary purpose is educational, but it can also be customized for low power data communications on various ISM frequency bands.
It can also be used as a low power amateur radio SDR transceiver for demonstrating radio communications to children at schools.
- ISM band communications
- Radio over IP
- Raspberry Pi hobby RF communications
- point to point radio network systems
- amateur radio low power repeater
- sattelite amateur radio communications
Alternatives to QRadioLink
Free software projects that work on Linux and have similar features to QRadioLink are listed below.
- FreeDV is a Digital Voice mode for HF radio. The application works for Windows, Linux and OSX and allows any SSB radio to be used for low bit rate digital voice. It is the original free software Codec2 implementation. It does not require a SDR and works with any analog radio.
- SvxLink is a great project which inspired the radio linking features of QRadioLink. The Qtel component is a full-featured Echolink GUI client. It does not require using a SDR and can work with any FM radio.
- Gqrx is an open source software defined radio receiver (SDR) powered by the GNU Radio SDK and the Qt graphical toolkit. Gqrx inspired the use of GNU radio in QRadioLink and some features, code and architecture were copied verbatim from Gqrx as the best alternative available. Despite the graphical resemblance to it, Gqrx is much more suitable for the purpose of general SDR receiver. There are several trade-offs made in QRadioLink to emphasize CPU performance to the detriment of signal quality. One such tradeoff is the use of an audio sample rate of 8000 Hz in QRadioLink compared to the more faithful 48000 Hz in Gqrx. Other major differences are lack of Wide FM stereo, RDS decoding, lack of waterfall persistence, lack of I/Q samples recording and lower SSB / AM performance in QRadioLink. Gqrx is also more user friendly and has a wide support community.
- SDRangel is a full SDR transceiver for SSB, FM, DMR, D-Star, C4FM and DVB-S. It can use only SDR hardware but it supports a large number of them.
- Mumble is what QRadioLink uses under the hood. It is a great alternative for people who don't want to use SDR radios.
- Codec2 GMSK is a great and free software alternative to D-Star on VHF-UHF handheld radios. It only requires a radio capable of 9600 baud packet.
- OP25 is a free software implementation of D-Star, DMR and C4FM (Yaesu digital voice standard). It works with FM radios capable of 9600 baud packet as well as SDRs.
- Charon is a stand-alone OFDM transceiver with batman-adv mesh networking capabilities. The IP modem in Charon is very advanced and can be embedded on the PlutoSDR. It is the base for several amateur radio mesh networks. Only works with SDR hardware.
- MMDVM extremely robust free software implementation of D-Star, DMR and C4FM (Yaesu digital voice standard). Works with RaspberryPi, Arduino and any radios capable of 9600 baud packet.
Important: starting with GNU radio version 3.8 QRadioLink will not work anymore due to the dependency on the gr-osmosdr package which is removed from most Linux distributions
- VOIP (Radio-over-IP) connection between two or more stations operating in simplex or semi-duplex mode
- Direct VOIP talk-around (only requires connection to a VOIP server and no radio)
- Radio forwarding over VOIP - forward analog or digital radio voice to VOIP connection and viceversa
- Wideband audio streaming over the Internet with the Opus audio codec
- Configurable VOIP bitrate
- Audio recording for local audio output in FLAC (free lossless audio compression) format
- Compatible with the Mumble client application
- Remote control via network (requires a telnet client or similar program, can be scripted)
- Remote control via Mumble private text messages
- Run headless (no graphical user interface) for terminal usage on embedded platforms like the Raspberry Pi or similar boards without any screen
- Transmit and receive analog FM, SSB, AM, digital voice, text messages, digital video, IP protocol.
- Full duplex 250 kbit/s IP radio modem with configurable TX/RX offsets
- Analog and digital mode repeater - in full duplex mode only, same mode or mixed mode repeater (e.g. FM to Codec2 and viceversa, or FM to Opus and viceversa)
- Repeater linking via VOIP and Mumble - a group of repeaters can be linked by sharing the same Mumble channel. This feature is still experimental and WIP.
- Full duplex and simplex operation
- Fast tune reverse repeater shift using dedicated button
- Split operation (transmit on other frequency than the receive frequency with no shift limitation, used mostly for repeater operation)
- Memory channels (store frequency, name, TX shift, operating mode, squelch value, volume, TX power, RX gain, TX and RX CTCSS) and memory channel scan
- Mixed mode operation (receive one mode and transmit another)
- Digital voice codecs: Codec2 700 bit/s, Codec2 1400 bit/s, Opus 9600 bit/s
- Digital voice modem bitrates over the air from 1 kbit/s to 10 kbit/s
- FreeDV digital voice modulator and demodulator (currently supports only 1600, 700C and 800XA modes)
- Wideband digital voice streaming over the Internet with the Opus audio codec
- Digital modulation: FreeDV 1600, FreeDV 700C, FreeDV 800XA, BPSK, DQPSK, 2FSK, 4FSK
- Analog modulations: FM (12.5 kHz), narrow FM (6.25 kHz), SSB, AM, Wide FM (broadcast, receive-only)
- Configurable filter widths for analog modes
- CTCSS encoder and decoder for analog FM
- VOX mode with configurable VOX level
- USB FTDI (FT232) relay control support (for RF switches, power amplifier and filter control)
- Automatic carrier tracking and Doppler effect correction. The system can track Doppler shifts of up to 5-10 kHz, depending on mode. It requires a CNR of at least 10-12 dB, more for FSK modes than for PSK modes.
- Supported hardware: Ettus USRP bus devices, RTL-SDR, ADALM-Pluto (PlutoSDR), LimeSDR-mini, BladeRF, other devices
supported by gr-osmosdr (HackRF, RedPitaya, others)
Note: QRadioLink currently uses only the default Gnuradio blocks, but that could change in the future.
Why does the user interface appear different from the screenshots on my computer?
The screenshots are taken under KDE, a native Qt desktop environment. With GTK based desktops, the Qt theme can
behave differently. I have not mastered yet these subtle differences. Your help is welcome.
I am trying to use the official Mumble server package, but it does not seem to work with QRadioLink
The best response I can come up with is that the official Mumble protocol reference possibly ommits some steps required
to connect to the latest version of the official server. My Mumble client is written according to this document, but
it uses the umurmur server package for this reason. Your help in resolving this issue is also welcome.
Why is there no Android APK for QRadioLink?
Because QRadioLink is not a native Android application and needs a GNU/Linux Android container and userspace. For this reason
the user interface is rather clunky for a mobile device and needs a rewrite. You can expect that to happen once KDE Plasma
mobile becomes stable. While the application is not native, the performance is similar to a native application, but
there is some overhead from the visualisation layers, especially if you use a VNC display instead of an X server.
For most modes, expect at least 50% CPU usage on 3-4 cores running at 1.2 GHz.
I am running QRadioLink on a very limited CPU power platform, what can I do?
The FFT and waterfall widgets are not active if you disable the FFT checkbox. No FFT is performed on the data by GNU radio and
no UI painting is happening. When you switch FFT on, that code becomes active and the application
takes a performance hit which is proportional to the sample rate, FFT size and the FPS. Reduce them to the minimum for lowest CPU demand. You should run volk_profile before running the application for optimization.
I have issues forwarding the VoIP digital audio to the radio and viceversa
If your SDR receives an FM or other analog signal there is no transcoding involved and the voice packets encoded with Opus are sent
directly to connected clients. If your SDR receives a digital voice signal like Codec2, the audio is transcoded first
before being sent to the VoIP network. Audio artefacts and delays may be present in this case.
Can QRadioLink be used headless (with no graphical user interface on the Raspberry Pi?
Yes, starting with version 0.8.2, QRadioLink can be used as a terminal application (possibly daemonized) without X11 or any screens.
Remote operation in this case is possible either via commands sent through Mumble as private messages, or via the embedded telnet server, for which you will need
a telnet client or similar application to connect with. No authentication or security features are implemented at the moment, so you should not expose the configured
remote port to the Internet and instead use SSH to connect to the system and telnet from there. If you are not using local audio, you will need to also enable VOIP forwarding.
Is there a Windows version?
No. QRadioLink only works on Linux systems at the moment. However, it is not impossible to port to the Windows operating system if someone is interested to do the work, with only a few parts that are very Linux specific (including some calls into Linux kernel API). However, Windows users should keep in mind that QRadioLink is a very simple educational tool for hobbyist and learning users and cannot achieve or even wants to achieve what professional SDR applications can perform on Windows. To avoid disappointment, I am recommending some professional products with first grade suppport for the Windows OS: FlexRadio SmartSDR and SDRConsole.