A repeatable and sensible Dual-WAN Failover setup

In my previous Dual-WAN failover article, I moved from a TP-Link ER605 (slowest device ever) to a MikroTik hEX S. That setup worked, but it also sent me down the usual rabbit hole of buying increasingly specialised router hardware for a problem which does not actually need it. Repeatable infrastructure should depend on open networking standards and replaceable commodity hardware, not a particular router model, vendor GUI, or temporarily available development board. ...

September 12, 2026 · 18 min · 3823 words · Dhiru Kholia

The easiest and best WSPR + FT8 decoder?

Could a serious WSPR station need only one small program and one memorable command? I built this especially for my friend Brad, K1TE. We both believe in practical P2P, point-to-point radio contacts, and we are working toward making them reliable across the breadth of planet Earth. airspyhf-wsprd is a dedicated receiver for the Airspy HF+ Discovery. It tunes, aligns to the WSPR boundary, decodes, reports to WSPRnet, and repeats: ./airspyhf-wsprd -b 20m -c VU3CER -g MK68xm No dial-frequency memorization, GUI, virtual audio cable, or Fortran runtime. ...

August 22, 2026 · 4 min · 647 words · Dhiru Kholia

Supporting HOPERF CMT2300A on Linux

What This Article Covers This article presents a practical journey to add Linux support for the HOPERF CMT2300A Sub-GHz RF transceiver - starting from extracting register configuration tables out of vendor firmware, to building and testing a Linux driver on real hardware. You'll learn: How TP-Link's driver situation motivated this effort How firmware was extracted and analyzed How to build and load the custom driver on Raspberry Pi How to verify real on-air packet RX This is aimed at embedded Linux developers, reverse engineers, and RF hackers. It is not a beginner Linux kernel tutorial nor a full CMT2300A datasheet walkthrough; the focus is on practical bring-up and reproducibility. ...

December 23, 2025 · 8 min · 1497 words · Dhiru Kholia

Headless WSPR Monitoring System (2026)

Setup OS and SDR Please use the latest Raspberry Pi OS 64-bit on RPi 4 or later. Using a Raspberry Pi (<=3) is NOT recommended as it has quite a bit of power supply noise on the USB ports, which reduces the performance of the connected SDR. user@rpi:/etc$ cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 13 (trixie)" NAME="Debian GNU/Linux" VERSION_ID="13" ... Install dependencies: sudo apt-get update sudo apt-get install airspyhf \ soapysdr-tools sox libsox-fmt-all wsjtx \ pulseaudio-utils git vim fluxbox xterm tightvncserver \ libqt5websockets5 cmake build-essential sudo apt-get install cmake pkg-config \ libusb-1.0-0-dev \ libasound2-dev \ libairspy-dev \ libairspyhf-dev \ librtlsdr-dev \ libsndfile1-dev \ portaudio19-dev \ libvolk-dev Build airspyhf-fmradion SDR software: ...

October 22, 2025 · 3 min · 485 words · Dhiru Kholia

Emulating a full FT8 band for 'real'

This code generates a .wav file which emulates a fully-populated FT8 band! Usage This .wav file can then be played with rpitx on actual air (well on a dummy load) for receiver testing purposes. rm mixed.wav; sox -m *.wav mixed.wav sox mixed.wav -r 48000 sampleaudio.wav Now play sampleaudio.wav using rpitx. Testing I have tested rpitx on Raspberry Pi Zero 2W TX'ing @ 14.074 MHz. ...

October 17, 2025 · 1 min · 72 words · Dhiru Kholia