Monday, September 21, 2026

Cara Update Radiosonde Auto-RX Dengan Selamat Tanpa Rosakkan Setup KA9Q + Airspy Mini

 


Kalau anda menggunakan Radiosonde Auto-RX bersama KA9Q dan Airspy Mini, proses update sepatutnya dibuat dengan berhati-hati. Update Docker secara generik boleh menyebabkan sistem yang sebelum ini stabil tiba-tiba hilang spectrum, gagal scan, atau memaparkan error seperti:

ka9q powers call failed with return code 124
SDR produced no output

Dalam pengalaman setup ini, masalah tersebut bukan berpunca daripada Airspy Mini yang rosak. Airspy masih boleh dikesan, ditune dan melakukan direct IQ capture dengan baik. Punca sebenar lebih kepada kombinasi container Auto-RX, mount KA9Q, versi software dan konfigurasi yang berubah selepas update.

Objektif Panduan Ini

Kita akan bina satu Safe Update Script yang melakukan semuanya secara automatik:

· Backup fail station.cfg sebelum update.

· Simpan Docker image lama sebagai rollback image.

· Pull image Auto-RX terbaru.

· Recreate container dengan mount DBus dan Avahi yang diperlukan KA9Q.

· Buat health check selepas update.

· Rollback secara automatik jika scanner menunjukkan error utama.

Nota penting: Panduan ini ditulis untuk setup KA9Q + Airspy Mini. Jika anda menggunakan RTL-SDR biasa tanpa KA9Q, command Docker mungkin berbeza.

 

Golden Configuration Yang Sudah Stabil

Untuk setup yang sudah pulih dan stabil, konfigurasi rujukan ialah:

SDR        : Airspy Mini
KA9Q       : sonde.local
Auto-RX    : Docker
Docker tag : testing
KA9Q freq  : 405.6 MHz
Scan range : 400.05 - 405.0 MHz

Bahagian Airspy dalam konfigurasi KA9Q:

[airspy]
device = airspy
description = "auto_rx"
frequency = 405m6
gainstep = 17

Julat scan Auto-RX:

min_freq = 400.05
max_freq = 405.0

1. Elakkan update dengan command Docker generik

Untuk setup KA9Q, jangan sekadar pull image dan recreate container tanpa mount tambahan. Container KA9Q memerlukan akses DBus dan Avahi supaya nama seperti sonde.local boleh digunakan dengan betul.

docker pull ghcr.io/projecthorus/radiosonde_auto_rx:latest
docker stop radiosonde_auto_rx
docker rm radiosonde_auto_rx
docker run ...

Untuk KA9Q, gunakan kaedah safe update di bawah.

2. Buat folder backup

Folder ini akan menyimpan setiap salinan station.cfg sebelum update.

mkdir -p ~/radiosonde_auto_rx/backups

3. Bina Safe Update Script

Script di bawah akan backup config, simpan image lama, pull image baru, recreate container, semak log dan rollback jika perlu.

nano ~/update_autorx_safe.sh

Paste keseluruhan script berikut:

#!/bin/bash
set -e

IMAGE="ghcr.io/projecthorus/radiosonde_auto_rx:testing"
NAME="radiosonde_auto_rx"
CFG="$HOME/radiosonde_auto_rx/station.cfg"
LOGDIR="$HOME/radiosonde_auto_rx/log"
BACKUPDIR="$HOME/radiosonde_auto_rx/backups"

echo
echo "=========================================="
echo " Radiosonde Auto-RX SAFE UPDATE"
echo "=========================================="
echo

mkdir -p "$BACKUPDIR"

echo "[1/6] Backup station.cfg..."
STAMP=$(date +%Y%m%d_%H%M%S)
cp -a "$CFG" "$BACKUPDIR/station.cfg.$STAMP"
echo "Backup: $BACKUPDIR/station.cfg.$STAMP"
echo

echo "[2/6] Saving current Docker image..."
OLD_IMAGE=$(docker inspect -f '{{.Image}}' "$NAME" 2>/dev/null || true)

