Dispositions — every unit, one classification¶
Applies PARITY-POLICY.md to ahrl-inventory.md, the 73Linux delta, the
Skywave delta (skywave-inventory.md) and the DragonOS Tier-1 set
(dragonos-tier1-inventory.md) — the five sources of D-017, all
dispositioned. The sixth source, EmComm Tools OS Community
(etc-inventory.md, D-042), has its 11-unit delta recommended below;
its dispositions are decided by ETC sub-project 4 and are not in the index yet.
Scope: 105 AHRL INSTALL_* toggles (95 executing + 9 disabled + 1 dead
code), 28 73Linux delta units, 9 Skywave delta units, and the 8 genuinely-new
of DragonOS's 24 Tier-1 units (the other 16 are CARRY cross-references to AHRL
or the Blend). 161 units, none awaiting the maintainer — the last,
chattervox, was retired on 2026-09-30 (Q-022 #5).
Method: dispositions follow the policy's bars. Where the policy already
settled a case, it is recorded here and not re-argued. Two clusters are
reserved to the maintainer — investigated and recommended below, not decided.
Where I could not decide, the unit is NEEDS-DECISION with the specific
question, not a guess.
Verification status: upstream-project facts (project sunset, licence,
support upstreamed) were checked and are cited. Debian/Ubuntu package
availability was not checked — this is a Pop!_OS workstation, not a target
distro, and CLAUDE.md forbids testing against the dev machine. Every claim
depending on distro package state is marked (verify in container).
Summary¶
| Disposition | AHRL | 73Linux delta | Skywave delta | DragonOS T1* | ETC delta | Total |
|---|---|---|---|---|---|---|
| CARRY | 68 | 1 | 0 | 0 | 0 | 69 |
| SUPERSEDE | 13 | 1 | 1 | 0 | 0 | 15 |
| REVIVE | 6 | 0 | 0 | 0 | 0 | 6 |
| RETIRE | 13 | 15 | 0 | 0 | 3 | 31 |
| ADD | — | 11 | 8 | 8 | 8 | 35 |
| NEEDS-DECISION | 0 | 0 | 0 | 0 | 0 | 0 |
| Reserved to maintainer | 5 | 0 | 0 | 0 | 0 | 5 |
| Total | 105 | 28 | 9 | 8 | 11 | 161 |
* DragonOS Tier 1 is 24 units; only the 8 genuinely-new ones are counted here. The other 16 arrive through AHRL parity or the Debian Blend — CARRY by cross-reference, already counted under AHRL, and listed in the Tier-1 section above rather than double-counted.
Counts are derived from the complete index at the foot of this document, not maintained by hand. Two overlap decisions (the FT8-family default and the HamClock default) are recorded under NEEDS-DECISION but are not units and are not counted.
The headline: one unit changed disposition because the world moved while
AHRL v27 was in the oven. HamClock's author became a Silent Key on
2026-01-29 and the project's data feed sunset in June 2026. AHRL v27 shipped
in May 2026 with four HamClock menu entries hardcoded to -b hamclock.com:80.
As of today (2026-08-25) that sunset has passed. See SUPERSEDE #1.
Settled by PARITY-POLICY.md — recorded, not re-argued¶
| Unit | Disposition | Policy reason |
|---|---|---|
noaa-apt |
RETIRE | World changed — NOAA APT satellites out of service 2025-11-09. Point to SatDump. |
xwxapt |
RETIRE | Same, same pointer. |
mfc_gpl |
RETIRE | Never worked — empty stub. |
tt3_gpl |
RETIRE | Never worked — empty stub. |
ardop |
REVIVE | Upstream pflarue/ardop active; also in the 1.0 packet core. |
radiosonde_auto_rx |
REVIVE | Upstream healthy; venv backend handles what bash couldn't. |
ibp |
REVIVE | IBP beacons still transmit. Falls back to SUPERSEDE, never RETIRE. |
dream |
REVIVE-or-SUPERSEDE | May be the only DRM decoder. Check before retiring. |
mvoice |
REVIVE-or-SUPERSEDE | Was AHRL's only M17 path. Find the maintained successor. |
glfer, gsmc, owx†, linrad, qgrid |
CARRY with attention | Build only with -Wno-*. Record flags, add CI. |
dump1090 |
SUPERSEDE | → readsb / dump1090-fa. |
cqrlog, xlog |
CARRY all three | QLog is the recommended default. |
| Unversioned snapshots | CARRY, pinned | Packaging fix, not a replacement. |
† owx appears in the policy's compiler-flag set. I am proposing it also be
SUPERSEDE'd — see SUPERSEDE #2. The two are not in conflict: if superseded, the
flags stop mattering.
SUPERSEDE — additions to the policy's table¶
Each meets all four bars. Trade-off stated in one sentence, as required. Per the
policy, none is a silent substitution and none removes working software: the
original stays in the catalog with superseded_by:.
1. ESPHamClock → hamclock-next (+ Open HamClock Backend)¶
This is the most consequential finding in the inventory.
Elwood Downey (WB0OEW), HamClock's author, became a Silent Key on 2026-01-29. The project receives no further updates and data was expected to stop being pushed by June 2026. That date has passed.
AHRL v27 (May 2026) builds ESPHamClock 4.23 four times — 800x480, 1600x960,
2400x1440, 3200x1920 — and every menu entry hardcodes -b hamclock.com:80.
Anyone installing AHRL v27 today gets four menu entries pointing at a
discontinued backend.
Replacement: hamclock-next (K4DRW, SDL2 rewrite) as the maintained client,
and/or repointing the existing client at the Open HamClock Backend
(ohb.works). Note ESPHamClock is preserved under MIT by community mirrors, so
carrying it is legally clean.
Trade-off: hamclock-next is a maintained rewrite with an active backend, where ESPHamClock is frozen at its author's death and pointed at a server that stopped feeding it.
The irony worth recording: AHRL v27 already ships hamclock-next-1.5.tar.gz
and defines install_hamclock_next() — and never calls it (D-013). AHRL
accidentally shipped the successor and installed four copies of the deceased
original instead. This is the D-013 argument with a real user consequence
attached, not a hypothetical.
Action — accepted 2026-08-25, treated as priority. CARRY hamclock-next
(REVIVE from dead code), SUPERSEDE ESPHamClock, and make the backend URL a
manifest field, never a hardcoded launcher argument. Recorded as the worked
example in D-013; this is schema shape 7.
CORRECTION 2026-08-25 — tested, and the forecast was wrong¶
The text below this correction was written from reporting. Instructed to test it, I did, and one claim does not survive.
Retracted: that AHRL v27 leaves users with "four menu entries pointing at a
discontinued backend." AHRL passes -b hamclock.com:80, and hamclock.com is
up — HTTP 200, Last-Modified 2026-08-07, and /ham/HamClock/version.pl
returns 4.27 with a changelog of new features. HamClock did not stop; it was
continued by someone else, past the version AHRL ships.
Confirmed: Elwood's own server is gone. clearskyinstitute.com:80 refuses
TCP outright. The sunset was real — it landed on the original host, not on the
hostname AHRL uses.
New: hamclock.com is now a third-party, patron-funded operation ("$4.99/month is what keeps the backend on the air"), with an Amazon Appstore listing. Not the author's service, and its commercial trajectory is not ours to predict.
Also resolves the 4.22-vs-4.23 discrepancy: neither was final. Newsline was right in January, AHRL was right in May, and the live backend is on 4.27.
What this changes for the disposition. SUPERSEDE still stands, but for a different and better reason. Not "the original is dead" — it isn't. Rather: AHRL's four builds are pinned to a frozen 4.23 while the ecosystem moved to 4.27 across two maintained MIT forks, and AHRL's backend host is now a commercial third party its users never chose. Shape 7 is what matters here, and the testing strengthened it: the backend landscape moved twice in seven months, which a launcher constant cannot follow and a manifest field can.
Full probe results and limits in docs/reference/licence-verification.md.
Successor choice is Q-006 — there are four options, not three.
Sourcing. Verified against primary reporting and quoted in full in
licence-verification.md. Two things that must not be overstated in public
copy:
- We have not tested a live client. Correct phrasing is reported to stop functioning end of June 2026, not stopped.
- Amateur Radio Newsline reports the final release as 4.22; AHRL v27 ships 4.23. Unresolved discrepancy; it does not change the conclusion.
There are four options, not three — see Q-006. Both candidate clients are
MIT and clean under D-011: accius/openhamclock (455 stars, pushed
2026-08-22) and k4drw/hamclock-next (34 stars, pushed 2026-06-23, and it
carries Elwood's copyright forward explicitly). The other two —
hamclock.com and ohb.works — are backend services, not software.
2. Open Wouxun (owx) → CHIRP¶
Trade-off: CHIRP supports the Wouxun KG-UV family with an active
release cadence and a GUI, where owx is a 2022 CLI snapshot that needs
-Wno-* flags to compile.
AHRL installs both. Accepted 2026-08-25: CARRY both, mark CHIRP the
recommended default. owx stays for any model CHIRP lacks — superseding is not
an excuse to remove working software.
3. aa-analyzer → flaa¶
Trade-off: flaa is an actively maintained W1HKJ GUI for the same
RigExpert AA-* analyzers, where aa-analyzer is a Perl CLI depending on
Device::SerialPort, a CPAN module unmaintained for roughly a decade.
This supersession removes an entire backend. aa-analyzer is the only
CPAN consumer in the inventory (D-004 amendment). Superseding it deletes the
CPAN backend, its unpinned-network-install security problem, and its
PERL_MM_USE_DEFAULT=1 auto-accept from the 1.0 scope.
Worth weighing against D-014: a backend justified by exactly one package, where
that package has a maintained replacement, is a backend we should not build.
Recommend CARRY flaa as default, CARRY aa-analyzer only if someone wants the
CLI — and if so, satisfy it from Debian's libdevice-serialport-perl rather
than CPAN.
4. Virtual Radar Server → readsb + tar1090¶
Trade-off: tar1090 on readsb is the current ADS-B web UI and shares a
backend with the already-agreed dump1090 → readsb supersession, where
Virtual Radar Server is a Mono application and Mono was handed off by Microsoft
in 2024 and is being wound down across distros.
This makes the ADS-B stack coherent: one decoder (readsb), one web UI
(tar1090), no Mono runtime, no .exe config-patch tarball, and no launcher
that starts a decoder and killall -9s it on exit.
5. grig → flrig¶
Trade-off: flrig is actively maintained by W1HKJ and already in the
catalog, where grig is a generic hamlib front-end with no meaningful upstream
activity in a decade.
Accepted 2026-08-25: CARRY both, mark flrig the recommended default.
grig stays — it is a thin, dependency-light hamlib GUI and some operators
prefer that. For Icom, wfview is better still.
6. RTL-SDR Blog V4 driver → distro librtlsdr (verify in container)¶
Trade-off: If the distro librtlsdr now carries V4 support, using it
removes the single most destructive operation in the entire inventory.
The V4/R828D patch was upstreamed to Osmocom
rtl-sdr. If Debian 13 / Ubuntu
26.04 ship a new enough librtlsdr, AHRL's approach becomes unnecessary — and
AHRL's approach is:
rm -fr /usr/lib/librtlsdr* /usr/local/lib/librtlsdr*
rm -fr /usr/include/rtl-sdr* /usr/local/include/rtl-sdr*
rm -fr /usr/local/bin/rtl_*
…followed by hand-created .so symlinks in /usr/lib/$(arch)-linux-gnu. It
deletes distro-managed libraries with no record and no undo, every run.
High value if true — accepted 2026-08-25 as the highest-value item on this
list. Container-check the actual librtlsdr version per target; the answer
may differ between Debian 13, Ubuntu 26.04, Parrot and Raspberry Pi OS.
Where it does not hold, the replacement is not silent. The driver swap must
appear in system_modifications in full and be printed by --dry-run in
full: every deleted path, every created symlink, the udev rules file, and the
modprobe blacklist. A user is entitled to know before we delete distro-managed
libraries, not after.
7. gpsman → GPSBabel + gpsd¶
Trade-off: gpsd plus GPSBabel covers device access and format
conversion with active maintenance, where gpsman is a Tcl/Tk application
whose upstream has been dormant for years.
Low stakes — gpsman's menu entry is documentation-only in AHRL.
8–12. Infrastructure superseded by our own engine¶
| AHRL unit | Superseded by | Trade-off |
|---|---|---|
source_libs |
build_depends in the schema |
A declared per-package field is queryable and dry-runnable, where a hardcoded 12-package array is neither. |
ahrl_menus |
Generated desktop entries from categories |
A generated call list cannot drift from the catalog — which is exactly the bug that leaves hamclock-next dead (D-013). |
ahrl_docs |
Generated package reference | Generated docs cannot contradict the manifests; dpkg-query --list dumped to a text file can. |
ahrl_version |
hammunition --version |
Standard CLI behaviour beats a generated shell script that echoes a string. |
libhamlib4 |
apt depends resolution |
A shared library with no operator surface is a dependency, not a unit — every rig-control manifest that needs it declares it, and libhamlib-utils is the operator-facing hamlib manifest. Ruled by the maintainer 2026-08-30 (Q-015 decision 3). |
13. ARDOPGUI → ardopcf's built-in web GUI¶
Ruled 2026-09-30 on the gap analysis (catalog-gaps-2026-09.md A8,
Q-022 #5, "all three as stated"); it was CARRY (post-1.0) from the
73Linux delta.
Trade-off: the web GUI is built into the modem the catalog already carries and opens in any browser, phone included, where ARDOPGUI is a separate unversioned 32-bit binary with no source; what is lost is a native window, and nothing ARDOPGUI showed is missing.
What was measured on 2026-09-30:
- ARDOPGUI. 73Linux's unit is John Wiseman's ARDOP GUI, fetched from
cantab.net/users/john.wiseman/Downloads/Beta/:ARDOP_GUI, a 32-bit i386 PIE linking Qt5, andpiARDOP_GUI, 32-bit armhf, bothLast-Modified2022-08-02. There is no source repository to take a head commit from (D-032 has nothing to read):g8bpq/ardop, whose head is 2023-11-17, carries the modems and no GUI, and no other repository under that account is one. On amd64 it would need i386 multiarch Qt5; on arm64 there is no build at all. - ardopcf. Default branch
master, head 2026-09-07 (D-032), latest tag 1.0.4.1.3 (2024-10-31) — the catalog's pin. Upstream's changelog introduces the web GUI under 1.0.4.1.2 (2024-05-30) as providing "functionality similar to the ARDOP GUI previously produced by John Wiseman": spectrum, waterfall and constellation, receive level with warnings, PTT and busy indicators, protocol state, frame log and a drive-level slider. So the pin already has it and no pin bump was needed. Upstream's command-line options page at the tag documents-G/--webgui <port>, by convention 8514; a negative port opens a developer mode that accepts arbitrary host commands. - Exercised in a
debian:13rootless container: 1.0.4.1.3 built with the manifest's flags (makeexit 0),ardopcf -G 8514 8515 null nullprintedWebgui available at port 8514., andcurlofhttp://127.0.0.1:8514/returned HTTP 200, 21,138 bytes, titledArdopcf Web GUI.ssshowed both 8514 and the 8515 host port listening on0.0.0.0— every interface, which the manifest's known problems now say. Nothing was transmitted; no radio or sound card.
Unmeasured: the web GUI's controls against a live signal, and any
browser other than curl.
ardopcf declares supersedes: [ARDOPGUI]; the packet profile's manual
configuration names the flag beside pat http.
REVIVE¶
| Unit | What I would try |
|---|---|
ardop |
Try the install method before the build. 73Linux does not compile ARDOP — it pulls upstream's prebuilt release asset via the GitHub Releases API. AHRL's compile error may be irrelevant. Cheapest possible revival: change the backend, not the code. |
radiosonde_auto_rx |
Standard venv install from the pinned upstream tag. AHRL's objection was that it hardcodes pi as the username and lives in $HOME — exactly what scope: user plus a venv backend exists to handle. |
ibp |
Build current source with the -Wno-implicit-int -Wno-deprecated-declarations family, as AHRL itself did before disabling. If it still fails, SUPERSEDE — find what shows IBP beacon status now. Never RETIRE: the beacons still transmit. |
dream |
Establish whether Qt5 WebKit is genuinely required or only for an optional dashboard. If required, look for a maintained fork; if none, this is a documented gap, not a quiet removal. |
mvoice |
libopendht-dev is the blocker. Check whether OpenDHT is packaged again, vendorable, or whether a maintained M17 client supersedes mvoice entirely (D-007 says M17 is ours to build regardless). |
hamclock-next |
Revive AHRL's own dead code. The function, the tarball, the menu entry and the changelog entry all exist; only the call is missing. Verify the build, then carry it as the HamClock successor (SUPERSEDE #1). |
RETIRE — beyond the settled four¶
Reason codes are the policy's three: (1) world changed, (2) never worked, (3) out of scope.
| Unit | Reason | Evidence |
|---|---|---|
Firefox / install_browser |
3 | We do not install web browsers. Every target ships one. AHRL's browser logic is also its buggiest — $BROWSER is never assigned, and the snapd branch adds an unpinned PPA plus an APT pin. Depend on x-www-browser existing; do not manage it. |
| Notepadqq | 3 | General-purpose text editor. Present for the ARRL Teachers Institute menu, not for radio. |
| TkCVS | 3 + 1 | A Tk GUI for CVS and Subversion. CVS is dead; this has no menu entry in AHRL and no connection to radio. |
| xosview | 3 | X11 system load monitor from the 1990s. No menu entry, not radio. |
| Backdrops | 3 | 20 MB of desktop wallpapers. We are not a desktop theme. |
| PyAutoGUI | 3 | AHRL's own menu-regression harness. Becomes our CI, not a catalog entry. |
mfc_gpl |
2 | Settled. |
tt3_gpl |
2 | Settled. |
noaa-apt |
1 | Settled. |
xwxapt |
1 | Settled. |
| Arduino IDE | 3 | Debian ships IDE 1.x, deprecated upstream. Shipping a deprecated IDE is worse than shipping nothing — document and point at arduino.cc. Accepted 2026-08-25. |
All six proposed RETIREs accepted 2026-08-25, plus Arduino from the EDA
split. install_browser in particular: depend on x-www-browser, never manage a
browser.
Deliberately not retired, though each looks like a candidate:
atlc,wwl,sunclock,qgrid,Fl_MoxGen— old, but finished and correct. The policy explicitly forbids retiring for age.wordsworth— two Perl scripts, but they work and nothing replaces them.linpac— superficially superseded by the new packet stack, but keyboard-to- keyboard packet is a different workflow from Winlink. CARRY both.xwefax— HF radiofax is still transmitted (NOAA, DWD, JMA). Not a world- changed case, unlikexwxapt. See NEEDS-DECISION on fldigi overlap.
NEEDS-DECISION — AHRL¶
| Unit | The specific question |
|---|---|
| Claws Mail | RESOLVED 2026-08-30 (Q-015 #1): neither carried-by-default nor documented-away. The packet profile detects an existing mail client and respects the system's choice; only when none is found does an interactive run offer an open-source selection — Thunderbird, Claws Mail, Evolution, Geary — each now a catalog manifest, none ever installed silently, --yes skipping with a note (the D-035 shape). Claws Mail is CARRY as one option among four. |
| PuTTY | RESOLVED 2026-08-30 (Q-015 #2): CARRY, as the recommended option in the workstation profile's serial-terminal suggestion group (detect-respect-offer, same mechanism as the mail client). Offered alongside CuteCom, picocom, tio and minicom; Termius (proprietary freemium) and MobaXterm (Windows-only) are named in the docs but not offered. |
Reserved to the maintainer — investigated, not decided¶
The EDA / electronics cluster¶
The policy lists kicad, pcb, gerbv, gspiceui, gwave, Arduino IDE and
Fritzing, proposing a separate electronics profile.
What the investigation adds — the cluster as listed is not homogeneous. There is a defensible line inside it, and it does not fall where the list does:
| Genuinely general electronics | Genuinely RF/antenna |
|---|---|
| KiCad (+ gerbview, pcbnew) | xnec2c — antenna modelling |
| Fritzing | Coil64 — coil inductance |
| GSpiceUI + ngspice | atlc — transmission-line calculator |
| Arduino IDE | gsmc — Smith chart |
Fl_MoxGen — Moxon antenna design |
|
flaa / antscope2 — antenna analysers |
|
nanovna-saver, QtTinySA — VNA / spectrum analyser |
The right-hand column is radio work that happens to involve components. It belongs in ham-core. The left-hand column is a hobby that overlaps.
Two facts for the decision:
- gspiceui needs fixing either way — it hardcodes an aarch64-linux-gnu
symlink path on every architecture and leaves a dangling symlink on x86_64.
- The Debian arduino package is Arduino IDE 1.x. IDE 2.x is distributed by
arduino.cc as a .deb/AppImage. Carrying the apt package means shipping a
deprecated IDE. If the cluster is carried at all, this is a SUPERSEDE.
pcb, gerbv and gwave are not in AHRL v27 — v26a removed gwave and
replaced pcb/gerbv with KiCad's equivalents. Only KiCad, Fritzing, GSpiceUI,
ngspice and Arduino are live decisions.
Resolved 2026-08-25 — split accepted¶
- ham-core:
xnec2c,Coil64,atlc,gsmc,Fl_MoxGen,flaa,nanovna-saver,QtTinySA. Antenna and RF test work. electronicsprofile, opt-in:kicad,fritzing,gspiceui,ngspice.- Arduino — RETIRE, reason (3). Do not carry the Debian
arduinopackage: it is Arduino IDE 1.x, and shipping a deprecated IDE is worse than shipping nothing. Document the omission and point users at arduino.cc for IDE 2.x. pcb,gerbv,gwave— out of consideration entirely. Not in AHRL v27; v26a removedgwaveand replacedpcb/gerbvwith KiCad equivalents.gspiceui's hardcodedaarch64-linux-gnusymlink is fixed via thearchselector regardless of profile (D-016).
Morse Runner¶
What the investigation adds: carrying Morse Runner means carrying Wine into
the core for a single CW trainer — and it is x86_64-only, so every ARM user
(Raspberry Pi, uConsole) already gets nothing. AHRL deletes its .desktop file
on aarch64.
Alternatives exist and are real:
- Morse Runner CE (community edition, w7sst/MorseRunner) — the fork AHRL
already pulls, still a Windows binary.
- qrq — already in the catalog, native, actively maintained; a CW speed
trainer rather than a contest simulator, so not a straight replacement.
- ebook2cwgui, xcwcp, wordsworth — also already carried, also native,
also not contest simulators.
The honest position: nothing native replicates Morse Runner's contest simulation. The choice is a Wine dependency for one x86_64-only trainer, or a documented gap.
Resolved 2026-08-25 — conditional¶
If Morse Runner CE or a native alternative builds, carry that and drop the Wine prefix from 1.0. If neither does, defer Morse Runner post-1.0 alongside VARA rather than pulling Wine into core for a CW trainer.
Either way Wine leaves the 1.0 core: it exists in AHRL solely for this unit, and
VARA reintroduces it post-1.0 regardless. Disposition stays M pending the build
attempt — this is a testable condition, not an open opinion.
Tested 2026-09-30 — the second clause holds: CARRY the native port¶
The maintainer ruled on Q-022 #5 ("all three as stated") that the
conditional be tested, from the gap analysis (catalog-gaps-2026-09.md A8).
Each clause, against what was measured:
"If Morse Runner CE … builds" — no. The Community Edition is
w7sst/MorseRunner: MPL-2.0 (LICENSE.md), default branch main head
2026-09-25 "Roll version number for final 1.86 build" (D-032), and v1.86 is
a full release that day — no longer "in preparation". Its tree at v1.86 has
MorseRunner.dpr and .dproj and no Lazarus project; lazbuild will
not take the .dproj, and fpc -Mdelphi with every Lazarus unit path set
stops at Main.pas(15,3) Fatal: Can't find unit Windows (Debian 13, FPC
3.2.2). That is CE's code, not a missing path: Main.pas uses Windows
and Messages and calls Windows.PostMessage, and the whole audio layer
(VCL/SndCustm.pas, SndOut.pas, SndTypes.pas, WavFile.pas) is built
on MMSystem, the Windows multimedia API.
The README lists "Integrate a recent Linux port" under Goals: the gap
analysis's "has a Linux port" was wrong, and is corrected here rather than
carried forward (D-018).
"… or a native alternative builds" — yes. The Linux port the CE
README names is Zach Metzinger's Lazarus/FPC conversion of VE3NEA's 1.68
(zmetzing/MorseRunner, default branch master, head 29590a67
2022-05-23, 22 commits, no tag; the CE repository mirrors it as a branch).
Measured in rootless debian:13 containers, never on the host:
- Build:
lazbuildexit 0 in about 10 s, 284 MB peak RSS; then again the way the manifest runs it —make -j 2in the checkout as an unprivileged user with onlybuild-essential fpc lcl-utils lcl-units lcl-gtk2 libsdl1.2-dev— exit 0. A 29.7 MB x86-64 executable linking GTK2 and libSDL-1.2 (sdl12-compat).lazbuildlives inlcl-utils, notlazarus-ide, which a first attempt found the hard way. - Window: started under Xvfb, it drew its main form — the Morse Runner 1.68 banner, the Station, Band Conditions and Run panels, the F1–F8 keys. A click on Run switched it to a Pile-Up run with the log columns showing.
- Audio: with the ALSA default device pointed at a file over the null plugin, the run wrote non-silent samples (7.9 million non-zero bytes). The null device has no clock, so the program ran unpaced: it wrote 1.7 GB in about twelve seconds, and printed a debug line per buffer. That proves it produces audio, not how it sounds or how fast it logs against a real sound card.
- Kali: the same build fails at
Can't find unit Interfaces, because Debian'slazbuildtargets GTK2 and Kali carries nolcl-gtk2(lcl-qt5only). The seven-target sweep:fpc,lcl-utils,lcl-units,libsdl1.2-devon all seven;lcl-gtk2on all but Kali. - Licence: the source files carry MPL-2.0 headers; the port has no LICENSE file and its Readme still says "freeware" from 2006.
"…carry that and drop the Wine prefix from 1.0" — Wine left the 1.0 core on 2026-08-30 (Q-015 decision 5) and nothing here brings it back.
Decision: CARRY, as catalog/packages/morse-runner.yaml — the port at
its head commit with an own_choice pin review (D-024), x86-64 on every
target but Kali, installed as a tree handed to the operator (D-043, because
it saves MorseRunner.ini beside its executable), with a launcher. It is in
no profile: the build dependencies came to 1.8 GB on a bare Debian 13
image, against a morse profile under 100 MB, so that profile names it
instead. The CE's later contests are not in this program, and the manifest
says so first.
Unmeasured: an install through the engine on any target (the dry run plans it); a build on Parrot, Ubuntu, Mint or arm64; playback heard through PipeWire or a real card; the debug output's rate in real time.
73Linux delta — 28 units¶
A licensing constraint that governs most of this table¶
73Linux has no licence (D-001). That is survivable for third-party software, because we take facts — names, versions, URLs, methods — and write our own manifests. It is not survivable for software KM4ACK wrote himself: those are original works in an unlicensed repository, and we cannot redistribute them or derive from them.
Roughly half the delta is KM4ACK's own scripting. Those units are RETIRE regardless of merit — not because they are bad, but because we have no right to ship them. If the licence question is ever resolved with Jason (D-001's suggested email), most of this section reopens.
ADD — the 1.0 packet core (D-008), corrected to eight units¶
Correction accepted 2026-08-25. PITERM, QTSOUND and PIAPRS were
misclassified as Pi system helpers on the strength of their filename prefix. They
are QtTermTCP, QtSoundModem and an APRS messaging client — third-party packet
software. All three move into the 1.0 packet core. See D-008's correction.
| Unit | What it is | Backend |
|---|---|---|
QtTermTCP (PITERM) |
Packet terminal over TCP (G8BPQ) — pairs with BPQ | Binary |
QtSoundModem (QTSOUND) |
Soundcard packet modem (UZ7HO / Wiseman port) — alternative to Direwolf | Binary |
Pi-APRS (PIAPRS) |
APRS messaging client | Binary |
| PAT | Winlink client (la5nta/pat) |
Vendor .deb from GitHub Releases, per-arch |
| AX.25 | ax25-tools + ax25-apps + /etc/ax25/axports config |
apt + templated config |
| BPQ (linbpq) | BBS / Winlink gateway node (G8BPQ) | Binary — but see verification problem |
| ARDOP | ARDOP modem | Prebuilt release asset (also REVIVEs AHRL's ardop) |
| Direwolf | Soundcard TNC — with configuration | Already CARRY'd from AHRL; the ADD is the config |
Status, 2026-08-28 — five of eight, and four by a better route¶
| Unit | Manifest | How, against how 73Linux does it |
|---|---|---|
| PAT | pat |
apt — 73Linux fetches a vendor .deb per architecture |
| AX.25 | ax25-tools, ax25-apps |
apt. The /etc/ax25/axports config is still open |
| BPQ | linbpq |
source from upstream's own tag — 73Linux takes an unversioned prebuilt from a directory named Beta |
| ARDOP | ardopcf |
source from upstream's release tag — 73Linux pulls a prebuilt release asset |
| Direwolf | direwolf |
apt. The ADD is the configuration, still open |
| QtTermTCP | — | binary backend, not written |
| QtSoundModem | — | binary backend, not written |
| Pi-APRS | — | binary backend, not written |
None of the three outstanding is packaged on any target: apt-cache policy
finds no candidate for qttermtcp, qtsoundmodem, garim or varim on
Debian 13, Ubuntu 26.04 or Kali (2026-08-28). xygrib, listed further down as
an ADD candidate, is in apt on all three and now has a manifest.
The two open items are the same one: station-local configuration. axports
and direwolf.conf both need a callsign, which is the question CLAUDE.md
records as blocking and which linbpq's config_files block already depends
on.
ADD candidates — third-party, genuinely useful, not yet scoped¶
I flagged these as "Pi-system helpers, out of scope" in D-008. That was wrong
and I am correcting it. The PI* prefix is 73Linux's naming, not a statement
about the software. Three of them are G8BPQ packet tools:
| Unit | What it actually is | Why it matters |
|---|---|---|
| QTSOUND | QtSoundModem (UZ7HO / Wiseman port) | A real soundcard packet modem. Direct alternative to Direwolf for some setups. Belongs in the packet discussion, not a helper bucket. |
| PITERM | QtTermTCP (G8BPQ) | Packet terminal over TCP. Pairs with BPQ. |
| PIAPRS | APRS messaging client | Overlaps Xastir/YAAC but is messaging-focused |
| XYGRIB | GRIB weather viewer | Third-party, open source, genuinely absent from ham catalogs |
| GARIM / VARIM | ARIM / VARIM file transfer over ARDOP / VARA | Core EMCOMM file transfer; GARIM is open, VARIM pairs with closed VARA |
Resolved 2026-08-25: QtSoundModem, QtTermTCP and Pi-APRS move into the 1.0 packet core. GARIM/VARIM and XYGRIB remain ADD, scoped with VARA post-1.0 where they depend on it.
CARRY / post-1.0¶
| Unit | Disposition | Note |
|---|---|---|
| ARDOPGUI | SUPERSEDE — by ardopcf's web GUI (2026-09-30) |
Was CARRY (post-1.0). Ruled on Q-022 #5: ardopcf has served its own browser GUI since 1.0.4.1.2. See SUPERSEDE #13. |
| PATMENU3 | RETIRE | KM4ACK's menu wrapper for PAT — licence blocked, and ruled 2026-08-30 unneeded: pat http ships the interface the wrapper fronts. Documented in the packet profile. |
| VARA | ADD (post-1.0) | Closed-source freeware, needs Wine prefix. Settled post-1.0 by D-008. |
| HAMRS | ADD (post-1.0) | Proprietary freemium, AppImage, upstream scrapes its own download page. Settled post-1.0. |
| GPS | CARRY | gpsd — we need it anyway for the hardware layer |
| REPEAT | RETIRE (revisit on demand) | RepeaterSTART, third-party. Ruled 2026-08-30: open and harmless, but nothing in the five-source union's 1.0 rationale needs a repeater directory. Post-1.0 candidate. |
| M0IAX | RETIRE (revisit on demand) | JS8Call utilities, third-party. Ruled 2026-08-30: no measured demand; revisit when a JS8 profile user asks. |
RETIRE — 73Linux delta¶
| Units | Reason | Note |
|---|---|---|
| EES, GPSUPDATE, SHOWLOG, SECURITY, GRIDCALC, DIPOLE, BATT, PIQSO, PATMENU | 3 (and licence-blocked) | KM4ACK's own scripts in an unlicensed repo. Several are genuinely useful — EES is an emergency email server, DIPOLE and GRIDCALC are calculators — but we cannot ship them. Where the function matters (dipole calculator, grid calculator) we write our own or find a licensed equivalent. |
| CONKY, PISTATS | 3 | System monitors. Not radio. |
| VNC | 3 | RealVNC viewer — proprietary, general-purpose remote desktop. |
Skywave delta — 9 units¶
Applies the policy to skywave-inventory.md's measured delta. Every one is
absent from Debian, stable and unstable (measured in debian:13 and
debian:sid), so none can arrive by apt and each names the backend it forces.
This is the cluster that justifies the source-from-git backend more than any
single AHRL unit does: a coherent aeronautical/maritime decoding domain no other
source in the union — and no Debian release — covers. None has a manifest yet.
| Unit | Disposition | Upstream (resolved, D-018) | Licence | Backend | Note |
|---|---|---|---|---|---|
| LibACARS | ADD | szpajder/libacars |
MIT | source-from-git (CMake) | Dependency of the four decoders below; depends for each. |
| Acarsdec | ADD | f00b4r0/acarsdec |
GPL-2.0-only | source-from-git | Install from the maintained successor; TLeconte/acarsdec is archived. Skywave 5.10 already ships the f00b4r0 line (v4.4.1). |
| Acarsserv | ADD | TLeconte/acarsserv |
GPL-2.0 | source-from-git | The one at-risk unit: archived, and untouched since 2018-12-19 (re-verified 2026-08-28; the archive date previously stated here was not sourceable). Still the SQLite companion acarsdec documents. Carry, and record the archived-upstream risk (D-024 territory — pin the commit a distribution packages; here none does, so pin our own and watch for a successor). |
| DumpHFDL | ADD | szpajder/dumphfdl |
GPL-3.0 | source-from-git (CMake) | Active (2026-08-07). Depends on LibACARS. |
| VDLM2dec | SUPERSEDE → dumpvdl2 |
szpajder/dumpvdl2 |
GPL-3.0 | source-from-git (CMake) | Meets all four SUPERSEDE bars: same function, maintained, same install, one-sentence trade-off — dumpvdl2 is the maintained VDL Mode 2 decoder; vdlm2dec is archived. Skywave ships the archived vdlm2dec 2.3; we carry the successor and record superseded_by:. |
| RTLSDR-Airband | ADD | rtl-airband/RTLSDR-Airband |
GPL-2.0 | source-from-git (CMake) | Active, v5.3.0 (2026-08-16) — Skywave ships 4.0.2. Canonical repo resolved past two redirects. |
| Kalibrate-RTL | ADD | steve-m/kalibrate-rtl |
BSD-2-Clause | source-from-git (autotools) | Dormant, not active — last commit on master is 2022-02-01, and it has never cut a tag (re-verified 2026-08-28; the "active" claim came from GitHub's updated_at, which moves when somebody stars a repository). Consequence for the manifest: no tag to pin, so it needs a commit pin with a pin_review (D-024). Kali packages it and Debian does not, so the basis can be distribution_pin rather than own_choice if Kali's revision is identifiable. |
| SuperSDR | ADD — resolved 2026-08-29 (Q-007, carried under D-033) | mcogoni/supersdr |
none — default copyright | source-from-git / python-in-place | The headline listening client, and it carries no licence — no LICENSE, no header, checked in-tree. The other two KiwiSDR clients in AB9IL's set are no better. Also dormant: last commit 2022-12-31 (re-verified 2026-08-28; the earlier "active (2026-02-18)" was GitHub's updated_at). Unlicensed and three and a half years untouched was a materially weaker case than Q-007 was posed with — and the maintainer carried it anyway under D-033 (community adoption weighed, position stated, fetched from the author's repo, never mirrored). The manifest exists (venv+payload hybrid) and confirmed on all three campaign targets. |
| Reticulum MeshChat | ADD (post-1.0) | liamcottle/reticulum-meshchat |
MIT | AppImage | Ships Linux only as an AppImage — a cleaner second consumer than HAMRS (ordinary GitHub release assets, no page-scraping). Lands in the post-1.0 mesh profile, so it does not promote AppImage into 1.0, but the backend now has two independent users (D-014). |
Backend tally. Seven 1.0 units (six ADD + the dumpvdl2 SUPERSEDE) are
source-from-git; LibACARS is a shared depends for four of them. MeshChat is
the post-1.0 AppImage. SuperSDR would be an eighth source build if Q-007 carries
it. Skywave adds no backend requirement AHRL did not already impose — but it
is the densest single argument for finishing source-from-git, because the whole
delta needs it and buys a domain nothing else covers.
Profile placement. All eight decoders/clients land in listening
(profile-sizing.md sized it with room); MeshChat in post-1.0 mesh.
DragonOS Tier 1 — 24 units¶
Applies the policy to dragonos-tier1-inventory.md. Membership was decided by an
apt-cache policy probe in all four x86 targets, not by the list in SCOPE.md.
The headline is that Tier 1 is mostly already ours: 16 of the 24 arrive
through AHRL parity or the Debian Blend and are CARRY, cross-referenced below and
not re-argued. The 8 genuinely-new SIGINT units are ADD — and seven already
have manifests; the catalog anticipated them. Only sdrangel remains to write.
The 16 already covered — CARRY (cross-reference)¶
Not re-classified here; each is dispositioned where it first appears.
| Via AHRL (already CARRY/SUPERSEDE) | Via Debian Blend |
|---|---|
fldigi, js8call, wsjtx, qsstv, gpredict, gnuradio, gqrx, cubicsdr, direwolf, satdump, AIS-catcher — and sdrpp = AHRL's SDR++ (CARRY, pinned — the unversioned-snapshot fix, not a replacement) |
soapysdr-tools, uhd-host, multimon-ng, hacktv, gpsd/ffmpeg/sox (infrastructure) |
The 8 new — ADD¶
All eight are the RF-security/SIGINT contribution. Backend is apt except the two
.deb units, which need per-target install blocks (Selector already
expresses this) because apt has no candidate on some targets.
| Unit | Manifest | apt coverage | Backend | Note |
|---|---|---|---|---|
| wireshark | ✅ written | all four | apt + group_membership |
Capture without root needs the wireshark group — a disclosed modification. |
| aircrack-ng | ✅ written | all four | apt | Wi-Fi audit suite. |
| hcxdumptool | ✅ written | all four | apt | WPA capture. Transmit-adjacent; RF-security profile. |
| hcxtools | ✅ written | all four | apt | Companion conversion tools. |
| ubertooth | ✅ written | all four | apt | BLE/BT sniffer host tools. Owned hardware (issue #9). |
| rtl-433 | ✅ written | all four | apt | ISM 433/868/915 decoder. |
| inspectrum | ✅ written | all four | apt | Offline signal visualiser. |
| sdrangel | ❌ to write | Kali only | upstream .deb per-target |
f4exb/sdrangel ships sdrangel_7.27.2_ubuntu-26.04_amd64.deb; tested to install on Ubuntu 26.04 only, apt on Kali. Needs a Selector block, not one URL. |
Two .deb cautions carried from the inventory, both pin/hash-database work,
neither a blocker here. sdrangel's artifact installs only on the base it was
built for (per-target blocks required); sdrpp has no pinnable release — its
assets hang off a rolling nightly tag, so the URL is stable and the artifact
behind it is not. Record both against the pin/hash sub-project SCOPE.md names.
Backend tally. Six apt (all written), one apt-with-group (wireshark,
written), one upstream .deb with a per-target selector (sdrangel, to write).
DragonOS Tier 1 adds no source build — it is the cheapest of the five deltas,
exactly as SCOPE.md's staging predicted, and it is nearly done.
Profile placement. All eight in rf-security (the opt-in SIGINT profile).
Cellular/EW is deliberately not here — 20 units, transmit-capable, blocked on
Q-008.
EmComm Tools OS Community delta — 11 units¶
Applies the policy to etc-inventory.md. Recommended on 2026-09-06 and
decided on 2026-09-12 by ETC sub-project 4 (D-048): the software units
are dispositioned below and indexed at the foot of this document; the five
offline-data units keep their ADD and wait for sub-project 5's category.
What is measured: the licence and latest tag of every upstream, by gh api
on 2026-09-06 and again on 2026-09-12, and apt-cache policy on all seven
targets on 2026-09-12. The four software units were exercised on a Debian 13
container that day; the verdicts say what was seen.
| Unit | Decided | How | What was seen (2026-09-12) |
|---|---|---|---|
| paracon | ADD — catalog/packages/paracon.yaml |
binary, the 1.3.0 .pyz hashed |
paracon --version → Paracon 1.3.0 on Debian 13, Python 3.13.5. AGWPE to Direwolf; no kernel AX.25 needed, which is the point (D-045). |
| artemis | ADD — catalog/packages/artemis.yaml |
venv from the 4.2.0 source tarball, hash-pinned requirements | The vendor .deb is refused: its Package name is artemis, which every target's archive already gives to a Sanger genome browser at 18.2.0, and it Depends on libpython3.12. The pinned set installs and import artemis succeeds on Debian 13; the GUI is not yet opened from this install. |
| gpa | ADD — catalog/packages/gpa.yaml |
apt on Ubuntu 24.04, 26.04 and Mint (0.10.0 / 0.11.0 / 0.10.0); autotools from the gnupg.org tarball on Debian 13, Parrot, Kali | Tarball signature verified against the GnuPG distribution key; configure and make exit 0 on Debian 13; gpa 0.11.1. |
| chattervox | NEEDS-DECISION — kept, with evidence; RETIRE on 2026-09-30 (Q-022 #5, see below) | — | The 0.7.0 bundle runs --help on Debian 13; the source builds on Node 20 with npm ci --ignore-scripts and runs --version; kiss-tnc loads without serialport's native build, and whether a KISS port opens without it is untested. Only prereleases exist, head 2019-03-17, and two dependencies are git commits rather than registry packages. Carrying the bundle is a fetched Node runtime (refused by D-037); carrying the source is the node backend with two git fetches. The maintainer's call, as recommended. |
| mbutil | RETIRE (not-carried.md) |
— | python2 setup.py install; nothing in ETC's own workflow calls it. |
| pfte | RETIRE (not-carried.md) |
— | Proprietary, unsigned, no source. GnuPG covers the workflow. |
| navit, kiwix, mbtileserver, gis-tools, dict | ADD, outstanding | — | Sub-project 5: the offline-data layer needs a category first. parity-coverage.md carries the reason. |
The table the recommendations were made from:
Two of ETC's delta units are offline data, not software, and are not
dispositioned as units: download-et-maps.sh (an .mbtiles tileset from ETC's
own release) and download-wikipedia.sh (a ZIM from download.kiwix.org).
They are the offline-data layer, ETC sub-project 5, and need a category the
catalog does not have before either can be carried.
| Unit | Recommended | Route | Evidence | Note |
|---|---|---|---|---|
navit (+ maptool, osmium-tool) |
ADD | apt | navit and maptool have Debian 13 candidates |
Offline turn-by-turn navigation. Useless without a map; pairs with sub-project 5. |
paracon (install-bbs-client.sh) |
ADD | binary (.pyz, pinned, sha256) |
MIT; 1.3.0 is current (2025-10-12), ETC pins 1.1.0 (2024-06) | A single-file Python packet terminal. Depends on AX.25 being up — the D-035 station-config gap applies. |
| chattervox | NEEDS-DECISION | binary (Node bundle) | GPL-3.0-or-later; last tag 0.7.0 (2019-03-17), last push 2020-01-04 | Dormant six years. Carrying it means carrying a bundled Node runtime of that age. The policy's bar for dormant-but-working is a test on a target, not an inherited verdict — install it before deciding. |
kiwix (install-wikipedia.sh) |
ADD | apt | kiwix, kiwix-tools, zim-tools have Debian 13 candidates; no package is named zimwriterfs, though zim-tools 3.5.0 ships /usr/bin/zimwriterfs (corrected 2026-09-29, D-066) |
The offline reader. ETC's package list names zimwriterfs as a package, which Debian 13 does not carry, so a manifest naming it fails the apt step whole; only a ZIM writer needs the binary anyway. Carried as kiwix-tools and kiwix in the reference profile (D-066). |
| mbtileserver | ADD | binary (Go, pinned, sha256) | ISC; 0.11.0 (2024-10-03) is current; no Debian 13 candidate | Serves the sub-project-5 tileset to a browser. Nothing to serve without it. |
| mbutil | RETIRE | — | BSD-3-Clause; last tag 0.3.0 (2017-05-03); ETC runs python setup.py install under python2, which Debian 13 does not ship |
Import/export for MBTiles. The maps ETC ships are already MBTiles; nothing in its own workflow calls it. Record the reason, do not carry. |
gis-tools (qgis, sqlite3, and gpsbabel + gpsbabel-gui) |
ADD for qgis; the rest is already CARRY |
apt | qgis and gpsbabel-gui have Debian 13 candidates |
gpsbabel is in the catalog already. qgis is large; profile placement, not the manifest, is the question. |
dict (dict, dictd, dict-gcide) |
ADD | apt | all three have Debian 13 candidates | Offline dictionary. Cheap; the offline-data profile's smallest member. Carried as dictionaries, with WordNet, FOLDOC and VERA added (D-066). |
| artemis | ADD | binary (zip, pinned, sha256) | GPL-3.0; 4.2.0 is current (2026-07-18), ETC pins 4.1.0 | Signal-identification reference with the sigidwiki database offline. The one ETC delta unit that belongs in listening/rf-security rather than an EMCOMM profile. |
| gpa | ADD, build-only | source (tarball from gnupg.org, pinned, sha256) | no Debian 13 candidate (measured 2026-09-06); ETC builds 0.11.1 | GNU Privacy Assistant, for AmRRON's signed-traffic workflow. Every target needs the build; check apt-cache policy on the others before assuming Debian 13's answer is theirs. |
| pfte | RETIRE | — | proprietary .deb from paranoiaworks.mobi, no licence, no source, unsigned download |
Paranoia Text Encryption. A closed binary from a vendor site fetched without verification is what the security requirements refuse by name; the AmRRON workflow it serves has GnuPG. Record the reason, do not carry. |
Tally. 7 ADD (5 apt, 3 binary, 1 source — gis-tools counts once for
qgis), 2 RETIRE, 1 NEEDS-DECISION (chattervox, retired 2026-09-30),
plus 2 data downloads deferred to
sub-project 5. Every ETC fetch is unverified upstream (34 of 34); every
binary and source route above is pinned and hashed under this project's rules
or it is not written.
chattervox — RETIRE, 2026-09-30¶
Ruled on Q-022 #5 ("all three as stated") from the gap analysis
(catalog-gaps-2026-09.md A8), which had it as the one NEEDS-DECISION unit.
PARITY-POLICY does not accept "it looks unmaintained" as a reason, so the
reason is its category (2), no upstream, together with what the test
found: the route this project's rules allow installs a client that cannot
open the link it exists to use.
Measured 2026-09-30: default branch master head 2019-03-17 "v0.7.0 bump." (D-032; the 2020-01-04 date recorded earlier was GitHub's push field, which D-032 does not read), every one of its nine GitHub releases a prerelease, the last 0.7.0 the same day; 13 open issues and no open pull requests, the newest a 2024-01-22 report that the source no longer builds, which the author has not answered. From the npm registry, npm install --ignore-scripts chattervox@0.7.0 on Debian 13's Node 20.19.2 exits 0 and chattervox --version prints 0.7.0 — but require('serialport') then fails with "Could not locate the bindings file", because the native serial layer is exactly what --ignore-scripts (D-037) does not build, and that layer is how chattervox reaches its KISS TNC.
What covers its use. Keyboard chat over AX.25 is carried three ways:
paracon (AGWPE to Direwolf, no kernel AX.25 needed, D-045), linpac,
and qttermtcp, with ax25-apps' call where the kernel stack exists.
What none of them does is chattervox's own idea, ECDSA-signed
messages. A Python reimplementation, CVAuth (mrpurplenz/cvauth, 0.1.0
announced in that issue on 2026-02-14), is the candidate if signing is
wanted; it has not been measured here, so it is named and not carried.
Beyond the six sources — the 2026-09 gap analysis¶
Units the gap analysis (catalog-gaps-2026-09.md) found in the field rather
than in any of the six inventories, recorded here so each has a disposition,
and kept out of the six-source summary and index above, whose counts are the
inventories'. Mercury and FreeDATA are ADD by the maintainer's ruling on
Q-022 #6. The apt adds are ADD on the report's recommendation (section
D, item 6), which Q-022 says needs no ruling once the seven-target sweep
confirms a unit; a unit the sweep or the decision record rules out is listed
with why. The first batch of source-built adds (section D, item 10:
piHPSDR, FreeDV 2.x, DroidStar) is ADD on the same footing: Q-022 says
they need a D-032 liveness check and a measured build, not a ruling. So is
the second batch (dump978-fa, nrsc5, LibreVNA, k5prog, radio_tool,
tar1090), measured 2026-10-01.
| Unit | Decided | How | What was measured (2026-09-30) |
|---|---|---|---|
| mercury | ADD — catalog/packages/mercury.yaml, packet profile (Q-022 #6) |
apt on Kali (1.9.13+ds-1); elsewhere a make build of tag v1.9.15, the release Debian unstable packages (D-024) |
GPL-3.0 LICENSE; default branch mercuryv2 head 2026-09-30 (D-032). Built on Parrot in 8 s, 156 MiB peak. Debian's pat 0.16.0 carried a message peer to peer through two Mercury 1.9.15 instances wired back to back, with no radio and no sound card. Upstream's own apt repository is not used: its https certificate does not verify. |
| freedata | ADD — catalog/packages/freedata.yaml, packet profile (Q-022 #6) |
venv, the 0.18.2 wheel and 68 dependencies hash-pinned; x86-64 only | GPL-3.0 LICENSE; default branch main head 2026-07-27, which is the v0.18.2 tag (D-032). No target packages it. The wheel carries the built web interface and its own libcodec2, so no Node step and no codec2 build. The pinned set installed into a Python 3.13 venv and the codec2 binding loaded; the server was not started. |
| gr-fosphor | ADD — catalog/packages/gr-fosphor.yaml, sdr profile |
apt | Offered on all seven targets. GPL-3.0 COPYING; default branch master head 2024-03-23 (D-032), the snapshot five targets package. The .deb Depends on gnuradio-dev and on the OpenCL loader only. No fosphor block was run; the field laptop's Iris Xe is unmeasured. |
| libiio-utils | ADD — catalog/packages/libiio-utils.yaml, electronics profile; linked from the plutosdr device |
apt | Offered on all seven targets (0.25 or 0.26). Tools GPL-2.0-or-later, library LGPL-2.1-or-later (README); default branch main head 2026-09-28 (D-032), upstream tagged v1.0.0 while the archives carry 0.x. Seven tools and no desktop entry, so an iio_scan launcher runs iio_info -S. No PlutoSDR or ADALM2000 is owned; nothing was scanned. |
| stm32flash | ADD — catalog/packages/stm32flash.yaml, electronics profile |
apt | 0.7 on all seven targets. GPL-2.0; SourceForge default branch master head 2026-03-06 (D-032), still adding parts; v0.7 is the latest tag. No device in the hardware catalog, owned or not, is recorded as flashing over the STM32 serial bootloader (the STM32 entries use USB DFU), so no device links to it (D-026: the means of talking to a device, not gated on one). Nothing was flashed. |
| ser2net | ADD — catalog/packages/ser2net.yaml, no profile (install by name) |
apt | Offered on all seven targets (4.6.0 to 4.6.5). GPL-2.0; default branch master head 2026-08-14 (D-032), latest tag v4.6.8. Read from the Debian 13 .deb and measured in a debian:13 container: installing it enables ser2net.service, which runs as root, and the shipped /etc/ser2net.yaml listens on loopback ports 2000, 2001, 3000 and 3001 for /dev/ttyS0 and /dev/ttyS1. That is why it is not in station: a base profile would give every local account those ports without dialout. Not run against a radio. |
| qpwgraph | ADD — catalog/packages/qpwgraph.yaml, digital-modes profile |
apt | Offered on all seven targets, 0.6.1 (Ubuntu 24.04, Mint) to 1.0.3 (Kali). GPL-2.0-or-later; default branch main head 2026-08-26, the v1.0.4 release (D-032). Ships its own desktop entry. Placed in digital-modes, whose manual configuration names audio routing; the audio guide names no profile. Not opened on any target. |
| gpsprune | Not added — D-061 | — | Offered on all seven targets (23.2 to 27). Not carried because D-061 measured it on 2026-09-28 and left it out: it draws its maps from online tiles, and the navigation profile's exclusions say so. The gap report recommended it without citing D-061; a change needs the maintainer to amend that decision. |
| opencpn | ADD — catalog/packages/opencpn.yaml, navigation profile |
apt | Offered on all seven targets, 5.8.4 (Ubuntu 24.04, Mint) to 5.14.1 (Kali). GPL-2.0-or-later with bundled code under other licences (LICENSING); default branch master head 2026-09-29 (D-032). The Debian 13 .debs ship a desktop entry, four plugins and a world basemap; the Recommends opencpn-sglock-amd64 has no candidate on Debian 13, Parrot or Ubuntu 24.04. Not opened: OpenGL on the field laptop's Iris Xe, the gpsd and gps-tether (NMEA, 127.0.0.1:10110) connections and an AIS feed are all unmeasured. |
| pihpsdr | ADD — catalog/packages/pihpsdr.yaml, sdr profile |
make build of DL1YCF's tag v3.0 (commit 2552f77); nothing packages it, so upstream's tag is the pin (D-024) |
Measured 2026-10-01. No target offers pihpsdr or deskhpsdr. GPL-3.0-or-later (COPYING and headers). D-032: DL1YCF's master head 2026-09-02, tags v2.5 to v3.0 in 2025–26; G0ORX's original still merges pull requests (head 2026-06-03) but last tagged in 2021. Built in a rootless debian:13 container: 35 s, 216 MiB peak, 21.7 MB executable. First start spent 54 minutes on FFTW wisdom at the lowest priority beside another build; with upstream's hpsdrsim simulator running it discovered the simulated radio over protocols 1 and 2. No real radio, no transmit, no audio. SoapySDR left off, as upstream's Makefile has it. |
| droidstar | ADD — catalog/packages/droidstar.yaml, digital-modes profile |
cmake build of the default branch's head c6a4c54 (no tags; own-choice pin, D-024) with a two-line patch; Debian 13, Parrot, Kali and Ubuntu 26.04 only |
Measured 2026-10-01. No target offers it; Ubuntu 24.04 and Mint carry Qt 6.4.2, below its 6.5 floor. No LICENSE file; every own source file is GPL-3.0-or-later by header, bundled IMBE GPL-3.0-or-later, mbelib ISC, Codec2 LGPL-2.1. D-032 head 2026-09-13. Upstream removed its downloadable vocoder plugin on 2025-10-19, so nothing executable is fetched at run time; the patch turns off the MD-380 firmware vocoder (ARM-only, no licence) and the Qt 6.9-only CorePrivate lookup. Built on Debian 13 (74 s, 666 MiB peak) and Kali; its install rule deploys qt.conf and, on Kali's Qt 6.10, copies the Qt runtime and libc into <prefix>/lib, so only the executable is installed. Started under Xvfb; no reflector, audio, dongle or modem. |
| dump978-fa | ADD — catalog/packages/dump978-fa.yaml, listening profile |
make build of FlightAware's tag v11.1 (commit f40aa9a); nothing a distribution reviews packages it, so upstream's tag is the pin (D-024) |
Measured 2026-10-01. No target offers dump978, dump978-fa, skyaware978 or uat2tools; every build dependency is offered on all seven. BSD-2-Clause (LICENSE). D-032: master head f40aa9a 2026-07-01, which is v11.1. Built in a rootless debian:13 container (59 s, 873 MiB peak, no warnings under its -Werror) and in kali-rolling with Boost 1.90 (82 s). Upstream's sample of raw UAT messages, time-stamped and served on loopback, decoded to 21 aircraft in skyaware978 on both, and to the same 21 in Debian's readsb through uat_in. A port given without a host listened on 0.0.0.0. Installs dump978-fa and skyaware978 only: no service, account or SkyAware978 page. No SDR, no live signal. |
| nrsc5 | ADD — catalog/packages/nrsc5.yaml, listening profile |
cmake build of tag v3.2.0 (commit a5c0972), the tag nixpkgs builds, with a two-line patch that makes the build's FAAD2 download sha256-checked (source-build-gaps.md #10) |
Measured 2026-10-01. No target offers nrsc5 or a libnrsc5; libfaad-dev is offered everywhere but is not the HD Radio-patched FAAD2 the build needs. GPL-3.0-or-later. D-032: master head 2026-09-29, v3.2.0 2026-06-02. Built in debian:13 (40 s, 70 MiB peak) and kali-rolling (52 s); with one digit of the hash changed the build stopped at "Hash mismatch". On both it decoded upstream's recorded sample (-r): synchronised, station name, two audio programs, 2 MB of WAV. Only the command-line program is installed, not libnrsc5. No dongle, no live station. |
| radio-tool | ADD — catalog/packages/radio-tool.yaml, no profile (installed by name, like qdmr) |
cmake build of v0l/radio_tool's default-branch head f9083b6 with -DBUILD_BLE=OFF (own-choice pin, D-024) |
Measured 2026-10-01. OpenRTX's user guide names it as the Linux flasher; there is no OpenRTX/radio_tool. No target offers it, nor the AUR or nixpkgs. GPL-3.0-or-later. D-032: main head 2026-08-29; last tag v0.3.0, 2025-06-23, pinned past because at v0.3.0 the USB factory is destroyed before any device is opened (read in the source; upstream's f698a41 says every USB operation, flash included, segfaulted) and firmware compatibility checks always passed. Upstream's default BUILD_BLE clones SimpleBLE during configure and stopped there on dbus-1; off, nothing is fetched. Built in debian:13 (48 s, 482 MiB peak) and kali-rolling (63 s); --help ran. It flashes firmware (D-026: ungated; its page says so). No radio, no flash. |
| k5prog | ADD — catalog/packages/k5prog.yaml, no profile (installed by name, like qdmr) |
make build of the default-branch head 241ab18 (no tags; own-choice pin, D-024) |
Measured 2026-10-01. No target offers it; the AUR builds the same commit. GPL-3.0-or-later (LICENSE and the source header; the brief said GPL-2.0). D-032: main head 2023-12-29, dormant 21 months. Built in debian:13, kali-rolling and ubuntu:24.04 in about a second each, no warnings; -h ran. The tree's Quansheng firmware image and sample EEPROM are not installed. It reads and writes the radio's EEPROM and flashes firmware (D-026: ungated; its page says so, including its own -Y thresholds). No radio or cable. |
| librevna | ADD — catalog/packages/librevna.yaml, electronics profile; device catalog/hardware/devices/librevna.yaml, not owned |
qmake6 build of tag v1.6.5 (commit 5fee370), the tag nixpkgs builds |
Measured 2026-10-01. No target offers librevna or librevna-gui; the AUR builds 1.6.5. GPL-3.0. D-032: master head 2026-09-25, 18 commits past v1.6.5 (2026-03-06). Built in debian:13 (14 min 19 s, 859 MiB peak), ubuntu:24.04 with Qt 6.4.2 (13 min 57 s), so Ubuntu 24.04 and Mint need no exclusion, and kali-rolling with Qt 6.10.2 (12 min 45 s, 267 warnings); its .pro has no install rule, so the executable is installed by name. Started under Xvfb on all three with no device; it logged "Listening on port 19542", and on two targets /proc/net/tcp6 showed the SCPI port on every address, which upstream's preferences enable by default with no password; the page says so. Device entry not owned (D-027): identifiers read from upstream's source, unconfirmed, so no rule is generated. No device, sweep, generator or firmware update. |
| freedv-rade | Not added — measured build (source-build-gaps.md #9) |
— | Measured 2026-10-01. All seven targets carry freedv 1.8.11 (the catalog's apt unit, pre-RADE modes); none offers 2.x or a RADE library. FreeDV GUI is LGPL-2.1 (BSD for its integrations); RADE's code and its C port rade_c, whose model weights are C source in its tree, are BSD-2-Clause; freedv-backend BSD-2-Clause. D-032: freedv-gui master head 2026-09-28, v2.4.0 2026-08-25; rade_c head 2026-09-24, no tags. v2.4.0 built in a debian:13 container in 49 minutes (792 MiB peak) and started, but its CMake fetched freedv-backend v1.0.0, then rade_c and RNNoise from their main branches and Opus as an unhashed archive (Opus's and RNNoise's model tarballs were sha256-checked by their own scripts). Moving branches are refused, and the engine has no way to pin a fetch made inside another project's build. The install rule left out librade. |
| tar1090 | ADD — catalog/packages/tar1090.yaml, listening profile (deferred by name where readsb is absent) |
A data unit: GitHub's archive of the default-branch commit e784ee5 (no tags; own-choice pin, D-024: no distribution packages it), sha256 pinned, html/ and the licence kept; served at /aircraft/ by hammunition reference serve on 127.0.0.1 over readsb's JSON (D-071, amended 2026-10-02) |
Measured 2026-10-01 and 2026-10-02. No target offers it (the AUR builds master). GPL-2.0-or-later (LICENSE). D-032: master head e784ee5 2026-09-29, version 3.14.1823. Its own installer (a root script piped from wget that clones master and the aircraft database, writes a lighttpd stanza on port 80 on every address) is not run. The page changed in three ways so it cannot call out: its fetching settings are off, its online layers are replaced by the station's PMTiles map (or a blank background with the reason on the page), and every response carries a Content-Security-Policy that names no host. Drew synthetic aircraft in headless Chromium with no request off 127.0.0.1 (tests/test_aircraft_render.py); the page served as upstream ships it does ask other hosts, and the policy alone refuses them. The aircraft database cannot be pinned (upstream replaces its single commit regularly) and is not carried. Not seen with a live receiver. |
REVIVE — verification log¶
Three of the six REVIVE units were tested on 2026-08-28 in a Debian 13
container. PARITY-POLICY.md requires a REVIVE to be attempted rather than
assumed, and two of these had inherited verdicts that measurement changed.
| Unit | Tested | Result |
|---|---|---|
ardop |
build from tag 1.0.4.1.3 |
Revived. Now catalog/packages/ardopcf.yaml. |
mvoice |
dependency availability | Still blocked. Reason confirmed. |
dream |
dependency availability | Still blocked. Reason confirmed. |
ardop — AHRL's error was not the error. AHRL v27 disabled it with
"compiler error on Xubuntu 26.04 / in function client_handler: too many args
to function process_http_req". On Debian 13 the build fails somewhere else
entirely: three -Wint-conversion errors at lib/rawhid/rawhid.c:361, because
GCC 14 promoted that warning to an error. With -Wno-int-conversion the build
succeeds and produces ardopcf. Upstream's master head
(a7c92289b569, 2025-05-27, read from the branch — D-032) fails
identically, so the release tag is the right pin and this is a current defect
rather than one a newer revision has fixed.
The flag silences a genuine bug rather than a pedantic warning: the CM108 HID
path passes a hid_device * to read(), write() and close() on the
non-Windows branch. The manifest records that CM108 push-to-talk should be
tested before it is relied on, and that serial and VOX keying are unaffected.
Reporting it upstream has not been done from here.
The suggestion in the table above — take 73Linux's prebuilt release asset instead of compiling — turned out to be unnecessary. Compiling works.
mvoice — the blocker is real and measured. libopendht-dev has no
candidate on Debian 13 (apt-cache policy, 2026-08-28), which is exactly
what AHRL's "no openhdt" comment claimed. Upstream is alive: head of master
is 7589795c7ca0, 2026-06-12. Its README acknowledges the situation directly
and instructs the user to build OpenDHT from source — a build dependency that
must itself be built, which is a shape no manifest in this catalog can express
today. The disposition stands and the reason is now tested rather than
inherited.
dream — same shape. libqt5webkit5-dev has no candidate on Debian 13
(measured the same way). AHRL's "no webkitwidgets" comment is confirmed. What
is still open is the question the table above asks: whether Qt5 WebKit is
genuinely required or only for an optional dashboard. That needs reading the
source, not probing the archive.
ibp, radiosonde_auto_rx and hamclock-next were not attempted in this
round. hamclock-next already has a manifest; radiosonde_auto_rx waits on
the venv backend by design.
Complete index — all 161 units¶
Sorted for completeness-checking. S = SUPERSEDE, R = REVIVE, X = RETIRE,
C = CARRY, A = ADD, ? = NEEDS-DECISION, M = reserved to maintainer.
133 AHRL + 73Linux units, plus 9 Skywave delta, 8 new DragonOS Tier-1 units and 11 EmComm Tools OS delta units (D-042, indexed by D-048). The other 16 DragonOS Tier-1 units are cross-references to units already listed under AHRL or covered by the Blend, and are not re-indexed here.
AHRL (105):
aa-analyzer S · ahrl_docs S · ahrl_menus S · ahrl_version S ·
AIS-catcher C · AntScope2 C · ardop R · arduino M · atlc C ·
backdrops X · browser X · chirp C · claws-mail C · Coil64 C ·
country_files C · cqrlog C · cwwav C · direwolf C · dream R ·
dump1090 S · ebook2cwgui C · ESPHamClock S · flaa C · flamp C ·
flcluster C · fldigi C · fllog C · Fl_MoxGen C · flmsg C · flnet C ·
flrig C · flwkey C · flwrap C · FoxTelem C · freedv C · fritzing M ·
glfer C · gnuradio C · gpredict C · gpsman S · gqrx C ·
GridTracker2 C · grig S · gsmc C · gspiceui M · hamclock_next R ·
ibp R · js8call C · js8spotter C · jtdx C · kicad M · klog C ·
libhamlib4 S · linpac C · linrad C · mfc_gpl X · morse_runner C ·
MSHV C · mvoice R · nanovna-saver C · ngspice M · noaa-apt X ·
not1mm C · notepadqq X · owx S · pipx C · putty C · pyautogui X ·
qgrid C · QLog C · qrq C · qsstv C · qtel C · QtTinySA C ·
quisk C · radiosonde_auto_rx R · rf_exposure_calc X · rtl_sdr_v4 S ·
SatDump C · SDR++ C · solar_data X · source_libs S · splat C ·
sunclock C · svxlink C · svxreflector C · tkcvs X · tqsl C ·
tt3_gpl X · virtual_radar_server S · wfview C · wine X · wordsworth C ·
wsjtx C · wsjtx_improved C · wwl C · xastir C · xcwcp C · xdx C ·
xlog C · xnec2c C · xosview X · xwefax C · xwxapt X · yaac C
73Linux delta (28):
ARDOPGUI S · AX25 A · BATT X · BPQ A · CONKY X · DIPOLE X · EES X ·
GARIM A · GPS C · GPSUPDATE X · GRIDCALC X · HAMRS A · M0IAX X ·
PAT A · PATMENU X · PATMENU3 X · PIAPRS A · PIQSO X · PISTATS X ·
PITERM A · QTSOUND A · REPEAT X · SECURITY X · SHOWLOG X · VARA A ·
VARIM A · VNC X · XYGRIB A
Skywave delta (9):
acarsdec A · acarsserv A · dumphfdl A · kalibrate-rtl A · libacars A ·
reticulum-meshchat A · rtlsdr-airband A · supersdr A · vdlm2dec S
DragonOS Tier-1 — new units (8):
aircrack-ng A · hcxdumptool A · hcxtools A · inspectrum A · rtl-433 A ·
sdrangel A · ubertooth A · wireshark A
EmComm Tools OS delta (11):
artemis A · chattervox X · dict A · gis-tools A · gpa A · kiwix A ·
mbtileserver A · mbutil X · navit A · paracon A · pfte X
(The 16 already-covered Tier-1 units — fldigi, js8call, wsjtx, qsstv,
gpredict, gnuradio, gqrx, cubicsdr, direwolf, satdump, AIS-catcher,
sdrpp=SDR++, soapysdr-tools, uhd-host, multimon-ng, hacktv,
gpsd/ffmpeg/sox — are indexed under AHRL or arrive via the Blend.)
What this classification depends on¶
Three claims carry weight and should be re-verified before the catalog hardens:
- HamClock's sunset — cited above, two independent sources. Highest confidence, and it changes a user-visible outcome today.
- RTL-SDR V4 upstreaming — upstream fact confirmed; the distro half is unverified and needs a container check on each target.
- 73Linux's missing licence — verified 2026-08-25 (no LICENSE/COPYING, no
header on
73.sh, GitHub licence API null). This governs roughly half the delta table, so if it changes, re-run this section.