// SDR IP SERVER BUILD GUIDE

Orange Pi Zero 3Complete SDR IP Server

Everything on one low-cost SBC: 3 receivers, 4 switchable antennas, 30+ decoders — HF to satellite. Controlled entirely from Android.

Armbian 13 Trixie Legacy Kernel 6.6.75 Airspy HF+ RTL-SDR Blog V4 ADS-B + AIS + APRS FT8 + ACARS + HFDL HMC241 RF Switch Android Control
SCROLL
01

Introduction

After nearly one year of kernel crashes, WiFi driver panics, and instability, this configuration has proven rock-solid for 24/7 SDR server operation on the Orange Pi Zero 3 (Allwinner H618 SoC).

The design goal: a compact, low-power, fully headless SDR server accessible entirely over the network — including from an Android smartphone, with no desktop PC required for day-to-day operation.

KEY DISCOVERY The 'current' kernel crashes within hours on this board. The 'legacy' kernel 6.6.75 is the only stable option for SDR server use.
OS
Armbian 13
Trixie — Debian 13
Kernel
6.6.75-legacy
sunxi64 — NOT current
SDR Receivers
3 simultaneous
RTL-SDR V4 + HF+ + ADS-B
Antennas
4 switchable
HMC241 GaAs SP4T
Decoders
30+
FT8 to ADS-B to Satellite
PC Required?
Zero
Full Android control
02

Hardware

Main Board & Power

ComponentDetails
SBCOrange Pi Zero 3 — Allwinner H618, quad-core Cortex-A53 @ 1.5 GHz
RAM1.5 GB LPDDR4
NetworkGigabit Ethernet — WiFi completely disabled
PowerOfficial Raspberry Pi 5V/3A USB-C adapter
USBSDR dongles plug directly into the Orange Pi Zero 3 USB hat connector — no external hub
EnclosureCustom box — SBC, RF switch, filters, all cabling inside

SDR Receivers

RTL-SDR BLOG V4 HF NOTE RTL-SDR Blog V4 has a built-in HF upconverter — it receives HF frequencies natively. No direct sampling mode needed. Simply tune below 28.8 MHz.
DeviceFrequencyRoleHF Capability
RTL-SDR Blog V4500 kHz – 1766 MHzGeneral purpose RXBuilt-in HF upconverter
RTL-SDR (ADS-B)1090 MHzADS-B aircraft tracking
Airspy Discovery HF+0.5 kHz – 31 MHz + VHFHF + VHF high dynamic rangeNative HF, best-in-class

RF Switch — HMC241 (Analog Devices GaAs SP4T)

The Airspy Discovery HF+ is connected through an HMC241 GaAs MMIC SP4T switch, allowing SpyServer to select between 4 antennas via 2 GPIO pins.

SpecValue
PartHMC241ALP3E — Analog Devices / Hittite
TypeGaAs MMIC SP4T Non-Reflective Switch
FrequencyDC to 4 GHz
Insertion Loss0.7 dB @ 2 GHz
Isolation43 dB @ 2 GHz
Control2-pin TTL/CMOS — integrated 2:4 decoder on chip
Supply3V–5V — powered from Orange Pi 3.3V GPIO pin

GPIO Truth Table — Antenna Selection

CTRL_ACTRL_BPortAntenna
00RF1Quadrifilar helix 145 MHz — self-built, LEO satellites, circularly polarized
10RF2V-dipole 137 MHz — NOAA/Meteor weather satellites
01RF3YouLoop — passive magnetic loop for HF
11RF416.5m random wire — broadband HF

Antennas

AntennaBandNotes
Quadrifilar Helix (QFH)145 MHzSelf-built — circularly polarized, excellent for LEO satellite passes
V-dipole137 MHzNOAA/Meteor-M weather satellite image reception
YouLoopHFNoise-cancelling passive magnetic loop — excellent in urban environments
16.5m random wireHF broadbandWide HF coverage via 9:1 unun + toroid choke
ADS-B antenna1090 MHzDirect to RTL-SDR ADS-B dongle
DisconeVHF/UHF broadbandDirect to RTL-SDR Blog V4

RF Filtering & Chokes

03

The Critical Choice — Legacy Kernel

