ON8ST.

Station Technical Documentation

LocationMechelen, Flanders, BE
Revision2026-08-03
Modules6 + software
StatusAs built

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.

MODULE 1 · ANTENNAS MODULE 2 · SWITCHING & PROTECTION MODULE 3 · RADIO MODULE 6 · HOTSPOTS MODULE 5 · SDR NETWORK & PUBLISHING MODULE 4 · POWER HF FARM — dipole · EFHW V/UHF — Diamond X50 HF PA planned · module 3 microHAM TRIO routing · band decode · TX inhibit MX-S3 #1 — HF PTT-switched RX tap MX-S3 #2 — V/UHF PTT-switched RX tap FT-710 HF TX/RX FTX-1 multiband · V/UHF TX/RX RF.Guru SVX analog · SVXLink WPSD digital · duplex RX taps — Y-splitter feeds both V/UHF receivers RX-888 HF RTL-SDR 2 m Airspy R2 70 cm RYZEN 7 · LINUX · DOCKER radiod HF radiod VHF radiod UHF IP MULTICAST BUS CONSUMERS — same host UberSDR ubersdr.on8st.be omnisdr omnisdr.on8st.be ka9q-web sdr-hf · HF ka9q-web sdr-vhf · 2 m ka9q-web sdr-uhf · 70 cm ubersdr-multi-dev experimental · non-contiguous HF + 2 m + 70 cm every container on one shared Docker bridge radiod, front ends and all consumers on this host RF — solid, coloured by band control — grey dashed power — green dashed planned — dashed outline module boundary — grey dashed frame STATION LAN MAC MINI · LINUX — EDGE Caddy · TLS · dyn DNS · all *.on8st.be names INTERNET mains supply · battery box in cold standby, manual fallback
Fig. 1 — Full station schematic, grouped by module. Dashed frames mark module boundaries. Read it top to bottom: antennas, routing, protection, then the split into transmitters on the left and receivers on the right. Every piece of software — radiod, UberSDR, omnisdr and the two planned projects — sits inside the Ryzen frame, because it all runs on that one host. The two MX-S3 units are the crossing point — everything below them on the receive side stays connected permanently, which is only safe because those units disconnect it on PTT. Note that power is mains-fed: the battery box is a manual fallback in cold standby, not an automatic changeover.
01

Architecture

Five functional modules with defined interfaces. Any one can be replaced without redesigning the chain — which matters, given how often the SDR side changes.

Design intent

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.

02

Antenna Module

AntennaTypeBandsStatus
Fan dipoleWire, multiband dipole80–30 mIN USE
EFHWEnd-fed half-wave80–10 mIN USE
Diamond X50Vertical, colinear2 m / 70 cmIN USE
Quarter-wave verticalVertical80–10 mPLANNED

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.

03

Switching & Protection

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.

microHAM TRIO — central RF router

RoleRF router and station protection: radios ↔ antennas ↔ PA
CapacityUp to 3 radios, 6 HF antennas
Control signalsPTT, band decode, ALC, TX inhibit
PA handlingDedicated PA ports; the amplifier connects here and nowhere else. Shared and brokered for safe keying and routing; six-pack HF farm
Remote controlRemote / web control
StatusIN USE

MX-S3 — TRX/SDR switcher, 2 ×

RoleTRX/SDR switch and RF tap for panadapter, diversity RX and spectrum
DeploymentOne unit with the FT-710 (HF); one with the FTX-1 (V/UHF path)
PortsANT · TRX · PTT IN / PTT OUT
Vendor compatibilityListed for IC-7100, FT-891, 450D, 991A
Receive pathNo LNA anywhere between the tap and the receivers — passive throughout
V/UHF tap sharingA Y-coax splitter feeds the RTL-SDR and the Airspy R2 from the single tap
OpenInsertion loss, isolation and power handling not yet taken from datasheet or measurement
StatusIN USE — both units
PORTS KEY FUNCTIONS microHAM TRIO ANTENNAS 1-6 RADIOS 1-3 PA CTRL / LAN up to 3 radios · 6 HF antennas · web control RADIOS FT-710FTX-1spare RF MATRIX ANTENNAS 6-way HF farmV/UHF HF PA dedicated PA ports CONTROL BUS PTT · band · ALC TX INHIBIT Any radio reaches any antenna. Band decode picks the path; TX inhibit blocks keying into a wrong or occupied one.
Fig. 2 — microHAM TRIO. The station's routing and interlock layer. Its value is not the switching itself but the interlock: band decode selects the path automatically, and TX inhibit makes keying into the wrong antenna or a busy PA structurally impossible rather than merely unlikely.
PORTS SWITCHING STATES MX-S3 ANTTRXRX OUT PTT INPTT OUT 12 V · two units: HF with FT-710, V/UHF with FTX-1 V/UHF unit feeds BOTH the RTL-SDR and the Airspy R2 RECEIVE — PTT idle ANT TRX SDR RECEIVER TRANSMIT — PTT asserted ANT TRX — full power SDR — isolated
Fig. 3 — MX-S3 switching states. On receive the antenna feeds the transceiver and the SDR tap simultaneously. On PTT the relay throws: the transceiver gets the antenna at full power and the receive port is disconnected to a safe termination. Everything downstream of that port — on the V/UHF unit, both the RTL-SDR and the Airspy R2 — is protected by this one action.