if [ -n "$OLD_IMAGE" ]; then
    docker tag "$OLD_IMAGE" radiosonde_auto_rx:rollback
    echo "Rollback image created: radiosonde_auto_rx:rollback"
else
    echo "No existing Auto-RX container found."
fi

echo
echo "[3/6] Pulling latest Auto-RX testing image..."
docker pull "$IMAGE"

echo
echo "[4/6] Recreating Auto-RX container..."
docker stop "$NAME" 2>/dev/null || true
docker rm "$NAME" 2>/dev/null || true

docker run \
-d \
--name "$NAME" \
--restart=always \
--device=/dev/bus/usb \
--network=host \
-v "$CFG":/opt/auto_rx/station.cfg:ro \
-v "$LOGDIR":/opt/auto_rx/log/ \
-v /var/run/dbus:/var/run/dbus \
-v /var/run/avahi-daemon/socket:/var/run/avahi-daemon/socket \
"$IMAGE"

echo
echo "Waiting for Auto-RX to start..."
sleep 35

echo
echo "[5/6] Checking Auto-RX health..."

ERRORS=$(docker logs --since 40s "$NAME" 2>&1 | \
grep -E 'return code 124|Could not contact KA9Q|SDR produced no output|Scanner Thread Closed' || true)

if [ -n "$ERRORS" ]; then
    echo
    echo "=========================================="
    echo " UPDATE FAILED - AUTO ROLLBACK STARTED"
    echo "=========================================="
    echo "$ERRORS"

    docker stop "$NAME" 2>/dev/null || true
    docker rm "$NAME" 2>/dev/null || true

    if docker image inspect radiosonde_auto_rx:rollback >/dev/null 2>&1; then
        echo "Restoring previous working image..."

        docker run \
        -d \
        --name "$NAME" \
        --restart=always \
        --device=/dev/bus/usb \
        --network=host \
        -v "$CFG":/opt/auto_rx/station.cfg:ro \
        -v "$LOGDIR":/opt/auto_rx/log/ \
        -v /var/run/dbus:/var/run/dbus \
        -v /var/run/avahi-daemon/socket:/var/run/avahi-daemon/socket \
        radiosonde_auto_rx:rollback

        echo "Rollback complete."
    else
        echo "ERROR: No rollback image available!"
        exit 1
    fi
else
    echo
    echo "=========================================="
    echo " UPDATE SUCCESSFUL"
    echo "=========================================="
    docker ps --filter name="$NAME"
    echo
    echo "Latest Auto-RX logs:"
    docker logs --tail 25 "$NAME"
fi

echo
echo "[6/6] Finished."
echo

4. Simpan script

Dalam Nano, tekan Ctrl+O, Enter dan Ctrl+X.

5. Jadikan script executable

Selepas simpan, beri permission supaya script boleh dijalankan terus.

chmod +x ~/update_autorx_safe.sh

6. Cara update selepas ini

Selepas script siap, setiap kali mahu update Auto-RX anda hanya perlu satu command.

~/update_autorx_safe.sh

Apa Yang Script Ini Buat?

station.cfg
     |
     v
BACKUP CONFIG
     |
     v
SAVE DOCKER IMAGE LAMA
     |
     v
PULL AUTO-RX TERBARU
     |
     v
RECREATE CONTAINER
     |
     v
WAIT 35 SECONDS
     |
     v
CHECK LOG
     |
     +--> OK -----> KEEP NEW VERSION
     |
     +--> ERROR --> AUTO ROLLBACK

Antara error yang dicari secara automatik:

return code 124

Could not contact KA9Q

SDR produced no output

Scanner Thread Closed

Kenapa Guna Image testing?

Dalam setup KA9Q ini, gunakan image:

ghcr.io/projecthorus/radiosonde_auto_rx:testing

Container juga perlu mount:

/var/run/dbus
/var/run/avahi-daemon/socket

Ini membolehkan Auto-RX berkomunikasi dengan KA9Q melalui hostname seperti sonde.local.

