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.