The V/UHF tap feeds two receivers through a Y-splitter

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.

Receive-path protection during transmit — covered for all three receivers

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.

04

Radio Module

Yaesu FT-710 — primary HF

RolePrimary HF TX/RX
RF pathTo PA and antennas via TRIO
CAT and audioOver USB; band follow and TX inhibit from TRIO
RemoteSCU-LAN10 for IP remote PLANNED
StatusIN USE

Yaesu FTX-1 — secondary multiband

RoleSecondary multiband transceiver
RF pathHF via TRIO; V/UHF via MX-S3 to dedicated antenna
SDR tapYes — V/UHF monitoring
StatusIN USE

HF power amplifier

ConnectionTo the TRIO's dedicated PA ports only — never directly to a radio
Drive and keyingDriven from the FT-710 through the TRIO; PTT, band data and ALC all routed by it
SharingA single amplifier brokered by the TRIO, so any permitted radio can use it without recabling
ModelTODO
StatusPLANNED

Related digital equipment

05

Power Module

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.

12 V distribution

Nominal voltage12 V DC
DistributionShared feed with inline protection on each branch
LoadsRX-888 and both MX-S3 units; radios
SupplyPSU 1228.dig

Battery box

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.

ComponentFunction
WestMountain Radio EPIC PWRGate12 V uninterruptible supply, charger and solar input; up to 40 A continuous
Solice 40 Ah LiFePO₄Battery, built-in BMS, >2000 cycles
Victron SmartShunt 300ABattery monitor — voltage, current, SoC; BLE to the Pi
Raspberry Pi Zero W2Control and monitoring; serves the web status page
230 V → 12 V AC/DC converterMains charging
12 V → USB-C converter5 V at up to 5 A / 25 W for USB loads
ADUM3160 USB isolator2.5 kV isolation, PWRGate ↔ Pi, USB 2.0 full speed
Fuse box / breaker panelOvercurrent protection per output circuit
Pelican 1430 Protector caseWatertight housing; interior 34.4 × 14.6 × 29.7 cm
PELICAN 1430 — 34.4 × 14.6 × 29.7 cm MAINS 230 V AC/DC → 12 V EXTERNAL PSU 12 V SOLAR panel input EPIC PWRGate charger + UPS switch 40 A continuous 40 Ah LiFePO₄ Solice · built-in BMS BREAKERS one per output 12 V LOADS USB-C 5 V 5 A / 25 W MONITORING SmartShunt 300A V · A · SoC Pi Zero W2 web dashboard BLE ADUM3160 USB Solid black = power · green = BLE telemetry · grey = USB serial telemetry
Fig. 4 — Battery box architecture. Three charge sources converge on the PWRGate, which also does the uninterruptible changeover; everything downstream passes a breaker. The two monitoring paths are worth separating visually because only one of them works: BLE telemetry from the SmartShunt is unaffected, while the USB serial link carrying PWRGate figures is the subject of the open fault below.

Battery box monitoring

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.

RX-888 supply

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.

Two things to keep an eye on with this arrangement

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.

06

SDR Module

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.

Two servers, deliberately separated

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.

RYZEN 7 MINI SERVER · BARE METAL LINUX · NO HYPERVISOR FRONT ENDRECEIVER DAEMON TRANSPORTCONSUMERS USB 3.0 RX-888 direct sampling 16-bit · 32 MHz radiod — HF 239.185.143.241:5006 RTL-SDR R820T2 · 8-bit ~2 MHz radiod — VHF 239.198.167.245:5006 AIRSPY R2 low-IF · 12-bit ~9 MHz radiod — UHF 239.165.43.204:5006 MULTICAST BUS UberSDR web · HF only today omnisdr panadapter ka9q-web × 3 one per band — HF · 2 m · 70 cm ubersdr-multi-dev experimental · §9.1 SUPPORTING INFRASTRUCTURE Docker — single shared bridge Caddy — Mac mini edge Config in git — rollback mDNS / Avahi discovery · periodic status beacons · dynamic channels created on demand
Fig. 5 — SDR module internals. Solid boxes are running today; dashed boxes are the two staged projects in §9. Every consumer reaches every front end through the same multicast bus, which is why adding a fourth receiver is a configuration change rather than a redesign.