WARNING — READ THIS FIRST The 'current' kernel crashes within hours on Orange Pi Zero 3 under SDR load. One year of testing confirmed this. Always install the legacy kernel.
BranchPackageResult
current linux-image-current-sunxi64 CRASH within hours
legacy ✓ linux-image-legacy-sunxi64 STABLE — days of uptime

Install Legacy Kernel

sudo apt install linux-image-legacy-sunxi64 linux-dtb-legacy-sunxi64
sudo reboot
uname -r   # Expected: 6.6.75-legacy-sunxi64
04

SDR Software Stack

SoftwareProtocol / PortSDR DeviceClient
OpenWebRX+Web — :8073Airspy HF+ / RTL-SDR V4Any browser
SpyServerTCP — :5432Airspy HF+ via RF switchSDR++Brown, SDRAngel
rtl_tcp (V4)TCP — :1234RTL-SDR Blog V4SDR++Brown, SDRAngel, GQRX
rtl_tcp (ADS-B)TCP — :1235RTL-SDR ADS-B dongledump1090, Virtual Radar
Radiosonde auto_rxWeb — custom portRTL-SDR V4Any browser

Package Repositories

SoftwareSource
OpenWebRX+repo.openwebrx.de/debian/ bookworm main
OpenWebRX Plus (luarvique)luarvique.github.io/ppa/trixie ./
RTL-SDR Blog V4 driversRTL-SDR Blog official repo — rtl-sdr.com (NOT Debian repo)
SpyServerairspy.com/download/ — arm64 binary, manual install
Radiosonde auto_rxgithub.com/projecthorus/radiosonde_auto_rx
SoapySDR / Airspy HF+apt install soapysdr-module-airspyhf (then apply library fix — Section 6)
05

Supported Decoders — 30+

All decoders run simultaneously on the same hardware. Grouped by band and protocol type:

HF Decoders

FT8
FT4
WSPR
JT65
JT9
CW
CW Skimmer
RTTY
SITOR-B
NAVTEX
HFDL
DRM
FreeDV
FAX/WEFAX
SSTV
SAM
SELCALL

VHF / Marine / Aviation

AIS
APRS
ADS-B
ACARS
VDL Mode 2
RDS
DAB

Digital Voice

DMR
D-Star
YSF
NXDN
P25
POCSAG
FLEX

IoT & Sensors

ISM / rtl_433
Weather Stations
TPMS
Smart Meters

Satellite & Radiosonde

NOAA APT
Meteor-M LRPT
RS41 Radiosonde
RS92
DFM09
M10 / M20

SDR++Brown Exclusive

Baseband NR
Audio NR (logMMSE)
Audio NR (OMLSA)
FT8 built-in
KiwiSDR client
06

Critical System Tweaks

1 — RTL-SDR DVB Module Blacklist

Linux loads DVB-T drivers for RTL-SDR dongles by default. Blacklist them:

blacklist dvb_usb_rtl28xxu
blacklist rtl2832
blacklist rtl2830
install dvb_usb_rtl28xxu /bin/true
install rtl2832 /bin/true
sudo update-initramfs -u && sudo reboot

2 — Disable WiFi & Bluetooth (aw859a)

The H618 WiFi driver causes kernel instability. Mask and blacklist completely:

sudo systemctl mask aw859a-wifi.service
sudo systemctl mask aw859a-bluetooth.service
# Add to /etc/modprobe.d/wifi-blacklist.conf:
blacklist sprdwl_ng
blacklist uwe5622_bsp_sdio
blacklist panfrost

3 — CPU Governor: schedutil

Default 'performance' governor keeps CPU at max. schedutil scales dynamically. Temperature dropped ~8-10°C.

echo schedutil | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
sudo sed -i 's/^GOVERNOR=.*/GOVERNOR=schedutil/' /etc/default/cpufrequtils
sudo sed -i 's/^ENABLE=false/ENABLE=true/' /etc/default/cpufrequtils

4 — USB Autosuspend (Critical for SDR Dongles)

Without this, USB dongles enter sleep and become unresponsive. Add to /boot/armbianEnv.txt extraargs:

usbcore.autosuspend=-1

5 — Disable Unnecessary Services

sudo systemctl disable --now exim4
sudo truncate -s 0 /var/log/exim4/paniclog
sudo systemctl mask systemd-networkd-wait-online
sudo systemctl mask systemd-networkd-wait-online@.service
sudo systemctl mask alsa-utils.service
sudo systemctl mask fake-hwclock.service