Jangan Update KA9Q Serentak Dengan Auto-RX

Kalau tujuan anda hanya mahu update Radiosonde Auto-RX, jangan terus buat update source KA9Q pada masa yang sama. Elakkan command seperti:

cd ~/ka9q-radio
git checkout main
git pull
make clean
make
sudo make install

Update satu komponen pada satu masa. Jika Auto-RX sudah stabil, biarkan KA9Q pada versi yang sedang berfungsi. Update KA9Q hanya apabila dokumentasi versi Auto-RX memang memerlukan perubahan tersebut.

Command Pantas Selepas Update

Semak container

docker ps

Pastikan radiosonde_auto_rx berstatus Up.

Semak log Auto-RX

docker logs --tail 50 radiosonde_auto_rx

Log yang sihat biasanya mengandungi mesej seperti Running frequency scan dan tidak berulang-ulang dengan return code 124.

Semak KA9Q

control sonde.local

Jika keluar senarai SSRC, preset, sample rate, frequency dan SNR, KA9Q sedang berkomunikasi.

Semak Spectrum Dalam Web UI

Buka web Auto-RX melalui:

http://IP-RASPBERRY-PI:5000

Spectrum yang normal sepatutnya mempunyai noise floor, signal peaks, frequency scan dan peak detection. Jika hanya garis kosong dengan No scan data yet dan log menunjukkan return code 124, jangan terus anggap Airspy rosak.

Ujian Airspy Jika Ragu-Ragu

Semak dahulu dongle:

airspy_info

Untuk direct IQ capture, hentikan radiod sementara:

sudo systemctl stop radiod@airspymini-autorx

Kemudian jalankan:

rm -f /tmp/airspy-test.iq

airspy_rx \
-r /tmp/airspy-test.iq \
-f 405.0 \
-a 6000000 \
-g 17 \
-n 3000000 \
-d

Semak hasil:

ls -lh /tmp/airspy-test.iq

Jika fail beberapa MB terhasil tanpa USB/streaming error, Airspy masih boleh tune, sample dan stream data. Selepas ujian:

sudo systemctl start radiod@airspymini-autorx

Kesimpulan

Prinsip paling penting untuk setup Radiosonde Auto-RX + KA9Q + Airspy Mini ialah: jangan update semua benda serentak.

BACKUP
   |
   v
SAVE WORKING IMAGE
   |
   v
UPDATE AUTO-RX
   |
   v
HEALTH CHECK
   |
   v
STABLE?
   |
   +--> YES -> KEEP
   +--> NO  -> ROLLBACK

Dengan update_autorx_safe.sh, proses update selepas ini hanya memerlukan satu command:

~/update_autorx_safe.sh

Jika image baru bermasalah, sistem masih mempunyai working image lama untuk rollback tanpa perlu mengusik KA9Q, FFTW wisdom atau konfigurasi Airspy Mini yang sudah stabil. Semoga bermanfaat de 9m2zak.

Thursday, April 2, 2026

Setup KA9Q-Radio radiosonde_auto_rx airspy mini


                            

Setup KA9Q-Radio + radiosonde_auto_rx (Airspy mini + Raspberry Pi + Docker)

1. Objektif Setup

Manual ini bertujuan untuk menggunakan KA9Q-Radio sebagai SDR server, memantau band radiosonde (400–406 MHz) secara serentak, dan integrasi dengan radiosonde_auto_rx menggunakan Docker.

Kelebihan:
- Lebih efisien CPU
- Decode banyak sonde serentak
- Sesuai untuk Airspy

2. Keperluan Sistem


Hardware:

- Raspberry Pi 4 / 5
- Airspy R2 / Airspy Mini
- Antena UHF

OS:
- Raspberry Pi OS atau Ubuntu 22.04

3. Install Dependencies

