ON8ST is a hybrid station. Conventional HF and V/UHF transceivers on one side, a software-defined receive chain running continuously on the other, both fed from the same antennas through a switching layer whose job is to keep the receivers alive when the transmitters key.
It is built as six modules with defined interfaces rather than as one integrated installation, so any part can be replaced, taken into the field, or rebuilt without disturbing the rest. The full topology is below; each module is documented in its own section.
Five functional modules with defined interfaces. Any one can be replaced without redesigning the chain — which matters, given how often the SDR side changes.
The station targets a stable, always-ready operating environment: HF and V/UHF rigs work independently on their own antennas with no manual reconfiguration, and a permanent SDR receive path stays up for both domains so spectrum visibility is continuous regardless of which radio is active. No cable swaps, no RF repatching — the shack stays usable after long breaks.
The switching and control layer makes antenna and mode changes quick and low-risk, and blocks classic failure modes such as keying into the wrong path. The goal is a structured, foolproof station that supports experimentation without infrastructure busywork.
| Antenna | Type | Bands | Status |
|---|---|---|---|
| Fan dipole | Wire, multiband dipole | 80–30 m | IN USE |
| EFHW | End-fed half-wave | 80–10 m | IN USE |
| Diamond X50 | Vertical, colinear | 2 m / 70 cm | IN USE |
| Quarter-wave vertical | Vertical | 80–10 m | PLANNED |
All outdoor wiring uses Messi & Paoloni Ultraflex 2 throughout — a single coax type across every run, which removes a whole class of "which cable is this?" questions when tracing a problem.
Still to record: mast heights and positions, and the lightning protection and grounding arrangement.
Portable and mobile antennas — Diamond MR77, Diamond NR-770H — are documented separately under /P and /M.
The central routing and safety layer. Radios, antennas and the PA all meet here, and this is where the permanently-connected SDR receivers are isolated during transmit.
| Role | RF router and station protection: radios ↔ antennas ↔ PA |
| Capacity | Up to 3 radios, 6 HF antennas |
| Control signals | PTT, band decode, ALC, TX inhibit |
| PA handling | Dedicated PA ports; the amplifier connects here and nowhere else. Shared and brokered for safe keying and routing; six-pack HF farm |
| Remote control | Remote / web control |
| Status | IN USE |
| Role | TRX/SDR switch and RF tap for panadapter, diversity RX and spectrum |
| Deployment | One unit with the FT-710 (HF); one with the FTX-1 (V/UHF path) |
| Ports | ANT · TRX · PTT IN / PTT OUT |
| Vendor compatibility | Listed for IC-7100, FT-891, 450D, 991A |
| Receive path | No LNA anywhere between the tap and the receivers — passive throughout |
| V/UHF tap sharing | A Y-coax splitter feeds the RTL-SDR and the Airspy R2 from the single tap |
| Open | Insertion loss, isolation and power handling not yet taken from datasheet or measurement |
| Status | IN USE — both units |
One MX-S3 port, two receivers. A Y-coax splitter does the job — inelegant, in service, and working. Worth being explicit about the cost, since the path is entirely passive: a passive two-way split gives up around 3.5 dB before either receiver sees the signal, and there is no LNA anywhere to make it back.
That is a fixed, known offset rather than a fault, and it applies equally to both receivers. It matters mainly when comparing absolute levels against another station or against the FTX-1's own front end, which does not pay it.
Handled by the MX-S3 units. Their PTT lines ensure the SDR path is disconnected from the antenna during transmit: on TX the receiver sees a safe port rather than full PA energy.
MX-S3 #1 — HF, tied to the FT-710, feeds the RX-888.
MX-S3 #2 — V/UHF, tied to the FTX-1, feeds both the RTL-SDR (2 m) and the
Airspy R2 (70 cm). Both therefore inherit the same PTT protection.
No SDR front end sits on an unprotected feed.
| Role | Primary HF TX/RX |
| RF path | To PA and antennas via TRIO |
| CAT and audio | Over USB; band follow and TX inhibit from TRIO |
| Remote | SCU-LAN10 for IP remote PLANNED |
| Status | IN USE |
| Role | Secondary multiband transceiver |
| RF path | HF via TRIO; V/UHF via MX-S3 to dedicated antenna |
| SDR tap | Yes — V/UHF monitoring |
| Status | IN USE |
| Connection | To the TRIO's dedicated PA ports only — never directly to a radio |
| Drive and keying | Driven from the FT-710 through the TRIO; PTT, band data and ALC all routed by it |
| Sharing | A single amplifier brokered by the TRIO, so any permitted radio can use it without recabling |
| Model | TODO |
| Status | PLANNED |
A mains supply carries the station day to day. The battery box is a separate, transportable module held in cold standby — fully capable, but not currently in the path.
| Nominal voltage | 12 V DC |
| Distribution | Shared feed with inline protection on each branch |
| Loads | RX-888 and both MX-S3 units; radios |
| Supply | PSU 1228.dig |
An all-in-one 12 V box that charges from three sources — mains, an external 12 V PSU, or solar — around an internal 40 Ah LiFePO₄ battery, with circuit breakers on every load connection.
Held in cold standby. It is not wired into the station bus and does not switch in automatically — bringing it into service means plugging it in by hand. The station therefore does not ride through a mains failure: the receive chain stops with the mains, and the box is a deliberate manual fallback rather than a UPS.
The design intent is worth recording, because it is the same principle the rest of this document follows: a modular, transportable station rather than a single all-in-one portable shack. Modules travel independently, are maintained independently, and recombine for whatever the operation needs.
| Component | Function |
|---|---|
| WestMountain Radio EPIC PWRGate | 12 V uninterruptible supply, charger and solar input; up to 40 A continuous |
| Solice 40 Ah LiFePO₄ | Battery, built-in BMS, >2000 cycles |
| Victron SmartShunt 300A | Battery monitor — voltage, current, SoC; BLE to the Pi |
| Raspberry Pi Zero W2 | Control and monitoring; serves the web status page |
| 230 V → 12 V AC/DC converter | Mains charging |
| 12 V → USB-C converter | 5 V at up to 5 A / 25 W for USB loads |
| ADUM3160 USB isolator | 2.5 kV isolation, PWRGate ↔ Pi, USB 2.0 full speed |
| Fuse box / breaker panel | Overcurrent protection per output circuit |
| Pelican 1430 Protector case | Watertight housing; interior 34.4 × 14.6 × 29.7 cm |
The Pi Zero W2 serves a real-time dashboard aggregating two devices. The SmartShunt contributes battery voltage, current, power, state of charge and capacity over BLE. The EPIC PWRGate contributes supply voltage and current, solar voltage and current, load current and system temperature over USB serial. The page shows a colour-coded battery gauge, a status table per source, and a detail modal, updating over WebSocket.
The RX-888 draws on the order of 2 A, which no ordinary host port will deliver. It is fed through a Y-cable from a dedicated 3 A USB-A power supply: data to the server, power from its own brick. The receiver competes with nothing else for current.
Ground reference. With power and data arriving from different sources, the receiver's USB ground is shared between the server and the 3 A brick. That is ordinary practice and usually fine, but it is the same topology that is currently causing trouble in the battery box, so it is worth knowing it exists here too.
Switching noise. A 3 A USB brick is a switch-mode supply, and the RX-888 is a direct-sampling receiver covering 0–32 MHz. Its supply's switching harmonics land squarely inside the band it is listening to. If fixed, evenly-spaced birdies ever appear across HF that do not move with the antenna, substitute a linear supply or a different brick before looking anywhere else — this is the cheapest test in the station.
The most fully specified part of the station, and the one furthest ahead of the plan. One bare-metal server hosts three independent front ends, each with its own receiver daemon, feeding several network-distributed consumers.
The station runs on two machines. The Ryzen 7 mini server under Linux carries the entire receive chain — ka9q-radio, the three front ends and every consumer. A Mac mini, also running Linux, is the edge server: Caddy reverse proxy and TLS, hosting shack.on8st.be, and handling dynamic DNS.
The split earns its keep. The Ryzen box does nothing but DSP and can be restarted, rebuilt or experimented on without taking the website or the public entry point down with it. That separation is what makes the development work in §9 safe to do on a live station.
Three receivers, three slices of spectrum, and a great deal of nothing in between. Coverage totals about 43 MHz across a 450 MHz span — under a tenth of it. The gaps are not a defect; they are what a station assembled from three purpose-chosen receivers looks like.
| Hardware | Ryzen 7 mini server |
| OS | Linux, bare metal — no hypervisor |
| Containerisation | Docker, all components on one shared bridge network |
| Reverse proxy | Caddy, on the Mac mini edge server |
| Config management | Git, for rollback |
| ADC | LTC2208, 16-bit at 130 MSPS |
| Host interface | USB 3.0, ~3 Gbps |
| Spectrum at once | ~64 MHz |
| Nominal coverage | ~10 kHz to 1.8 GHz, depending on band and tuner path |
| HF attenuator | Tunable, 0 to −31.5 dB |
| VGA | ~−10 dB to +33 dB on HF and VHF |
| Tuner | R828D — replaces the R820T2 of the earlier revision |
| Filtering | Improved 64 MHz low-pass for image rejection |
| Reference | Selectable internal or external 27 MHz |
The R828D VHF/UHF tuner is detected but not driven by the open firmware, and ka9q-radio does not support that path. Even if implemented it would be limited to roughly 8–10 MHz by the tuner's IF filter rather than by the ADC, so it would gain nothing over the Airspy.
Note also that the hardware could sample faster than it does here. At 64 Ms/s the Nyquist limit is 32 MHz, which covers the whole HF allocation and stops there — 6 m is outside the window. Running at the full 130 Ms/s would roughly double the span and bring 6 m in, at a proportional cost in CPU, bus bandwidth and FFT size.
The vendor's ~64 MHz and 1.8 GHz figures describe the hardware's potential, not what this station realises — worth keeping the distinction in view when reading a datasheet.
| Instance | Front end | Control group |
|---|---|---|
| HF | RX-888 | 239.185.143.241:5006 |
| VHF | RTL-SDR | vhf-status.local → 239.198.167.245:5006 |
| UHF | Airspy R2 | uhf-status.local → 239.165.43.204:5006 |
Instances advertise via mDNS/Avahi and publish periodic status beacons carrying full channel state — sample rate, format, frequency. Channels are created and destroyed dynamically through the status group, which is how consumers tune without configuration changes.
Two web front ends run against the same three radiod instances, and they are not redundant — they answer different questions. UberSDR is the public receiver; omnisdr is the instrument panel.
The published face of the station, reachable at ubersdr.on8st.be and listed as “ON8ST SDR on MicroHAM Antenna Switch” — Keerbergen, Belgium, 8 m ASL. Anyone can tune it; no session limit is advertised. Alongside the receiver it presents station context a visitor needs to interpret what they are hearing: local time in UTC and local, current weather, and solar indices (SFI, K, A, and a propagation summary).
| Address | ubersdr.on8st.be |
| Role | Public web SDR |
| Front end today | RX-888 / HF only |
| Sessions | Unlimited as configured; a max-sessions cap exists in the software |
| Extras | Downloadable native client · listener map · instance directory · VibeSDR |
| Context shown | QTH map, ASL, local and UTC time, weather, solar indices |
| Planned | Multi-band via the ubersdr-multi fork — §9.1 |
Written in-house, and a different tool for a different job: rather than one tuned receiver, it presents every amateur band at once, each as its own panel with its own frequency scale, with spectrum above and waterfall below. What it gives you is band-comparison at a glance — where propagation is open right now, across ten bands simultaneously.
| Address | omnisdr.on8st.be |
| Role | Whole-spectrum panadapter and band-activity monitor |
| Origin | Written by ON8ST |
| Layout | One panel per band, each with its own scale; spectrum plus waterfall |
| Cross-receiver | Reads across all three radiod instances |
| Version shown | v1.1.32 |
Three further instances now run alongside the two above, all on the same host: a ka9q-web UI bound to each radiod instance — one for HF, one for 2 m, one for 70 cm. Where UberSDR is the public receiver and omnisdr the all-band overview, these are the direct, per-band working interface: a conventional waterfall-and-audio receiver sitting straight on top of one radiod, with nothing in between.
All five interfaces are published under on8st.be and reached through the Mac mini edge server, which terminates TLS and holds the dynamic DNS. Nothing on the Ryzen host is exposed directly.
Multi-band access is therefore three URLs rather than one. That works, and it is exactly what ubersdr-multi is meant to collapse — the cross-links in the omnisdr cursor readout above (ka9q-web (2m), ka9q-web (70cm)) are the seam showing.
| Address | Front end | Band |
|---|---|---|
| sdr-hf.on8st.be | RX-888 | 0–32 MHz |
| sdr-vhf.on8st.be | RTL-SDR | 144–146 MHz |
| sdr-uhf.on8st.be | Airspy R2 | ~431–440 MHz |
An experimental UberSDR build, running on the same host, extending it to non-contiguous spectrum — HF plus the 2 m and 70 cm bands behind a single interface. It runs alongside production and is under active development; the design is set out in §9.1.
Its target is precisely the seam the three ka9q-web instances expose. One URL, all bands, gaps rendered honestly rather than papered over.
omnisdr gives each band its own panel and its own scale, so 2 MHz of 160 m and 1.7 MHz of 10 m get comparable screen width regardless of where they sit. Gaps between bands simply do not exist — there is nothing to draw.
The ubersdr-multi design in §9.1 goes the other way: one continuous linear axis with uncovered regions rendered explicitly as dead zones. Both are defensible. omnisdr optimises for comparing activity across bands; the UberSDR approach preserves a single tuning gesture and an honest frequency relationship, at the cost of screen area spent on empty spectrum.
Worth keeping in view while building ubersdr-multi: the alternative is not hypothetical, it is running in the next browser tab.
Internet-linked low-power gateways, analog and digital, at the QTH and in the car. Each carries its own antenna mounted directly on the unit, so they sit entirely outside the TRIO / MX-S3 chain — convenient operationally, and worth a second look for the reason given below.
| Hotspot | Mode | Frequency | Platform |
|---|---|---|---|
| RF.Guru Analog SVX | Analog, SVXLink | 439.675 simplex | RF.Guru transceiver, 500 mW |
| WPSD Duplex Digital | Digital, MMDVM / WPSD | TX 439.775 · RX 433.775 | Raspberry Pi 3 |
The analog side gives access to the Belgian SVXLink network (portal.be.svx.link). The digital hotspot runs WPSD and is duplex — separate transmit and receive frequencies rather than simplex, so it behaves like a small repeater rather than a one-at-a-time gateway.
A boxed dual hotspot for use in the car, providing SVXLink analog and MMDVM digital access from the same enclosure.
| Enclosure | Mini waterproof suitcase |
| Power | 12 V → 5 V microUSB buck converter |
| Network | Wi-Fi, tried in order: QTH network, car hotspot, iPhone personal hotspot |
| Monitoring | A companion server on one hotspot serves a simplified combined status page, readable at a glance from a phone |
The Airspy monitors roughly 431–440 MHz continuously, and all three hotspot frequencies are inside it. The hotspot transmitters themselves are modest — 500 mW class — and sit at 439.675 and 439.775, within a few hundred kHz of the band edge where roll-off already attenuates them.
The uplink is the one to watch. A handheld working the digital hotspot transmits on 433.775 at up to 5 W, in the middle of the window, metres from the SDR antenna. That is orders of magnitude stronger than anything else this receiver will ever see — and unlike the hotspots it cannot be moved out of the window by retuning, because 433.775 is central rather than marginal.
Measured, and the answer is no. Keying a handheld on 433.775 does not visibly depress the rest of the 70 cm window. The R820T2's +35 dBm IIP3 front end, the ~3.5 dB splitter loss ahead of both V/UHF receivers, and the inefficiency of the hotspots' small integral antennas evidently add up to enough margin.
Recorded here because it is the sort of thing that gets re-suspected every time something odd appears in the band, and because it would stop being true if the layout changed — the hotspot antennas are mounted on the units themselves, so any future "let us move this shelf" is also an RF change. Note separately that 433.775 sits inside the ISM segment, so that part of the window carries a raised noise floor regardless of anything the station does.
These two frequencies are also the first thing to check against any persistent carrier seen near the top of the span: 439.675 and 439.775 are both barely a quarter of a megahertz below 440.
Two software projects, staged in this order.
Extend UberSDR from a single-instance HF deployment to one deployment serving all bands through a single web interface, backed by all three radiod instances. Many receivers behind one URL.
Expose the whole front-end pool to external SDR applications as one virtual radio over SoapyRemote. Path: SDR++ → SoapyRemote → libSoapyKa9q → radiod multicast. UberSDR is not in this path.
Staged after Stage 1 — not a functional dependency, but to avoid two unstable projects creating and destroying channels on the same instances at once.
| # | Item | Section |
|---|---|---|
| 1 | Mast heights and positions; lightning protection and grounding arrangement | 02 |
| 2 | MX-S3 insertion loss, isolation and power handling — from datasheet or measurement | 03 |
| 3 | Y-splitter loss into the two V/UHF receivers — measure, or accept the nominal ~3.5 dB | 03 |
| 4 | HF PA — model and rating, once chosen | 04 |
| 5 | Bring shack.on8st.be in line with this document | 06 |