6 — SoapySDR / SpyServer Library Conflict

CRITICAL FIX When SoapySDR updates, it overwrites libairspyhfSupport.so with an incompatible version. SpyServer silently fails. OpenWebRX keeps working. This is the most common post-update breakage.
# Copy working version from /usr/local to system path
sudo cp /usr/local/lib/SoapySDR/modules0.8/libairspyhfSupport.so \
        /usr/lib/SoapySDR/modules0.8/libairspyhfSupport.so

# Lock BOTH files — apt can never overwrite them
sudo chattr +i /usr/lib/SoapySDR/modules0.8/libairspyhfSupport.so
sudo chattr +i /usr/local/lib/SoapySDR/modules0.8/libairspyhfSupport.so

# Verify — look for 'i' in the output
lsattr /usr/lib/SoapySDR/modules0.8/libairspyhfSupport.so
# Expected: ----i---------e------- .../libairspyhfSupport.so

To update the library manually in the future:

sudo chattr -i /usr/lib/SoapySDR/modules0.8/libairspyhfSupport.so
# ... make changes, then re-lock:
sudo chattr +i /usr/lib/SoapySDR/modules0.8/libairspyhfSupport.so
07

RF Switch GPIO Control

The HMC241 is controlled by two GPIO pins. A Python script selects the active antenna — callable from SpyServer or the SSH Button Android app.

WIRING NOTE HMC241 is TTL/CMOS compatible. Orange Pi Zero 3 GPIO is 3.3V — connect directly, no level shifter needed. Power the switch from the 3.3V GPIO pin.

Python GPIO Control

import OPi.GPIO as GPIO

GPIO.setmode(GPIO.SUNXI)
CTRL_A = 'PA6'   # Adjust to your wiring
CTRL_B = 'PA7'   # Adjust to your wiring
GPIO.setup(CTRL_A, GPIO.OUT)
GPIO.setup(CTRL_B, GPIO.OUT)

def select_antenna(port):  # port = 1, 2, 3 or 4
    GPIO.output(CTRL_A, port & 1)
    GPIO.output(CTRL_B, (port >> 1) & 1)

SpyServer Config

bind_host = 0.0.0.0
bind_port = 5432
list_in_directory = 1
08

Full Android Control — No PC Required

Complete operation from an Android smartphone. Every function of the SDR server is accessible without touching a desktop computer.

📻
SDR++Brown
The recommended client for HF. Fork of SDR++ by Sanny Sanoff with Android-optimized UI and unique signal processing. The only SDR software applying noise reduction to the entire wideband IQ stream — visible in the waterfall. Remarkable for weak HF signals.
SpyServer :5432 rtl_tcp :1234 Baseband NR FT8 built-in DSD decoder KiwiSDR
📡
SDRAngel
Full-featured SDR application with excellent Android support. Supports ADS-B, AIS, APT satellite, RS41 Radiosonde, APRS, digital voice and more.
SpyServer rtl_tcp ADS-B map APT satellite Radiosonde
🌐
Samsung Internet Browser
Use Samsung Browser instead of Chrome for OpenWebRX+ and Radiosonde tracker. Smoother waterfall rendering, better touch interaction on the frequency controls.
OpenWebRX+ :8073 Radiosonde web Better waterfall
SSH Button
One-tap SSH command execution. Used for RF switch antenna selection and service management. No need to open a full terminal for routine operations.
Antenna 1: rfswitch.py 1 Antenna 2: rfswitch.py 2 Start/stop services
09

Installation Guide — Step by Step

1 — Flash Armbian Trixie Image

Download the Armbian 13 (Trixie) image for Orange Pi Zero 3 from armbian.com. Choose the Debian Trixie variant — not Ubuntu.

# Write to SD card (replace /dev/sdX with your card)
dd if=Armbian_26.x_Orangepizero3_trixie_*.img of=/dev/sdX bs=4M status=progress
sync
USE BALENAETCHER ON WINDOWS/MAC balenaetcher.io — drag and drop, no command line needed.

2 — Install Legacy Kernel + DTB (CRITICAL)

ALWAYS INSTALL KERNEL AND DTB TOGETHER The DTB (Device Tree Blob) must match the kernel exactly. If you update the kernel without updating the DTB — or vice versa — the system will NOT boot. Always run these two packages together as one command.
# Install legacy kernel AND DTB together — never one without the other
sudo apt update
sudo apt install linux-image-legacy-sunxi64 linux-dtb-legacy-sunxi64

