HAM Radio Is NOT Just for Talking

It's a Training Ground for Engineers (And We've Been Ignoring It) Let's drop the nostalgia and say something uncomfortable: If you think ham radio is just people talking into microphones, you're not just wrong - you're overlooking one of the most hands-on, intellectually rigorous engineering playgrounds still accessible to individuals. Because amateur radio isn't about conversation. It's about understanding how information survives reality. And reality is hostile. Signals Don't Care About Your Abstractions Modern software engineers live in a world of clean abstractions: APIs work (until they don't), packets arrive (until they don't), networks are "just there." ...

May 4, 2026 · 4 min · 815 words · Dhiru Kholia

Modding Debian binary packages

The problem Debian binary packages often require dependency patching, especially when installing on different Linux distributions. The script #!/bin/bash if [ "$#" -ne 1 ]; then echo "Usage: $0 <package.deb>" exit 1 fi INPUT_DEB="$1" if [ ! -f "$INPUT_DEB" ]; then echo "Error: File $INPUT_DEB not found." exit 1 fi PACKAGE_NAME=$(basename "$INPUT_DEB" .deb) TMP_DIR=$(mktemp -d) OUTPUT_DEB="${PACKAGE_NAME}_no-deps.deb" # Ensure cleanup on exit trap 'rm -rf "$TMP_DIR"' EXIT echo "Extracting $INPUT_DEB..." dpkg-deb -R "$INPUT_DEB" "$TMP_DIR" || exit 1 echo "Zapping dependencies..." # Remove the Depends line. # We use a regex that matches 'Depends:' at the start of the line. sed -i '/^Depends:/d' "$TMP_DIR/DEBIAN/control" echo "Repackaging to $OUTPUT_DEB..." dpkg-deb --root-owner-group -b "$TMP_DIR" "$OUTPUT_DEB" || exit 1 echo "Done! Created $OUTPUT_DEB" Usage $ ./zap-deps.sh wsjtx_3.1.0_improved_PLUS_260418_amd64.deb Extracting wsjtx_3.1.0_improved_PLUS_260418_amd64.deb... Zapping dependencies... Repackaging to wsjtx_3.1.0_improved_PLUS_260418_amd64_no-deps.deb... dpkg-deb: building package 'wsjtx' in 'wsjtx_3.1.0_improved_PLUS_260418_amd64_no-deps.deb'. Done! Created wsjtx_3.1.0_improved_PLUS_260418_amd64_no-deps.deb Notes Before installing the modded package run the following command. ...

April 21, 2026 · 1 min · 165 words · Dhiru Kholia

Easy and Quick Thermal Simulation of PCBs

I could NOT get the Open-Source Thermal Simulation of PCBs technique to work with my 4-layer PCB board at all, even after spending some days on it. To make things worse, I was NOT able to get useful debugging feedback from the involved patchy toolchain. Getting access to the TRM software by ADAM Research turned out to be a sort of very bureaucratic and slow process - I never ended up using it. ...

April 11, 2026 · 2 min · 361 words · Dhiru Kholia

Reversing the Huidu HD-R712 FPGA board

We are working on reversing the Huidu HD-R712 LED Display Full Color Receiving Card - a very cost-effective (~1000 INR) and widely available FPGA board. We draw inspiration from the https://github.com/q3k/chubby75 work. FPGA Blink Project Files 1 Random brain dump $ sudo openFPGALoader --cable dirtyJtag --freq 10000 --detect Jtag frequency : requested 10000Hz -> real 10000Hz index 0: idcode 0x4014c35 manufacturer anlogic family eagle d20 model EG4D20EG176 irlength 8 $ sudo openFPGALoader --cable dirtyJtag --detect Jtag frequency : requested 6000000Hz -> real 6000000Hz index 0: idcode 0x4014c35 manufacturer anlogic family eagle d20 model EG4D20EG176 irlength 8 JTAG pinout: V ┌───────────────────┐ │ 1 3 5 7 9 │ │ 2 4 6 8 10 │ └───────────────────┘ 9 => TCK 7 => TDO 5 => TMS 3 => NC (Not Connected) 1 => TDI The pin mapping work was done using a DMM, the datasheet, and an optical magnifier. ...

February 27, 2026 · 4 min · 762 words · Dhiru Kholia

The Polar Express - Efficient SSB Generation

Polar Modulation for Everyone We have been working on SSB generation using polar modulation. Hardware stack: RP2350-Zero MCU board + Fast Si5351 module + AP63301 buck regulator (for 5W mode). See https://github.com/kholia/PolarModulationSSB for details. Audio fidelity is acceptable at the moment and should improve further. We still need to hook up the amplitude ("envelope") restoration stage. Motivation Why should Guido, Hans, and FlexRadio folks have all the fun? ;) ...

February 16, 2026 · 2 min · 367 words · Dhiru Kholia

PA0FRI Active Antenna Redux - The final version?

I recently worked on a redesign of the PA0FRI active antenna using high-speed BFR93A, BFR106, and BFR193 transistors. As a fallback in case of issues, we planned to use NXP MMBT2222A,215 transistors. Design 3D render: Schematic: Previous Next     / [pdf] View the PDF file here. Simulation Results ...

February 12, 2026 · 2 min · 232 words · Dhiru Kholia

Alternative to PE4312 Digital Step Attenuator

The PE4312 is a 50Ω, 6-bit RF digital step attenuator available for around 2 USD. Pretty neat for implementing real digital AGC! For half-the-price we can get the alternate Archiwave ARW637 or ARW621A ICs which work very similarly to PE4312! References: Archiwave ARW637 Archiwave ARW621A

January 8, 2026 · 1 min · 45 words · Dhiru Kholia

The best power supply for FieldOps

This short article describes a flight-safe power supply for FieldOps. Component List Simply get these: USB QC/PD AFC trigger decoy board (9V) USB QC/PD AFC trigger decoy board (12V) USB QC/PD AFC trigger decoy board (15V) Xiaomi Pocket Power Bank Pro 10000 33W This one does 9V, 12V, 15V and 20V without any problems. OR A 65W USB PD power bank - not needed for 5 to 10W QRP FieldOps ...

January 6, 2026 · 1 min · 106 words · Dhiru Kholia

HFDY Active Loop - LZ1AQ loop clone

The HFDY Active Loop is working extremely well, even from an indoor location in MK68. Design I am currently running the loop at 5V (via a regulated linear power supply), where it consumes slightly less than 65mA. The recommended voltage is 10V, which I plan to switch to soon. Results I am using Airspy HF+ Discovery SDR for this experiment. Future work It would be very interesting to compare this HFDY Active Loop against the PA0FRI Active Antenna. ...

November 9, 2025 · 1 min · 88 words · Dhiru Kholia

Choosing a Coax for HF Field Operations

Setup: Si5351 RF generator (@ 28 MHz) ➔ GSD-Hacks-v5 digital amplifier ➔ 7th order LPF ➔ {COAX-UNDER-TEST} ➔ Digital RF power meter ➔ Dummy load Results Results at 13.8V drain: Coax Type Power Reading RG-58 (7 meters) 4.5W RG-316 (7 meters) 3.9W RG-188 (7 meters) 3.9W Results at 15V drain: Coax Type Power Reading RG-58 (7 meters) 5.4W RG-316 (7 meters) 4.7W RG-188 (7 meters) 4.7W These measurements appear to match those from Eric, WD8RIF. ...

November 5, 2025 · 1 min · 151 words · Dhiru Kholia