SDR Setup Guide
Complete guide for setting up Software Defined Radio (SDR) receivers with EAS Station™
Quick Navigation
- Hardware Guide - Choosing the right SDR
- Setup Flowchart - Visual overview
- Web UI Setup - Easiest configuration method
- Troubleshooting - Fix common issues
Visual Setup Guide
For a complete visual overview of the SDR setup process:
Quick Start
What's Included
SoapySDR, RTL-SDR, and Airspy drivers are pre-installed in the installation:
- ✅ SoapySDR core libraries
- ✅ RTL-SDR drivers (default)
- ✅ Airspy drivers (default)
- ✅ USB device passthrough (pre-configured)
- ✅ No .env configuration needed
Setup Steps
Plug in your SDR device
# Verify device is detected on host lsusb | grep -i rtl # For RTL-SDR lsusb | grep -i airspy # For AirspyStart the services
sudo systemctl start eas-station-sdr eas-station-audioVerify SDR detection
# Check SoapySDR can see the device SoapySDRUtil --find # Run diagnostic script python3 scripts/sdr_diagnostics.pyConfigure in Web UI
- Open http://localhost (or your server IP)
- Navigate to Settings → Radio Receivers
- Click Discover Devices
- Click Add This Device on your SDR
- Apply a preset (NOAA Weather Radio recommended)
- Save and enable
Done! Your SDR should now show "Locked" status.
Hardware Requirements
Supported SDR Devices
| Device | Frequency Range | Sample Rate | Cost | Best For |
|---|---|---|---|---|
| RTL-SDR V3 | 24 MHz - 1.7 GHz | Up to 2.4 MSPS | $20-40 | NOAA Weather Radio, budget builds |
| Airspy Mini | 24 MHz - 1.7 GHz | Up to 6 MSPS | $100+ | Better sensitivity, professional use |
| Airspy R2 | 24 MHz - 1.7 GHz | Up to 10 MSPS | $200+ | Maximum performance |
Recommended starter: RTL-SDR Blog V3 ($30) with bias-tee for powered antennas
Antenna Requirements
For NOAA Weather Radio (162 MHz):
| Type | Performance | Cost | Notes |
|---|---|---|---|
| Telescoping whip | Good for testing | $5-10 | Included with most RTL-SDR kits |
| 1/4 wave ground plane | Excellent | $20-40 | ~19 inches, outdoor mount |
| Commercial scanner | Excellent | $30-80 | VHF optimized, weather-resistant |
Signal improvement tips:
- Place antenna near window or outdoors
- Higher is better (roof/attic mounting)
- Keep away from computers and USB hubs (RF interference)
- Use quality coaxial cable (low-loss RG-6 or LMR-400)
Software Installation
bare metal deployment (Recommended)
No installation needed! SoapySDR and all drivers are built into the installation.
The image includes:
- SoapySDR core libraries and Python bindings
- RTL-SDR and Airspy drivers (via
SOAPYSDR_DRIVERSbuild arg) - USB device support (
libusb) - NumPy for signal processing
devices:
- /dev/bus/usb:/dev/bus/usb
privileged: true
Optional: Customize driver installation
To reduce build time, install only the drivers you need in .env:
# Only RTL-SDR (faster builds)
SOAPYSDR_DRIVERS=rtlsdr
# Both RTL-SDR and Airspy (default)
SOAPYSDR_DRIVERS=rtlsdr,airspy
Verify USB Access
# 1. Check if SDR is detected on host
lsusb | grep -i rtl # Or grep -i airspy
# Expected output:
# Bus 001 Device 005: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
# 2. Verify the service user can access USB devices
groups eas-station | grep plugdev
# 3. Test SoapySDR detection
SoapySDRUtil --find
Troubleshooting USB Issues
Problem: No devices found
Kernel driver conflict (RTL-SDR only)
The DVB-T TV tuner driver blocks RTL-SDR access:
# On host, create /etc/modprobe.d/blacklist-rtl.conf: sudo tee /etc/modprobe.d/blacklist-rtl.conf <<EOF blacklist dvb_usb_rtl28xxu blacklist rtl2832 blacklist rtl2830 EOF # Unload the module sudo modprobe -r dvb_usb_rtl28xxu # Reboot to make permanent sudo rebootService needs restart
sudo systemctl restart eas-station-sdrUSB device path changed
udev re-enumerates USB devices automatically; if the SDR was replugged, restart the SDR service as above.
Web UI Configuration
Easiest way to configure SDRs
Step-by-Step Setup
1. Access Radio Settings
- Log into EAS Station™ web interface
- Navigate to Settings → Radio Receivers
2. Run Diagnostics
- Click Run Diagnostics button
- Verify all checks pass:
- ✓ SoapySDR is installed
- ✓ NumPy is installed
- ✓ RTL-SDR or Airspy driver available
- ✓ At least 1 device detected
If diagnostics fail → Troubleshooting
3. Discover and Add Device
- Click Discover Devices
- Review detected SDRs
- Click Add This Device on your SDR
- Form pre-fills with device info
4. Apply Preset (Recommended)
- Click Use Preset
- Choose:
- NOAA Weather Radio (RTL-SDR) - For RTL-SDR dongles
- NOAA Weather Radio (Airspy) - For Airspy receivers
- Click Use This Preset
5. Set Your Local Frequency
Find your nearest NOAA Weather Radio station: https://www.weather.gov/nwr/station_listing
NOAA Frequencies:
| Channel | Frequency |
|---|---|
| WX1 | 162.400 MHz |
| WX2 | 162.425 MHz |
| WX3 | 162.450 MHz |
| WX4 | 162.475 MHz |
| WX5 | 162.500 MHz |
| WX6 | 162.525 MHz |
| WX7 | 162.550 MHz |
Convert to Hz: Multiply MHz × 1,000,000 Example: 162.550 MHz = 162550000 Hz
6. Enable and Monitor
- Check Enabled and Auto-start
- Click Save Receiver
- Wait for Locked status (green badge)
- Check signal strength (should be > 0.1 dBFS for good reception)
Manual Configuration
Configuration Fields
| Field | RTL-SDR Example | Airspy Example | Description |
|---|---|---|---|
| Display Name | Main NOAA Receiver |
Backup NOAA |
Friendly name |
| Identifier | rtlsdr_main |
airspy_backup |
Unique ID (no spaces) |
| Driver | rtlsdr |
airspy |
SoapySDR driver name |
| Serial | (empty) | (empty) | Device serial; leave empty for first match |
| Frequency (Hz) | 162550000 |
162550000 |
162.55 MHz |
| Sample Rate | 2400000 |
2500000 |
Hardware-supported rate |
| Gain (dB) | 49.6 |
21 |
See gain guide below |
| Channel | 0 or empty |
0 or empty |
Multi-channel SDRs only |
| Enabled | ✓ | ✓ | Start on boot |
| Auto-start | ✓ | ✓ | Restart if crashes |
Gain Settings Guide
RTL-SDR:
- Range: 0-50 dB
- Start with: 49.6 dB (maximum sensitivity)
- Adjust down if signal is too strong (> 1.0 dBFS)
Airspy:
- Range: 0-21 dB (linearity mode) or 0-15 dB (sensitivity mode)
- Start with: 21 dB
- Airspy has automatic gain control (AGC) option
Too much gain = Overload, distortion Too little gain = Weak signal, poor decoding
Testing and Verification
Using Diagnostic Tools
# Full diagnostic check
# Enumerate all devices
# Check driver capabilities
# Test sample capture (5 seconds at 162.55 MHz)
--test-capture --driver rtlsdr --frequency 162550000 --duration 5
# Show available presets
Web UI Status Check
- Navigate to Settings → Radio Receivers
- Check Receiver Status panel:
- Locked count > 0
- Green "Locked" badges in receiver table
- Signal strength displayed (dBFS)
Expected Signal Levels
| Signal Strength | Status | Notes |
|---|---|---|
| 0.1 - 1.0 dBFS | Excellent | Strong, clear lock |
| 0.01 - 0.1 dBFS | Fair | Works but may have dropouts |
| < 0.01 dBFS | Poor | Unlikely to decode properly |
| > 1.0 dBFS | Overload | Reduce gain to prevent distortion |
Troubleshooting
"No SDR Devices Found"
Possible causes and solutions:
SDR not plugged in
- Check USB connection
- Try different USB port (USB 2.0 often better than USB 3.0)
- Verify with
lsusbon host
Kernel driver conflict (RTL-SDR)
- Blacklist DVB-T drivers
SoapySDR bindings missing from the virtual environment
bash scripts/fix_soapysdr_venv.shRestart services after plugging in device
sudo systemctl restart eas-station-sdr eas-station-audio
"Receiver shows 'No lock' status"
Wrong frequency
- Verify correct NOAA station: https://www.weather.gov/nwr/station_listing
- Double-check frequency entered in Hz (not MHz)
Weak signal
- Improve antenna (see Hardware Requirements)
- Move antenna to window or outdoors
- Increase gain (but watch for overload)
No antenna connected
- Ensure antenna is firmly attached to SMA connector
Interference
- Move SDR away from computers, power supplies
- Use shielded USB cable
- Try powered USB hub for better power delivery
"Signal strength is 0 or very low"
- Check antenna connection - Firm SMA connection
- Verify frequency - Matches local NOAA station
- Increase gain - Try 49.6 dB for RTL-SDR, 21 dB for Airspy
- Test with FM radio - Tune to 88-108 MHz to verify hardware works
"Permission denied" errors
devices:
- /dev/bus/usb:/dev/bus/usb
cap_add:
- SYS_RAWIO
If still having issues, add user to plugdev group:
sudo usermod -aG plugdev $USER
# Log out and back in
Advanced Topics
Multiple SDR Receivers
Run multiple SDRs simultaneously:
Use cases:
- Monitor multiple NOAA frequencies
- Redundancy (backup receivers)
- Different signal types (weather + FM broadcast)
Configuration:
- All SDRs will appear in Discover Devices
- Add each with unique names
- Configure different frequencies
- Each runs independently
Example setup:
- Receiver 1:
rtlsdr_wx→ 162.550 MHz (NOAA) - Receiver 2:
rtlsdr_fm→ 95500000 Hz (FM broadcast) - Receiver 3:
airspy_backup→ 162.550 MHz (backup)
Capture Modes
Configure in .env:
# IQ mode: Complex 32-bit I/Q samples (for offline analysis)
RADIO_CAPTURE_MODE=iq
# PCM mode: Float32 interleaved I/Q (for direct audio decoders)
RADIO_CAPTURE_MODE=pcm
Capture Duration
# Capture 30 seconds when SAME burst detected
RADIO_CAPTURE_DURATION=30
Signal Analysis Tools
Analyze captured IQ files with:
- GNU Radio - Signal processing and demodulation
- inspectrum - Visual spectrum analyzer
- Custom Python - NumPy/SciPy analysis
Performance Optimization
- Use USB 3.0 ports for higher sample rates
- Avoid USB hubs - Direct motherboard connection
- Monitor CPU usage - High sample rates increase CPU load
- Check for USB dropouts:
dmesg | grep -i usb
Security Considerations
For dedicated SDR stations:
/dev/bus/usb:/dev/bus/usbpassthrough is safe- No other sensitive USB devices connected
For shared systems:
- Consider specific device passthrough
- Use udev rules to restrict by vendor/product ID
Getting Help
If you're still having issues:
- Check logs:
sudo journalctl -u eas-station-sdr -n 100 - Run diagnostics: Web UI or
python scripts/sdr_diagnostics.py - GitHub Issues: https://github.com/KR8MER/eas-station/issues
When reporting issues, include:
- SDR model and driver (RTL-SDR, Airspy, etc.)
- Output of
lsusbon host - Output of
SoapySDRUtil --find - Diagnostic script output
- Relevant log excerpts
Additional Resources
- SoapySDR Documentation: https://github.com/pothosware/SoapySDR/wiki
- RTL-SDR Guide: https://www.rtl-sdr.com/about-rtl-sdr/
- Airspy Documentation: https://airspy.com/
- NOAA Weather Radio: https://www.weather.gov/nwr/
- EAS/SAME Protocol: https://en.wikipedia.org/wiki/Specific_Area_Message_Encoding
Last Updated: 2025-11-30
This document is served from docs/hardware/SDR_SETUP.md in the EAS Station™ installation.