sudo apt update
sudo apt install -y avahi-utils build-essential make gcc libairspy-dev libairspyhf-dev libavahi-client-dev libbsd-dev libfftw3-dev libhackrf-dev libiniparser-dev libncurses5-dev libopus-dev librtlsdr-dev libusb-1.0-0-dev libusb-dev portaudio19-dev libasound2-dev libogg-dev uuid-dev rsync time git libsamplerate-dev

4. Install KA9Q-Radio

git clone https://github.com/ka9q/ka9q-radio.git
cd ka9q-radio
git checkout e1224dcd1991637ba8e1caa68cd802e1b22933de
make
sudo make install

5. Tambah User ke Group radio

sudo usermod -aG radio $(whoami)
reboot

6. Generate FFTW Wisdom

langkah penting untuk optimakan prestasi FFT dalam KA9Q-Radio. proses ini boleh ambil masa 2 jam, jadi memang sesuai dibuat waktu malam

cd /etc/fftw/
time sudo fftwf-wisdom -v -T 1 -o nwisdom rof300000 cob2400 cob1250 cob1202 cob1200
sudo cp -i nwisdom wisdomf

7. Konfigurasi KA9Q (Airspy)

untuk Airspy R2 / HydraSDR, frekuensi tengah perlu diletakkan sekurang-kurangnya 600 kHz di atas frekuensi tertinggi yang anda mahu pantau. Contoh, kalau mahu liputan 400–406 MHz, set frequency = 407m0. Airspy R2 / HydraSDR boleh beri kira-kira 8 MHz usable bandwidth pada mod real 20 MHz

sudo nano /etc/radio/radiod@airspymini-autorx.conf

[global]
hardware = airspy
mode = fm
status = sonde.local
iface = lo
ttl = 0
data = sonde-pcm.local

[airspy]
device = airspy
description = "auto_rx"
frequency = 405m6
gainstep = 17

[telemetry]
freq = "401m50"

[manual-400]
freq = 0
ttl = 0

Airspy Mini secara default beri kira-kira 5 MHz usable bandwidth pada 12 MHz real sample rate. Jadi kalau mahu cover 400–405 MHz, boleh set 405m6. kalau kawasan anda lebih banyak sonde di bahagian atas band, boleh pilih 406m6 untuk liputan 401–406 MHz. 

Airspy Mini juga boleh dipaksa jalan pada 20 MHz dengan buka komen samprate = 20000000, tetapi akan ada lebih banyak spurs pada kadar itu

8. Start Service

sudo systemctl enable radiod@airspymini-autorx
sudo systemctl start radiod@airspymini-autorx

9. Test KA9Q

control sonde.local

kalau tidak keluar apa-apa maknanya anda gagal, so sila patah balik ke step 3 sampai 8. Jika berjaya dia akan keluar macam di bawah ni. 


10. Setup Docker radiosonde_auto_rx

       Jika kamu guna OS Trixie, boleh install guna comand ini. 

       sudo apt-get install docker.io

    sudo usermod -aG docker $(whoami)

echo 'blacklist dvb_usb_rtl28xxu' | sudo tee /etc/modprobe.d/blacklist-dvb_usb_rtl28xxu.conf sudo modprobe -r dvb_usb_rtl28xxu
mkdir -p ~/radiosonde_auto_rx/log curl -o ~/radiosonde_auto_rx/station.cfg https://raw.githubusercontent.com/projecthorus/radiosonde_auto_rx/master/auto_rx/station.cfg.example
kemudian edit file station.cfg,

nano ~/radiosonde_auto_rx/station.cfg
Tapi jika kamu guna Bookworm dan ke bawah, maka kamu guna ini:

curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
sudo usermod -aG docker $(whoami)
echo 'blacklist dvb_usb_rtl28xxu' | sudo tee /etc/modprobe.d/blacklist-dvb_usb_rtl28xxu.conf sudo modprobe -r dvb_usb_rtl28xxu
mkdir -p ~/radiosonde_auto_rx/log curl -o ~/radiosonde_auto_rx/station.cfg https://raw.githubusercontent.com/projecthorus/radiosonde_auto_rx/master/auto_rx/station.cfg.example