# Remove current kernel to prevent accidental boot into wrong kernel
sudo apt remove linux-image-current-sunxi64

# Reboot into legacy kernel
sudo reboot

# Verify after reboot
uname -r
# Expected: 6.6.75-legacy-sunxi64
FUTURE UPDATES — ALWAYS UPDATE BOTH When running apt upgrade, always explicitly include both packages: sudo apt upgrade linux-image-legacy-sunxi64 linux-dtb-legacy-sunxi64 Never just run apt upgrade alone without checking these are included — a kernel update without DTB update = unbootable system.

⚠ After first boot, immediately disable WiFi and BT drivers. → See Section 06, Tweak 2: Disable WiFi & Bluetooth

⚠ Set USB autosuspend and CPU governor. → See Section 06, Tweaks 3 & 4

⚠ Disable unnecessary services. → See Section 06, Tweak 5

3 — Verify Armbian Sources (Trixie)

Armbian Trixie repo is pre-configured in the image. Verify it is correct:

cat /etc/apt/sources.list.d/armbian.sources
# Should show: Suites: trixie

4 — RTL-SDR Blog V4 Drivers

Do NOT use the Debian repo rtl-sdr package — install from RTL-SDR Blog source for V4 support:

⚠ After installing, apply the DVB blacklist. → See Section 06, Tweak 1: RTL-SDR DVB Module Blacklist

sudo apt install libusb-1.0-0-dev git cmake
git clone https://github.com/rtlsdrblog/rtl-sdr-blog
cd rtl-sdr-blog && mkdir build && cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make && sudo make install
sudo cp ../rtl-sdr.rules /etc/udev/rules.d/
sudo ldconfig
sudo udevadm control --reload-rules && sudo udevadm trigger
# Add user to plugdev group
sudo usermod -aG plugdev $USER
VERIFY Plug in RTL-SDR V4 and run: rtl_test — should detect device without DVB errors.

5 — SoapySDR + Airspy HF+ Support

⚠ After installing, immediately apply the library lock. → See Section 06, Tweak 6: SoapySDR / SpyServer Library Conflict

sudo apt install soapysdr-tools libsoapysdr-dev soapy-connector
sudo apt install soapysdr-module-airspyhf
# Verify Airspy HF+ is detected:
SoapySDRUtil --find
# Should show: airspyhf
IMPORTANT — Apply Library Fix Immediately After installing, apply the chattr +i fix before installing SpyServer. Otherwise SpyServer will detect the wrong library version and fail silently. → Section 06, Tweak 6

6 — OpenWebRX+ Installation

# Add OpenWebRX repo
wget -O - https://repo.openwebrx.de/debian/key.gpg | sudo apt-key add -
echo "deb https://repo.openwebrx.de/debian/ bookworm main" | \
  sudo tee /etc/apt/sources.list.d/openwebrx.list

# Add OpenWebRX Plus (luarvique fork — more decoders)
wget -O - https://luarvique.github.io/ppa/openwebrx-plus.gpg | \
  sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/openwebrx-plus.gpg
echo "deb [signed-by=/etc/apt/trusted.gpg.d/openwebrx-plus.gpg] \
  https://luarvique.github.io/ppa/trixie ./" | \
  sudo tee /etc/apt/sources.list.d/openwebrx-plus.list

sudo apt update && sudo apt install openwebrx

7 — OpenWebRX+ External Decoder Plugins

These are the external decoder tools OpenWebRX+ uses in the background. Install all for full decoder support:

sudo apt install \
  dump1090-fa-minimal \
  dump978-fa-minimal \
  dumphfdl \
  dumpvdl2 \
  acarsdec \
  libacars2 \
  multimon-ng \
  redsea \
  csdr-skimmer \
  sonde-decoders \
  faad \
  direwolf
PackageDecodes
dump1090-fa-minimalADS-B 1090 MHz — aircraft position
dump978-fa-minimalUAT 978 MHz — US aircraft traffic
dumphfdlHFDL — aircraft position over HF
dumpvdl2VDL Mode 2 — aircraft VHF datalink
acarsdec + libacars2ACARS — aircraft communications
multimon-ngPOCSAG, FLEX, DTMF, EAS pagers
redseaRDS — FM broadcast station data
csdr-skimmerCW skimmer — full-band Morse decode
sonde-decodersRS41, DFM, M10 radiosondes
faadDAB / AAC digital radio
direwolfAIS, APRS packet decoder