What the station actually hears

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.

050100 150200250 300350400 450 MEGAHERTZ HF · RX-888 2 M · RTL-SDR — 2 MHz wide 70 CM · AIRSPY R2 — 9 MHz NOT COVEREDNOT COVERED
Fig. 6 — Coverage, drawn at true linear scale. The 2 m segment is four pixels wide because it is genuinely 2 MHz out of 450. Rendering the gaps honestly rather than compressing them is also the governing principle for the UberSDR work in §9.

Host

HardwareRyzen 7 mini server
OSLinux, bare metal — no hypervisor
ContainerisationDocker, all components on one shared bridge network
Reverse proxyCaddy, on the Mac mini edge server
Config managementGit, for rollback

RX-888 MkII

ADCLTC2208, 16-bit at 130 MSPS
Host interfaceUSB 3.0, ~3 Gbps
Spectrum at once~64 MHz
Nominal coverage~10 kHz to 1.8 GHz, depending on band and tuner path
HF attenuatorTunable, 0 to −31.5 dB
VGA~−10 dB to +33 dB on HF and VHF
TunerR828D — replaces the R820T2 of the earlier revision
FilteringImproved 64 MHz low-pass for image rejection
ReferenceSelectable internal or external 27 MHz

In this station the RX-888 is HF-only, by design

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.

PORTS SIGNAL CHAIN RX-888 MkII HF INVHF IN27 MHzUSB 3.0 grey ports unused in this station draws ~2 A — Y-cable from a dedicated 3 A PSU ATTEN 0 … −31.5 dB LPF 64 MHz VGA −10 … +33 dB LTC2208 16-bit · 64 MSPS here USB 3.0 to host R828D VHF/UHF TUNER — NOT USED detected but not driven by the open firmware Direct sampling only, run here at 64 Ms/s — 32 MHz usable, the whole HF allocation in one capture. 6 m sits outside the window at this rate.
Fig. 7 — RX-888 MkII signal chain. Only the direct-sampling path is in service: antenna, step attenuator, 64 MHz anti-alias filter, VGA, then straight into a 16-bit converter with no tuner in front of it. The R828D branch is drawn dashed because it exists on the board but is unreachable — which is why 70 cm needs the Airspy.
PORTS SIGNAL CHAIN Airspy R2 SMA INMCX CLKUSB 4.5 V bias-tee on SMA · 10–100 MHz ext. clock TRACKING RF filters R820T2 — LNA · MIX · VGA 3.5 dB NF · +35 dBm IIP3 12-BIT ADC 20 Ms/s REAL USB to host gain stages are SHARED — not client-settable, see §9.2 LOW-IF, NOT ZERO-IF No DC spike at centre. DC-removal and IQ-correction filtering must stay OFF. ka9q-radio takes the REAL sample stream, not the complex IQ the vendor driver produces — hence no centre frequency. See Fig. 9.
Fig. 8 — Airspy R2 signal chain. A tuner-based receiver, unlike the RX-888: the R820T2's three gain stages sit ahead of a 12-bit converter. Those stages are a property of the front end rather than of any one listener, which is the whole reason the SoapySDR design in §9.2 exposes them read-only.

Receiver daemons

InstanceFront endControl group
HFRX-888239.185.143.241:5006
VHFRTL-SDRvhf-status.local → 239.198.167.245:5006
UHFAirspy R2uhf-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.

The Airspy path has no centre frequency

~9 MHz ALIAS-FREE R820T2 LO ≈ 440.x MHz Nyquist window extends DOWNWARD from the LO 430435440 roll-offroll-off
Fig. 9 — Airspy R2 sampling window. radiod takes raw real samples at 20 Ms/s rather than the complex IQ stream the Airspy driver normally produces. There is consequently no centre frequency: the LO sits at one end and the window extends away from it. The low-IF architecture also means there is no DC spike at centre, so DC-removal and IQ-correction filtering must stay disabled — on this receiver they only dig a hole in clean spectrum.
07

Software

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.

UberSDR — public web receiver

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

UberSDR welcome screen for ON8ST showing a location map of Keerbergen, weather, and a start button
Fig. 11 — UberSDR entry screen. The map, weather and solar block do real work here: a remote listener judging a signal needs to know where the receiver is and what the ionosphere is doing, and neither is obvious from a waterfall alone.
Addressubersdr.on8st.be
RolePublic web SDR
Front end todayRX-888 / HF only
SessionsUnlimited as configured; a max-sessions cap exists in the software
ExtrasDownloadable native client · listener map · instance directory · VibeSDR
Context shownQTH map, ASL, local and UTC time, weather, solar indices
PlannedMulti-band via the ubersdr-multi fork — §9.1

