GQRX on Linux — Complete SDR Receiver Setup and Operating Guide
GQRX is the most popular desktop SDR receiver for Linux, combining a real-time waterfall, audio demodulation, and GNU Radio signal processing in a clean Qt interface. This complete guide covers installation on Ubuntu and Debian, setting up RTL-SDR and other hardware, configuring audio output, scanning and monitoring techniques, remote control via Hamlib, integration with digital mode software, and fixing the most common problems.
- What is GQRX and what can it do
- Supported SDR hardware
- Installation on Ubuntu and Debian
- First launch and device configuration
- RTL-SDR setup in GQRX
- Understanding the GQRX interface
- Demodulation modes — AM, FM, SSB, CW
- Operating guide — monitoring and scanning
- Audio output and piping to other programs
- Remote control via Hamlib and rigctld
- Using GQRX with digital mode software
- Hardware compatibility
- GQRX vs OpenWebRX vs SDR#
- Troubleshooting common problems
- Frequently asked questions
What is GQRX and what can it do
GQRX is an open-source SDR receiver built on top of GNU Radio and the Qt framework. Written by Alexandru Csete OZ9AEC, it provides a real-time spectrum display, waterfall, and audio demodulation for a wide range of SDR hardware. Unlike OpenWebRX which runs as a server in a browser, GQRX is a traditional desktop application — it runs on the machine with the SDR hardware attached and you operate it directly.
The application sits in the sweet spot between the raw power of GNU Radio Companion (which requires signal processing knowledge) and the simplicity of browser-based receivers. GQRX gives you a proper graphical SDR receiver with full control over all demodulation parameters, without needing to build your own signal processing flowgraph.
What GQRX can do
- Real-time waterfall and spectrum — see signal activity across the entire SDR bandwidth simultaneously
- AM, FM, SSB, CW demodulation — receive voice, broadcast, and amateur radio signals
- Wide frequency coverage — from LF to microwave depending on hardware
- Bookmarks — save favourite frequencies with labels and modes
- Remote control — Hamlib-compatible TCP server for external control
- Audio piping — route demodulated audio to other applications via PulseAudio or virtual audio cables
- I/Q recording and playback — record raw SDR samples for later analysis
- Multiple hardware backends — RTL-SDR, HackRF, Airspy, SDRplay, USRP, and more
Supported SDR hardware
| Hardware | Frequency range | Cost | GQRX support |
|---|---|---|---|
| RTL-SDR v3/v4 | 500 kHz – 1.75 GHz | ~$30–40 | Excellent — most tested hardware |
| Airspy Mini | 24 MHz – 1.8 GHz | ~$99 | Excellent |
| Airspy HF+ | 9 kHz – 31 MHz / 60–260 MHz | ~$199 | Excellent for HF |
| SDRplay RSP1A | 1 kHz – 2 GHz | ~$109 | Good — requires SoapySDR |
| HackRF One | 1 MHz – 6 GHz | ~$299 | Excellent |
| USRP B200/B210 | 70 MHz – 6 GHz | ~$700+ | Excellent via UHD |
| FUNcube Dongle Pro+ | 150 kHz – 1.9 GHz | ~$150 | Good |
| PlutoSDR | 325 MHz – 3.8 GHz | ~$149 | Good via SoapySDR |
Installation on Ubuntu and Debian
Ubuntu 22.04 and 24.04
sudo apt update
sudo apt install gqrx-sdr
This installs GQRX along with all required dependencies including GNU Radio, the RTL-SDR libraries, and Qt5 runtime libraries.
Install additional SDR hardware support
sudo apt install rtl-sdr librtlsdr-dev gr-osmosdr
sudo apt install airspy libairspy-dev
sudo apt install hackrf libhackrf-dev
sudo apt install soapysdr-tools libsoapysdr-dev \
soapysdr-module-rtlsdr soapysdr-module-airspy
Blacklist the DVB-T driver for RTL-SDR
echo "blacklist dvb_usb_rtl28xxu" | \
sudo tee /etc/modprobe.d/blacklist-rtl.conf
sudo modprobe -r dvb_usb_rtl28xxu
Build the latest GQRX from source
The repository version may lag the latest release. Build from source for current features and bug fixes:
sudo apt install git cmake build-essential \
libgnuradio-runtime-dev libboost-all-dev \
qtbase5-dev libqt5svg5-dev
git clone https://github.com/gqrx-sdr/gqrx.git
cd gqrx
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install
Raspberry Pi
GQRX runs on Raspberry Pi 4 via the standard apt install. Performance on a Pi 4 is adequate for monitoring but the waterfall refresh rate is lower than on a desktop machine. A Pi 3B+ is marginal — use OpenWebRX instead for Raspberry Pi deployments where remote browser access is acceptable.
Verify installation
gqrx --version
First launch and device configuration
On first launch GQRX opens a device configuration dialog. Select your SDR hardware and configure the basic settings before the main window opens.
Device configuration dialog
- In the Device dropdown select your hardware — for RTL-SDR select "Realtek RTL2838UHIDIR" or similar
- If your device does not appear click the refresh button next to the dropdown
- Set the Input rate — 2400000 (2.4 Msps) is a good default for RTL-SDR
- Set the Decimation to None initially
- Click OK to open the main window
Device string format
GQRX uses a device string to identify hardware. For RTL-SDR the string is typically rtl=0 for the first dongle. You can also pass additional parameters in the device string:
# RTL-SDR first device
rtl=0
# RTL-SDR with specific serial number
rtl=00000001
# RTL-SDR with direct sampling (Q branch) for HF
rtl=0,direct_samp=2
# Airspy Mini
airspy=0
# HackRF
hackrf=0
# SDRplay via SoapySDR
soapy=0,driver=sdrplay
Saving device configuration
GQRX saves the last used device configuration automatically. To change it later go to File → I/O Devices or press Ctrl+I.
RTL-SDR setup in GQRX
Gain settings
RTL-SDR gain is set in the right panel of GQRX under Input Controls. The gain slider controls the RTL2832 tuner gain in dB. Start with gain in the middle range (around 30–40 dB) and adjust based on what you are receiving:
- Too low — signals are buried in the noise floor, waterfall looks dark and flat
- Too high — strong local signals cause intermodulation and overloading, the waterfall looks washed out and noisy everywhere
- Correct — signals stand out clearly against a consistent noise floor
Enable AGC (Automatic Gain Control) for a quick starting point — GQRX adjusts gain automatically. For best performance set gain manually once you know your local RF environment.
PPM correction
Set the frequency correction in PPM in the Input Controls panel. Most RTL-SDR dongles need between -50 and +50 PPM correction. RTL-SDR Blog v3/v4 are typically within 1–2 PPM. A wrong PPM value causes signals to appear at slightly wrong frequencies.
# Tune GQRX to a known exact frequency (e.g. 100.0 MHz FM)
# Note the actual peak frequency on the waterfall
# PPM error = (actual - expected) / expected * 1000000
# Example: peak at 100.000050 MHz = +0.5 PPM
Direct sampling for HF reception
RTL-SDR dongles can receive HF (below 30 MHz) using direct sampling mode. In the GQRX device string add ,direct_samp=2 for the Q branch (most HF antennas) or ,direct_samp=1 for the I branch:
rtl=0,direct_samp=2
With direct sampling enabled tune to HF frequencies normally. Signal quality is limited compared to a dedicated HF SDR but perfectly adequate for monitoring amateur bands and shortwave broadcasts.
Bias-T for active antennas
The RTL-SDR Blog v3 and v4 include a software-controlled bias-T that can power active antennas via the coax. Enable it in the device string:
rtl=0,bias=1
Understanding the GQRX interface
Main window layout
- Spectrum display (top) — shows signal power vs frequency for the current moment, updated continuously
- Waterfall display (bottom) — shows spectrum history scrolling downward, time on the vertical axis
- VFO control (top left) — enter the receive frequency directly, use mouse wheel to tune
- Receiver Options (right panel) — mode selection, filter bandwidth, squelch, and audio gain
- Input Controls (right panel) — hardware gain, PPM correction, and sample rate
- FFT Settings (right panel) — waterfall speed, colour scheme, and display range
Tuning methods
- Click on waterfall or spectrum — tunes to that frequency
- Mouse wheel on VFO display — fine tune in 1 Hz, 10 Hz, or 100 Hz steps depending on where you scroll
- Type directly in VFO field — enter frequency in Hz
- Bookmarks — click a saved bookmark to jump to a stored frequency and mode
- Keyboard arrows — step up/down in frequency
Waterfall controls
The waterfall colour scheme and speed are adjusted in the FFT Settings panel:
- FFT size — larger FFT gives better frequency resolution but slower updates. 32768 is a good balance
- Rate — waterfall scroll speed. Higher rates give a faster moving display
- dB range and reference — adjust these to position the noise floor near the bottom of the colour scale
- Colour scheme — Gqrx, Plasma, and several others available
Demodulation modes — AM, FM, SSB, CW
| Mode | GQRX setting | Filter bandwidth | Use for |
|---|---|---|---|
| AM broadcast | AM | 10 kHz | Shortwave and medium wave broadcasts |
| Narrowband FM | FM-N | 12.5 kHz | VHF/UHF amateur repeaters, public safety |
| Wideband FM | WFM or WFM-Stereo | 200 kHz | FM broadcast radio |
| Upper sideband | USB | 2.4 kHz | HF amateur voice, digital modes |
| Lower sideband | LSB | 2.4 kHz | HF amateur voice below 10 MHz |
| CW (upper) | CWU | 500 Hz | CW (Morse code) signals |
| CW (lower) | CWL | 500 Hz | CW below 10 MHz |
Filter bandwidth adjustment
The filter bandwidth is shown as a shaded region on the waterfall. Drag the edges of this region to widen or narrow the filter. For SSB voice use 2.4–3.0 kHz, for CW use 200–500 Hz, for AM use 8–12 kHz depending on signal quality. A narrower filter reduces adjacent channel interference but also cuts audio bandwidth.
Squelch
The squelch slider in the Receiver Options panel mutes audio when signal level drops below the threshold. For monitoring a quiet frequency set squelch just above the noise floor. Right-click the squelch slider to reset it to -150 dBFS (effectively off) for always-on monitoring.
AGC (Automatic Gain Control)
AGC in GQRX refers to audio-level AGC — it automatically adjusts the audio output volume to keep voice signals at a consistent level regardless of the received signal strength. Enable it under Receiver Options → AGC. It is helpful for monitoring a frequency where signal strengths vary widely. For digital mode decoding disable AGC to keep audio levels consistent for the decoder.
Operating guide — monitoring and scanning
Monitoring an amateur repeater
- Set frequency to the repeater output frequency
- Select FM-N (narrowband FM) mode
- Set filter bandwidth to 12.5 kHz
- Adjust squelch just above the noise floor — the audio should be silent until the repeater opens
- Use bookmarks to save the repeater frequency with its callsign as the label
Monitoring HF amateur bands
- Enable direct sampling mode if using RTL-SDR for HF
- Tune to the band you want — e.g. 14.000 MHz for 20m
- Select USB for frequencies above 10 MHz, LSB below
- Set filter bandwidth to 2.4 kHz for voice, 500 Hz for CW
- The waterfall shows all activity across the bandwidth simultaneously — signals appear as vertical lines
- Click on any signal to tune to it and hear the audio
Using bookmarks for quick band changes
GQRX has a powerful bookmark system. Save your favourite frequencies via Bookmarks → Add bookmark. Each bookmark stores the frequency, mode, bandwidth, and a label. Right-click on the waterfall for a quick-add option. Bookmarks appear in the Bookmarks panel and as markers on the waterfall display.
Scanning for activity
GQRX does not have a built-in scanner but you can scan manually by watching the waterfall while slowly scrolling through a band. The waterfall shows signal history — active frequencies are immediately visible as bright vertical streaks. For automated scanning use a companion application like gpredict or write a simple Python script using GQRX's remote control interface.
Recording I/Q data
Record raw SDR samples for later analysis via File → Start I/Q recording. The recording captures the full SDR bandwidth — you can play it back in GQRX later and tune to any frequency within the recorded bandwidth as if it were live. I/Q files are large — a 2.4 Msps recording at 8-bit depth fills about 300 MB per minute.
Monitoring aircraft with ADS-B
RTL-SDR covers 1090 MHz where aircraft ADS-B transponders broadcast. Tune GQRX to 1090 MHz and switch to AM mode — you will see the ADS-B burst signals as short bright marks on the waterfall. To decode aircraft positions use dump1090 or readsb alongside GQRX rather than trying to decode visually.
Audio output and piping to other programs
GQRX can route its demodulated audio to other applications — this is how you use GQRX as the receive front-end for digital mode decoders like Fldigi, WSJT-X, or Direwolf.
Audio output options
Configure audio output in File → I/O Devices → Audio output or in the Audio tab of the device configuration dialog:
- Default audio device — plays through your speakers or headphones
- UDP audio streaming — streams audio as UDP packets to localhost:7355 for other applications
- PulseAudio virtual sink — route audio to a virtual device that other applications can read
Piping GQRX audio to Fldigi
The most common use case — use GQRX to tune and demodulate, feed the audio to Fldigi for digital mode decoding:
# Create a virtual audio sink that GQRX outputs to
# and Fldigi reads from
pactl load-module module-null-sink \
sink_name=gqrx_sink \
sink_properties=device.description="GQRX_Audio"
# The virtual sink creates a monitor source that Fldigi can use
# In Fldigi: Configure → Sound Card → Input → gqrx_sink.monitor
In GQRX set the audio output to the virtual sink. In Fldigi set the audio input to the monitor source of the same sink. Audio flows from GQRX through the virtual sink to Fldigi automatically.
UDP audio for external decoders
GQRX can stream demodulated audio as UDP packets to localhost port 7355. Many SDR companion programs support this natively — check your decoder's documentation for UDP audio input support.
# In GQRX: File → I/O Devices → Audio output
# Select "UDP" and set host to 127.0.0.1, port to 7355
# Receive the UDP audio stream with netcat for testing:
nc -lu 7355 | aplay -r 48000 -f S16_LE -c 1 -
Piping GQRX to Direwolf for APRS
Tune GQRX to 144.390 MHz FM and pipe the audio to Direwolf for APRS packet decoding. Use a PulseAudio virtual sink as described above, then configure Direwolf to use the monitor source of that sink as its audio input. This gives you a full APRS receive station using GQRX for the SDR front-end and Direwolf for packet decoding.
Remote control via Hamlib and rigctld
GQRX has a built-in remote control server compatible with the Hamlib protocol. This allows other applications to control GQRX's frequency and mode as if it were a radio transceiver.
Enabling remote control
- Go to Tools → Remote control settings
- Enable Listen on port — default is 7356
- Click OK — GQRX starts listening for Hamlib commands on that port
Connecting Hamlib to GQRX
# Connect to GQRX remote control port
# Hamlib model 1 = dummy rig, but GQRX speaks Hamlib protocol directly
rigctl -m 2 -r localhost:7356
# Commands:
# f = get frequency
# F 14074000 = set frequency to 14.074 MHz
# m = get mode
# M USB 2400 = set mode to USB with 2400 Hz filter
Using GQRX with Gpredict for satellite tracking
Gpredict is a satellite tracking application that can control GQRX via the remote control port. Gpredict automatically adjusts GQRX's receive frequency to compensate for Doppler shift as a satellite passes overhead — essential for clean satellite audio reception.
- Enable GQRX remote control on port 7356
- In Gpredict go to Edit → Preferences → Interfaces and add a radio interface pointing to localhost:7356
- In the Gpredict satellite tracking window, click the radio button to enable Doppler correction
- As the satellite passes, Gpredict sends frequency updates to GQRX in real time
Using GQRX with digital mode software
GQRX + Fldigi for PSK31 and RTTY
Tune GQRX to the digital mode frequency in USB mode, pipe audio to Fldigi via PulseAudio virtual sink, and Fldigi handles the decoding. The key settings:
- GQRX mode: USB
- GQRX bandwidth: 3 kHz or wider to capture the full passband
- GQRX AGC: OFF — Fldigi needs consistent audio levels for decoding
- GQRX audio output: virtual sink
- Fldigi audio input: monitor source of the same virtual sink
GQRX + WSJT-X for FT8
WSJT-X can receive audio from GQRX via a PulseAudio virtual sink. Tune GQRX to 14.074 MHz USB and pipe audio to WSJT-X's audio input. Note that WSJT-X cannot transmit through GQRX — you still need a transceiver for transmitting. This setup is useful for receive-only FT8 monitoring or for evaluating propagation before transmitting.
GQRX + Direwolf for APRS decode
Tune GQRX to 144.390 MHz FM and pipe audio to Direwolf. This creates a software-only APRS receive station with no dedicated hardware TNC. Direwolf can run as an iGate, forwarding decoded packets to APRS-IS. See the Direwolf guide for iGate configuration details.
GQRX + multimon-ng for pager and utility decoding
# Enable UDP audio in GQRX (port 7355), then:
nc -lu 7355 | multimon-ng -t raw -a POCSAG512 \
-a POCSAG1200 -a POCSAG2400 -f alpha -
Hardware compatibility
| Hardware | Linux driver | GQRX device string | Notes |
|---|---|---|---|
| RTL-SDR Blog v3/v4 | rtlsdr (built-in) | rtl=0 | Best value, requires DVB blacklist |
| Generic RTL2832U dongle | rtlsdr (built-in) | rtl=0 | Same as above, vary in quality |
| Airspy Mini | airspy | airspy=0 | Better dynamic range than RTL-SDR |
| Airspy HF+ Discovery | airspyhf | airspyhf=0 | Excellent HF performance |
| SDRplay RSP1A | SoapySDRPlay (from SDRplay) | soapy=0,driver=sdrplay | Install SDRplay API first |
| HackRF One | hackrf | hackrf=0 | Wide coverage, half-duplex TX |
| FUNcube Dongle Pro+ | fcdproplus | fcd=0 | Good VHF/UHF sensitivity |
| USRP B200 | UHD | uhd=0 | High quality, expensive |
GQRX vs OpenWebRX vs SDR#
| Feature | GQRX | OpenWebRX | SDR# (Windows) |
|---|---|---|---|
| Platform | Linux, macOS | Linux (server) | Windows only |
| Interface | Desktop Qt app | Web browser | Desktop WinForms |
| Remote access | Via VNC/RDP only | Native browser access | Via remote desktop |
| Multiple users | No | Yes | No |
| Built-in decoders | No | FT8, APRS, ADS-B, more | Via plugins |
| Audio piping | Yes — PulseAudio/UDP | Browser audio only | Yes — VAC |
| Hamlib remote control | Yes — port 7356 | No | No |
| I/Q recording | Yes | No | Yes |
| Plugin support | Via GNU Radio | Via decoders | Extensive plugins |
| Resource usage | Moderate | Moderate | Low to moderate |
| Cost | Free | Free | Free |
Choosing between GQRX and OpenWebRX
Use GQRX when you are sitting at the machine with the SDR attached and want full desktop control — proper waterfall, audio piping to other applications, I/Q recording, and satellite Doppler correction. Use OpenWebRX when you want to share the receiver with other operators, access it from a phone or tablet, or run it headlessly on a Raspberry Pi as a permanent monitoring station.
Many operators run both — OpenWebRX as a permanent background service for remote monitoring and sharing, and GQRX when they want to do serious local SDR work with audio piping to Fldigi or other decoders.
Troubleshooting common problems
No device found — GQRX shows empty device list
- Check that the DVB-T driver is blacklisted:
cat /etc/modprobe.d/blacklist-rtl.conf - Unplug and replug the SDR dongle
- Test with rtl_test:
rtl_test -t - Check USB permissions — try running GQRX as root once to verify it is not a permissions issue:
sudo gqrx - Add udev rule for non-root access: create
/etc/udev/rules.d/rtl-sdr.ruleswithSUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", GROUP="plugdev", MODE="0666"
GQRX starts but waterfall is flat — no signals visible
- Check the gain slider — too low means signals are below the display threshold. Try setting gain to 40 dB as a starting point
- Check the dB range in FFT Settings — the display range may not include your noise floor
- Verify the antenna is connected
- Try a known strong signal — FM broadcast at 88–108 MHz should be visible on any RTL-SDR
- Check that the correct device is selected
Audio is choppy or cutting out
- Increase the audio buffer size in File → I/O Devices → Audio output
- Reduce the sample rate — try 1.8 Msps instead of 2.4 Msps
- Close other CPU-intensive applications
- On Raspberry Pi check for CPU throttling:
vcgencmd get_throttled - Try a different USB port — USB 3.0 interference can cause RTL-SDR dropouts
Frequency is off — signals appear at wrong frequencies
- Set PPM correction in Input Controls — start with 0 and adjust until a known frequency (FM broadcast, NOAA weather) aligns correctly
- Use a GPS-locked reference for precision PPM calibration if needed
- Temperature affects RTL-SDR crystal drift — let the dongle warm up for 5–10 minutes before calibrating
GQRX crashes on startup
- Delete GQRX configuration and start fresh:
rm -rf ~/.config/gqrx - Run from terminal to see error output:
gqrx - Check for conflicting GNU Radio versions:
gnuradio-config-info --version - Try a fresh build from source if the apt version has conflicts
No audio output — waterfall works but no sound
- Check that squelch is not set too high — lower it below the noise floor
- Verify the audio output device in File → I/O Devices
- Check system volume mixer — GQRX may be muted in the mixer
- Try changing the audio output device — some systems default to HDMI audio
Frequently asked questions
What SDR hardware works best with GQRX on Linux?
The RTL-SDR Blog v3 or v4 is the best starting point — plug-and-play on Linux with the built-in rtlsdr driver, covers 500 kHz to 1.75 GHz, and costs under $40. For dedicated HF monitoring the Airspy HF+ Discovery gives much better performance. For wideband coverage from VHF to microwave the HackRF One covers 1 MHz to 6 GHz. All three work excellently with GQRX.
Can GQRX receive HF amateur bands?
Yes — with an RTL-SDR v3 or v4 enable direct sampling mode (device string: rtl=0,direct_samp=2) to receive below 30 MHz. Performance is limited compared to a dedicated HF SDR but good enough for monitoring. For a proper HF receiver the Airspy HF+ Discovery or SDRplay RSPdx give significantly better performance — wider dynamic range, better sensitivity, and freedom from the overloading that affects direct sampling mode in urban RF environments.
How do I use GQRX with Fldigi for digital modes?
Create a PulseAudio virtual sink using pactl load-module module-null-sink sink_name=gqrx_sink. Set GQRX's audio output to this virtual sink and Fldigi's audio input to the sink's monitor source (gqrx_sink.monitor). Tune GQRX to your digital mode frequency in USB mode with AGC off and a bandwidth wide enough to see the full passband. Fldigi receives the audio and decodes digital signals as normal.
What is the difference between GQRX and GNU Radio?
GNU Radio is a signal processing framework — you build custom receiver pipelines by connecting blocks in a graphical flowgraph editor. It is extremely powerful but requires signal processing knowledge. GQRX is built on top of GNU Radio but provides a ready-to-use receiver application with a proper graphical interface. GQRX is what most operators want. GNU Radio is for building custom signal processing applications, implementing new decoders, or doing SDR research.
Can I use GQRX to track satellites?
Yes — use GQRX with Gpredict for satellite tracking with automatic Doppler correction. Enable GQRX's remote control on port 7356, then configure Gpredict to control GQRX as a radio interface. As the satellite passes overhead Gpredict continuously updates GQRX's receive frequency to compensate for Doppler shift, keeping the signal in the audio passband throughout the pass. This works for LEO amateur satellites, ISS voice downlinks, and weather satellite APT reception.
Is GQRX better than SDR# for Linux?
SDR# runs on Windows only — there is no native Linux version. GQRX is the standard desktop SDR application for Linux and serves the same role that SDR# fills on Windows. Feature-wise GQRX has good basic functionality with some areas like plugin support where SDR# is more mature. For Linux users GQRX is the clear choice for local desktop SDR work.
Does GQRX work on Raspberry Pi?
GQRX installs and runs on Raspberry Pi 4 via apt but the experience is not ideal — the waterfall is sluggish compared to a desktop machine and CPU usage is high. For Raspberry Pi deployments OpenWebRX is usually a better choice as it handles the processing more efficiently and provides browser-based access without needing a desktop environment. If you specifically need GQRX's features like audio piping or I/Q recording, a Pi 4 will work — just with reduced waterfall performance.