8 — SpyServer Installation

⚠ Make sure the SoapySDR library fix is applied BEFORE starting SpyServer. → See Section 06, Tweak 6

# Create directory and download binary
mkdir ~/spyserver_arm64 && cd ~/spyserver_arm64
wget https://airspy.com/downloads/spyserver-arm64.tgz
tar xvf spyserver-arm64.tgz
chmod +x spyserver

# Create config file
cat > spyserver.config << 'EOF'
bind_host = 0.0.0.0
bind_port = 5432
list_in_directory = 1
owner_name =
owner_email =
EOF

# Create systemd service
sudo tee /etc/systemd/system/spyserver.service << 'EOF'
[Unit]
Description=SpyServer for Airspy HF+
After=NetworkManager-wait-online.service

[Service]
User=sdruser
WorkingDirectory=/home/sdruser/spyserver_arm64
ExecStart=/home/sdruser/spyserver_arm64/spyserver \
    /home/sdruser/spyserver_arm64/spyserver.config
StandardOutput=append:/home/sdruser/spyserver_arm64/spyserver.log
StandardError=append:/home/sdruser/spyserver_arm64/spyserver.err

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable spyserver

9 — rtl_tcp Services

Two separate rtl_tcp instances — one for RTL-SDR V4 (general), one for ADS-B. They conflict with radiosonde since all use the RTL-SDR hardware.

# RTL-SDR V4 service (device index 1)
sudo tee /etc/systemd/system/rtl_tcp.service << 'EOF'
[Unit]
Description=RTL-SDR TCP Server
After=network.target
Conflicts=radiosonde.service

[Service]
Type=simple
ExecStart=/usr/local/bin/rtl_tcp -a 0.0.0.0 -p 8091 -d 1 -s 2048000 -b 30
User=sdruser
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
EOF

# ADS-B RTL-SDR service (device index 0)
sudo tee /etc/systemd/system/rtl_tcp_adsb.service << 'EOF'
[Unit]
Description=RTL-SDR ADSB TCP Server
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/rtl_tcp -a 0.0.0.0 -p 8092 -d 0 -s 2048000 -b 30
User=sdruser

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
SERVICE CONFLICT LOGIC rtl_tcp and radiosonde.service both use the RTL-SDR V4. The Conflicts= directive ensures they never run simultaneously. Use OWon.sh / OWoff.sh scripts to switch modes.

10 — Radiosonde auto_rx Installation

cd ~
git clone https://github.com/projecthorus/radiosonde_auto_rx
cd radiosonde_auto_rx

# Create Python virtualenv
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
deactivate

# Create systemd service
sudo tee /etc/systemd/system/radiosonde.service << 'EOF'
[Unit]
Description=Radiosonde Auto RX
After=network.target
Conflicts=rtl_tcp.service

[Service]
Type=simple
User=sdruser
WorkingDirectory=/home/sdruser/radiosonde_auto_rx/auto_rx
ExecStart=/home/sdruser/radiosonde_auto_rx/venv/bin/python3 auto_rx.py
Restart=no
TimeoutStopSec=10
KillMode=control-group

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload

11 — RF Switch Script (rf_setter.py)

Uses gpioset from libgpiod — no Python GPIO library needed. GPIO pins: gpiochip0, pins 72 and 79.

cat > /home/sdruser/rf_setter.py << 'EOF'
import sys
import subprocess

def menu():
    print("\n=== RF SWITCH MENU ===")
    print("1. Quadrifilar Helix 145 MHz")
    print("2. 9:1 Unun (Random Wire HF)")
    print("3. V-Dipole 137 MHz")
    print("4. YouLoop (HF)")
    print("5. OWon  (OpenWebRX mode)")
    print("6. OWoff (SpyServer mode)")
    print("======================")
    return input("Select: ").strip()

if len(sys.argv) < 2:
    secim = menu()
else:
    secim = sys.argv[1].strip()

komut = []
rf_ismi = ""

if secim in ("1", "0"):
    komut = ["gpioset", "-t", "0", "-c", "gpiochip0", "72=0", "79=0"]
    rf_ismi = "Quadrifilar Helix"