omnisdr — multi-band panadapter

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.

omnisdr showing 160m through 10m as separate band panels with spectrum traces and waterfalls
Fig. 12 — omnisdr, all HF bands simultaneously. 160 m through 15 m on the upper row, 12 m and 10 m below. The 10 m panel here is almost empty while 40 m and 80 m are dense — a judgement that would take ten separate tunings on a conventional receiver. The cursor readout also links the same frequency across to the 2 m and 70 cm receivers.
Addressomnisdr.on8st.be
RoleWhole-spectrum panadapter and band-activity monitor
OriginWritten by ON8ST
LayoutOne panel per band, each with its own scale; spectrum plus waterfall
Cross-receiverReads across all three radiod instances
Version shownv1.1.32

ka9q-web — one instance per band

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.

AddressFront endBand
sdr-hf.on8st.beRX-8880–32 MHz
sdr-vhf.on8st.beRTL-SDR144–146 MHz
sdr-uhf.on8st.beAirspy R2~431–440 MHz

ubersdr-multi-dev — experimental

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.

The two tools already answer the non-contiguous spectrum problem differently

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.

08

Hotspot Module

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.

QTH hotspots

HotspotModeFrequencyPlatform
RF.Guru Analog SVXAnalog, SVXLink439.675 simplexRF.Guru transceiver, 500 mW
WPSD Duplex DigitalDigital, MMDVM / WPSDTX 439.775 · RX 433.775Raspberry 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.

Mobile hotspot box — /M

A boxed dual hotspot for use in the car, providing SVXLink analog and MMDVM digital access from the same enclosure.

EnclosureMini waterproof suitcase
Power12 V → 5 V microUSB buck converter
NetworkWi-Fi, tried in order: QTH network, car hotspot, iPhone personal hotspot
MonitoringA companion server on one hotspot serves a simplified combined status page, readable at a glance from a phone

Where the hotspots sit in the 70 cm window

ISM 433.05–434.79 AIRSPY WINDOW 431432433 434435436 437438439 440 MEGAHERTZ 432.200SSB call 432.4–432.5beacons 433.500FM call 438.650ref. repeater 433.775 HANDHELD UPLINK — up to 5 W 439.775 — digital hotspot TX 439.675 — analog hotspot
Fig. 10 — Local transmitters inside the receive window. All three hotspot frequencies fall within the Airspy's span. The two hotspot transmitters sit in the top 350 kHz, close to the band edge and therefore already in the anti-alias roll-off; the handheld uplink at 433.775 sits squarely in the middle of the window and inside the ISM segment.

The station transmits into its own receive window — and it turns out not to matter

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.

09

Development Roadmap

Two software projects, staged in this order.

Stage 1 · deployed as ubersdr-multi-dev · ~/Repos/on8st

UberSDR multi-band — ubersdr-multi

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.

  • The coverage map is always derived at runtime from the available radiod instances — never hardcoded. A fourth front end appears with no code change.
  • One linear frequency-to-pixel mapping across the whole range, with uncovered regions rendered explicitly as labelled dead zones. No broken or compressed axis.
  • A tuning action that creates a new stream must stop the original stream.
  • The existing max-sessions cap applies to the total across all instances, not per instance.
  • Runs as an isolated parallel deployment during development. Production UberSDR is untouched.
Stage 2 · planned

SoapySDR bridge — libSoapyKa9q

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.

  • One virtual device; frequency routing between instances is internal.
  • Zero configuration — instances found via mDNS, coverage learned from status beacons.
  • Sample rate is client-owned. The union across instances is advertised, with per-instance clamping and truthful reporting. No resampling to fake width.
  • A cross-instance retune that cannot sustain the current rate tears the stream down and rebuilds it rather than clamping silently — silent clamping produces wrong data, not merely inconvenience.
  • Tuner gain stages are visible but not settable. They are shared front-end properties, and a client changing them would desense every other consumer.
  • Channel ownership tagging, compatible with ubersdr-multi, so no reaper destroys another consumer's channels.

Staged after Stage 1 — not a functional dependency, but to avoid two unstable projects creating and destroying channels on the same instances at once.

10

Open Items

#ItemSection
1Mast heights and positions; lightning protection and grounding arrangement02
2MX-S3 insertion loss, isolation and power handling — from datasheet or measurement03
3Y-splitter loss into the two V/UHF receivers — measure, or accept the nominal ~3.5 dB03
4HF PA — model and rating, once chosen04
5Bring shack.on8st.be in line with this document06