kemudian edit file station.cfg,

nano ~/radiosonde_auto_rx/station.cfg

didalam file station.cfg - sila masukkan  perkara penting dalam section berikut.

   [habitat] -> uploader_callsign - nama atau callsign anda
   [location] -> station_lat, station_lon, station_alt - lokasi anda dlm decimal
   [search_params] -> min_freq, max_freq - freq radiosonde kawasan anda, 
 [sdr_type] = KA9Q
 [sdr_quantity] = 5

 [search_params]
  min_freq = 400.05
  max_freq = 405.8

 [DEMODULATOR / DECODER TWEAKS]
# Wideband Radiosonde Detection:
# Enables some tweaks to better handle detection and decoding of the following radiosonde types:
# - Intermet iMet-1/4 (Wideband versions)
# - Weathex WxR-301d
# If this is enabled in areas with 'narrowband' sondes as well (RS41, DFM, narrowband iMet, etc...) there will likely
# be degradation in detection and decode performance. 
wideband_sondes = True 

 perkara-perkara lain tu optional, terpulang kepada anda untuk aktifkan atau tidak. 
 kemudian save dan exit.

kemudian, mari kita run container ini.
docker run \
  -d \
  --name radiosonde_auto_rx \
  --restart="always" \
  --device=/dev/bus/usb \
  --network=host \
  -v ~/radiosonde_auto_rx/station.cfg:/opt/auto_rx/station.cfg:ro \
  -v ~/radiosonde_auto_rx/log/:/opt/auto_rx/log/ \
  -v /var/run/dbus:/var/run/dbus \
  -v /var/run/avahi-daemon/socket:/var/run/avahi-daemon/socket \
  ghcr.io/projecthorus/radiosonde_auto_rx:latest
jika keluar 

docker: unknown server OS:


buka terminal baru dan:

sudo chmod 666 /var/run/docker.sock

kemudian ulang semula : 

docker run \
  -d \
  --name radiosonde_auto_rx \
  --restart="always" \
  --device=/dev/bus/usb \
  --network=host \
  -v ~/radiosonde_auto_rx/station.cfg:/opt/auto_rx/station.cfg:ro \
  -v ~/radiosonde_auto_rx/log/:/opt/auto_rx/log/ \
  -v /var/run/dbus:/var/run/dbus \
  -v /var/run/avahi-daemon/socket:/var/run/avahi-daemon/socket \
  ghcr.io/projecthorus/radiosonde_auto_rx:latest

Docker ini tidak berfungsi baik di Debian 12 kerana sambungan ke ka9q-server boleh timeout. Ia disahkan berfungsi di Ubuntu 22.04 dan Raspberry Pi OS Bookworm. Jika anda guna Debian 12 dan kerap timeout, sila cuba pemasangan auto_rx secara native

11. Semak Output

docker logs -f radiosonde_auto_rx
http://IP_PI:5000

12. Troubleshooting Ringkas

- dft_detect timeout: kecilkan frequency range atau optimize FFTW
- Tak detect sonde: semak gain dan SDR
- Docker tak connect: pastikan mount DBus & Avahi

13. Ringkasan atau checklist setup

  • Pasang dependency.
  • Clone ka9q-radio.
  • Checkout commit e1224dcd1991637ba8e1caa68cd802e1b22933de.
  • make && sudo make install
  • Tambah user ke group radio.
  • Generate FFTW wisdom ikut jenis SDR.
  • Buat fail config dalam /etc/radio/.
  • Start servis radiod@...
  • Ubah station.cfg kepada sdr_type = KA9Q.
  • Jalankan radiosonde_auto_rx dan pastikan julat frekuensi tidak melebihi bandwidth SDR anda.

  • Cara Update Radiosonde Auto-RX Dengan Selamat Tanpa Rosakkan Setup KA9Q + Airspy Mini

      Kalau anda menggunakan Radiosonde Auto-RX bersama KA9Q dan Airspy Mini, proses update sepatutnya dibuat dengan berhati-hati. Update Docker...