elif secim == "2":
    komut = ["gpioset", "-t", "0", "-c", "gpiochip0", "72=1", "79=0"]
    rf_ismi = "9:1 Unun (Random Wire)"
elif secim == "3":
    komut = ["gpioset", "-t", "0", "-c", "gpiochip0", "72=0", "79=1"]
    rf_ismi = "V-Dipole 137 MHz"
elif secim == "4":
    komut = ["gpioset", "-t", "0", "-c", "gpiochip0", "72=1", "79=1"]
    rf_ismi = "YouLoop"
elif secim == "5":
    komut = ["bash", "/home/sdruser/OWon.sh"]
    rf_ismi = "OpenWebRX mode activated"
elif secim == "6":
    komut = ["bash", "/home/sdruser/OWoff.sh"]
    rf_ismi = "SpyServer mode activated"
else:
    print("Invalid selection!")
    sys.exit(1)

try:
    subprocess.run(komut, check=True)
    print(f"OK: {rf_ismi}")
except subprocess.CalledProcessError as e:
    print(f"Error: {e}")
EOF
# Install libgpiod tools (required for gpioset)
sudo apt install gpiod

12 — Mode Switching Scripts (OWon / OWoff)

Airspy HF+ can only be used by one application at a time — either OpenWebRX or SpyServer. These scripts handle the switching:

# OWon.sh — Switch to OpenWebRX mode
cat > /home/sdruser/OWon.sh << 'EOF'
#!/bin/bash
sudo systemctl stop spyserver
sudo systemctl start rtl_tcp
sudo systemctl start rtl_tcp_adsb
sudo systemctl start openwebrx
echo "OpenWebRX activated, SpyServer stopped, RTL-TCP servers started."
EOF
chmod +x /home/sdruser/OWon.sh

# OWoff.sh — Switch to SpyServer mode
cat > /home/sdruser/OWoff.sh << 'EOF'
#!/bin/bash
sudo systemctl stop openwebrx
sudo systemctl start rtl_tcp
sudo systemctl start rtl_tcp_adsb
sudo systemctl start spyserver
echo "SpyServer activated, OpenWebRX stopped, RTL-TCP servers started."
EOF
chmod +x /home/sdruser/OWoff.sh
SSH BUTTON INTEGRATION Configure SSH Button on Android with these commands for one-tap switching: python3 /home/sdruser/rf_setter.py 1 → Quadrifilar Helix python3 /home/sdruser/rf_setter.py 5 → OpenWebRX mode python3 /home/sdruser/rf_setter.py 6 → SpyServer mode
10

Quick Setup Checklist

11

Developed with Claude AI

This entire SDR server setup — from diagnosing kernel crashes to fixing the SoapySDR library conflict, optimizing system services, and writing this guide — was developed collaboratively with Claude, the AI assistant by Anthropic.

Over multiple sessions, Claude helped:

  • ◆ Identify the legacy vs current kernel issue after 1 year of failed attempts
  • ◆ Analyze system logs in real time and fix every warning and error
  • ◆ Discover and resolve the SoapySDR / SpyServer library conflict
  • ◆ Optimize CPU governor, USB power management, and services
  • ◆ Research and verify the HMC241 RF switch GPIO wiring
  • ◆ Write and format this complete documentation
"I spent a year fighting this board alone. With Claude, we solved everything in a few sessions — logs, kernel choice, library conflicts, GPIO wiring, the whole setup."

Claude is available at claude.ai — highly capable for technical problem solving, embedded Linux, RF engineering, and system administration. If you are building an SDR server or debugging embedded Linux, Claude can save you days of work.

12

Summary

MetricResult
Uptime3+ days continuous — zero crashes
SDR receivers3 simultaneous (RTL-SDR Blog V4, ADS-B, Airspy HF+)
Switchable antennas4 via HMC241 GaAs SP4T RF switch
ProtocolsSpyServer :5432, rtl_tcp :1234/:1235, OpenWebRX+ web, Radiosonde web
Android clientsSDR++Brown, SDRAngel, Samsung Browser, SSH Button
Desktop PC needed?No — full Android operation
CPU temperature~45-55°C with schedutil governor
Power5V/3A — official Raspberry Pi adapter
Developed withClaude AI — claude.ai by Anthropic
SHARE THIS It took a year to figure this out. Post it on forum.armbian.com and r/RTLSDR — save others the trouble.