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.

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...