Radiosonde Auto-RX Station.

A full weather balloon receiving station running auto_rx in Docker on a Raspberry Pi 5, registered on SondeHub as KendSond. Covers antenna design, RTL-SDR dongle configuration, Docker Compose setup, and getting the first successful telemetry upload.

Started Jan 2024 Status Active Hardware Raspberry Pi 5, RTL-SDR Blog V4 Tags RTL-SDR Docker 403 MHz

Overview

I've been interested in weather balloon radiosondes for a while — they're launched twice a day by the Met Office and drift over the UK transmitting GPS position and atmospheric data on 403 MHz. With an RTL-SDR dongle and the right software, you can receive them and contribute tracking data to SondeHub.

This writeup covers the full build: antenna, Docker setup, station config, and the debugging process to get a first confirmed decode.

Station hardware overview
// station overview — Pi 5, V4 dongle, and the ground plane antenna on the roof

Hardware

The dongle

I'm using the RTL-SDR Blog V4 dongle, which has a Rafael Micro R828D tuner and covers roughly 500 kHz to 1.75 GHz. Crucially, it has a bias-T for powering active antennas and better thermal stability than the older V3. The driver situation for the V4 is slightly different — it needs rtl-sdr-blog driver rather than the stock librtlsdr.

The V4 dongle won't work with older rtlsdr drivers. Make sure you're pulling rtl-sdr-blog from the correct repo, or the device will appear as an R820T2 and behave erratically on higher frequencies.

Antenna

I built a quarter-wave ground plane for 403 MHz from a BNC chassis connector, four radials, and a vertical element cut to ~185mm. It's mounted on a short mast on the roof, coax running into the shack window.

YAML docker-compose.yml
version: "3"
services:
  auto_rx:
    image: ghcr.io/projecthorus/radiosonde_auto_rx:latest
    container_name: auto_rx
    restart: unless-stopped
    devices:
      - /dev/bus/usb:/dev/bus/usb
    volumes:
      - ./station.cfg:/app/station.cfg
      - ./log:/app/log
    ports:
      - "5000:5000"
    privileged: true

Station Configuration

The station.cfg file controls everything: your callsign, location, upload credentials, and scan frequency ranges. Key settings to get right:

  • Set station_id to your SondeHub callsign — this is how your station appears on the map.
  • rtl_device_idx should match the serial number of your dongle (set it with rtl_eeprom -s MYSERIALNUMBER).
  • Set sondehub_upload to True to enable telemetry upload.
  • Tune min_freq / max_freq to the active window in your region — in the UK that's mainly 400–406 MHz.
INI station.cfg
# Station identity
station_id = KendSond
uploader_callsign = KendSond
uploader_position = [54.322, -2.744, 85]

# SDR device
rtl_device_idx = "KENDSDR"
rtlsdr_ppm = 0
rtlsdr_gain = -1  # -1 = auto gain

# Scan range
min_freq = 400.0
max_freq = 406.0

# Upload
sondehub_upload = True

First Decode

After getting the Docker container up, the first scan ran and picked up an RS41 about 40 km out at 24,000m altitude. The position showed up on SondeHub within a minute.

First confirmed decode: RS41-SGP launched from Watnall (WMO 03354), received at 54.3°N — signal at roughly −95 dBm, clean decode with no errors.

Since then the station has logged several dozen sondes from Watnall, Camborne, and occasionally from further afield when upper winds are favourable.