Skip to content

pluto-tx 0.9.0 RC1 – Debian-Pakete (Ubuntu 26.04, Debian 13, amd64)

Pre-release
Pre-release

Choose a tag to compare

@jochenhammes jochenhammes released this 30 Sep 17:37
· 83 commits to main since this release

Erster vorgebauter Release-Kandidat von pluto-tx als Debian-Paket (Pre-Release, zum Testen), nach docs/RELEASE_PLAN.md.

Installation

System Datei
Ubuntu 26.04 LTS, amd64 pluto-tx_0.9.0.rc1.ubuntu26.04_amd64.deb
Debian 13 (trixie), amd64 pluto-tx_0.9.0.rc1.deb13_amd64.deb
Debian 13 / Raspberry Pi OS 64 Bit, arm64 — Testbuild, nicht final getestet pluto-tx_0.9.0.dev20260930.g1f9fcfa+dirty.deb13_arm64.deb
sudo apt install ./pluto-tx_0.9.0.rc1.ubuntu26.04_amd64.deb   # Debian 13: pluto-tx_0.9.0.rc1.deb13_amd64.deb
pluto-tx-doctor

Auf dem Ubuntu-Desktop geht auch ein Doppelklick auf das .deb (App Center). Die Abhängigkeiten, u. a. GNU Radio, installiert apt aus den Distributionsquellen. Compiler oder Node.js brauchst du nicht.

Warning

arm64 (Raspberry Pi) ist ein Testbuild und nicht final getestet. Gebaut auf einem Raspberry Pi 4 aus Commit 1f9fcfa (Programmcode und Komponenten wie rc1; geändert sind nur Build-Werkzeuge); daher die abweichende Versionsnummer 0.9.0~dev20260930.g1f9fcfa+dirty~deb13 (+dirty: ein Cache-Symlink im Build-Checkout, kein Code-Unterschied). Im frischen Container auf dem Pi bestanden: Installation, --version, M17/LoRa/FT8/RADE/JS8, pluto-tx-doctor, Web-TRX (Start, Login, Frontend). Die volle Testsuite ist dort nicht durchgelaufen (der Pi startete währenddessen neu), und auf Funk-Hardware ist es noch nicht erprobt. Benötigt Raspberry Pi OS 64 Bit auf Debian 13 (trixie); 32 Bit wird nicht unterstützt.

Kurzanleitung

Nach der Installation

  1. pluto-tx-doctor ausführen. Es zeigt, ob alle Komponenten gefunden werden und ob die SDRs erreichbar sind.
  2. RTL-SDR: Ein RTL-SDR, das schon vor der Installation gesteckt war, einmal ab- und wieder anstecken, damit die Zugriffsrechte der udev-Regel greifen. Einen noch geladenen DVB-T-Treiber (dvb_usb_rtl28xxu) löst librtlsdr beim Öffnen selbst ab; nach dem nächsten Neustart lädt er dank Sperrliste gar nicht mehr.
    Raspberry Pi: Der Pi 4 liefert an allen USB-Ports zusammen nur etwa 1,2 A. Für HackRF plus weitere Geräte einen aktiven USB-Hub verwenden.
  3. Eine vorhandene Git-Installation mit Startern in ~/.local/bin verdeckt das Paket. pluto-tx-doctor --fix-launchers benennt die alten Starter um; gelöscht wird nichts.

Programme

  • Die Desktop-Apps findest du im Menü (Pluto TX, Pluto Advanced RX, Web-TRX) oder startest sie im Terminal mit pluto-tx bzw. pluto-advanced-rx.
  • Für die Kommandozeile ohne GUI gibt es pluto-cli --help, pluto-cli tx --help, pluto-cli rx --help und pluto-cli devices --help.

Web-TRX-Server von Hand starten und stoppen

web-trx start      # startet den Server im Hintergrund und zeigt die Adressen
web-trx status     # läuft er? (--json für Skripte)
web-trx log        # Log live mitlesen (Strg+C beendet nur die Anzeige)
web-trx restart    # nach Änderungen an den Einstellungen
web-trx stop       # beenden; der Sender geht dabei in den sicheren Zustand
web-trx open       # im Browser öffnen (nur auf einem Rechner mit Desktop)
  • Adresse: https://<rechner>:8321, auf einem Pi z. B. https://192.168.178.65:8321. Das Zertifikat ist selbstsigniert, der Browser warnt einmal. Die Ausnahme musst du zulassen, denn das Mikrofon funktioniert im Browser nur über https.
  • Passwort: Es wird beim ersten Start erzeugt, angezeigt und in ~/.config/pluto-tx/web-trx.env gespeichert. Dort kannst du es ändern und dann web-trx restart ausführen.
  • Solange Web-TRX ein SDR geöffnet hat, können die Desktop-Apps dieses SDR nicht nutzen. Die Apps zeigen das in ihrer Web-TRX-Zeile an und können den Server dort auch starten und stoppen.

Einstellungen: ~/.config/pluto-tx/web-trx.env

WEB_TRX_PASSWORD=...           # Login-Passwort
WEB_TRX_PORT=8321              # Port
WEB_TRX_HOST=0.0.0.0           # Adresse, auf der der Server lauscht (127.0.0.1 = nur lokal)
WEB_TRX_TLS=false              # http statt https (dann kein Mikrofon im Browser, außer auf localhost)
WEB_TRX_STATION_CALL=N0CALL    # eigenes Rufzeichen (FT8/JS8)
WEB_TRX_STATION_LOCATOR=AA00   # eigener Locator
WEB_TRX_BACKEND=sim            # Simulation ohne Hardware, zum Ausprobieren

Laufzeitdaten wie Log, Zertifikat, Sitzungen, TX-Log und Einstellungen liegen in ~/.local/state/web-trx/.

Ohne Monitor (headless, z. B. Raspberry Pi), wenn du den Server von Hand startest: GNU Radio öffnet immer einen lokalen Audio-Ausgang, und auf dem Pi ist ALSA-default der HDMI-Ausgang. Ohne Monitor scheitert dann der RX mit audio_alsa_sink. Abhilfe: diese zwei Zeilen in web-trx.env eintragen, danach web-trx restart. Der Ton geht ohnehin an den Browser, und der Dienst setzt das schon selbst.

GR_CONF_AUDIO_ALSA_DEFAULT_OUTPUT_DEVICE=null
GR_CONF_AUDIO_ALSA_DEFAULT_INPUT_DEVICE=null

Web-TRX als Dienst (headless, z. B. Raspberry Pi)

Mit dem Dienst startet der Server bei jedem Boot, auch ohne Anmeldung. Die Station kann dann senden, ohne dass jemand am Rechner angemeldet ist. Deshalb ist der Dienst nach der Installation aus und muss bewusst eingeschaltet werden:

web-trx service enable    # als normaler Benutzer (nicht mit sudo); fragt selbst nach dem sudo-Passwort
web-trx service status    # Zustand des Dienstes
web-trx service disable   # Dienst ausschalten und entfernen
  • Der Dienst heißt web-trx@<benutzer>.service und läuft als dein Benutzer, mit denselben Einstellungen und Daten wie oben.
  • Stoppen und Starten, ohne ihn auszuschalten: sudo systemctl stop|start|restart web-trx@$USER. Ein web-trx stop beendet einen laufenden Dienst ebenfalls, danach läuft er erst nach dem nächsten Boot wieder.
  • Log: web-trx log oder journalctl -u web-trx@$USER.

Deinstallieren

sudo apt remove pluto-tx     # Programm entfernen
sudo apt purge pluto-tx      # zusätzlich die Dienst-Einrichtung entfernen

Deine Einstellungen und Daten in ~/.config/pluto-tx/ und ~/.local/state/web-trx/ bleiben erhalten. Wenn du sie nicht mehr brauchst, löschst du sie von Hand.

Weitere Doku

  • Im Paket: /usr/share/doc/pluto-tx/ (README, README.web-trx.md, README.pluto-cli.md)
  • man web-trx, man pluto-tx usw. (noch knapp, siehe #3)

Inhalt

  • pluto-tx, pluto-advanced-rx, pluto-cli, web-trx, pluto-tx-doctor, mit Menüeinträgen
  • Alle optionalen Komponenten sind vorgebaut: M17 (gr-m17), LoRa/Meshtastic/MeshCore (gr-lora_sdr), RADE (rade_c), FT8 (ft8_lib), JS8 (js8ref und JSC-Wortlisten)
  • Web-TRX mit fertigem Frontend und den FastAPI/Uvicorn-Paketen der Distribution, ohne eigene venv
  • udev-Regel: HackRF und RTL-SDR sind für den angemeldeten Benutzer ohne Gruppe und ohne Neu-Anmeldung nutzbar
  • Sperrliste für den DVB-T-Treiber (ab dem nächsten Neustart; bis dahin löst librtlsdr ihn selbst ab)
  • web-trx@.service für den Headless-Betrieb wird deaktiviert ausgeliefert und ist ein bewusster Schritt: web-trx service enable
  • Laufzeitdaten pro Benutzer: ~/.config/pluto-tx/, ~/.local/state/web-trx/

Getestet

Gebaut aus c37bb59 (Branch release-packaging). In frischen Containern beider Ziele: Installation allein aus den Distributionsquellen, alle Komponenten, Web-TRX (Start, /health, Login, Stopp), die volle pluto-tx-Testsuite gegen das installierte Paket, remove/purge ohne Rückstände. Auf echter Funk-Hardware ist das Paket noch nicht abgenommen (Plan R5).

Bekannte Grenzen

  • arm64 bzw. Raspberry Pi nur als ungetesteter Testbuild (siehe Hinweis oben); ein regulärer arm64-Build folgt in einem späteren RC.
  • Noch keine APT-Quelle und kein get.sh; Updates vorerst durch Installieren des neuen .deb.
  • Eine bestehende Git-Installation mit Startern in ~/.local/bin verdeckt /usr/bin. pluto-tx-doctor zeigt das an, pluto-tx-doctor --fix-launchers benennt die alten Starter um.
  • In einem von vier vollen Testläufen unter Ubuntu 26.04 stürzte der Testprozess einmal mit einem Segmentation Fault ab, in der Nähe der RADE-Tests. In den übrigen drei Läufen (zwei davon mit dem veröffentlichten Paket) trat er nicht auf. Die Ursache ist noch nicht geklärt.
  • Lizenzhinweis gr-m17: Die Top-Level-LICENSE von gr-m17 und das Submodul libm17 enthalten den GPL-2.0-Text ohne Versionsangabe; die Quellen von gr-m17 selbst sind GPL-3.0-or-later. Die Frage ist noch nicht geklärt, siehe /usr/share/doc/pluto-tx/copyright.

Quellen

sources-0.9.0.rc1.tar.xz enthält pluto-tx und alle gebündelten Komponenten zu den eingebauten Commits (packaging/components.lock). Die Lizenztexte liegen im Paket unter /usr/share/doc/pluto-tx/licenses/. Prüfsummen: SHA256SUMS (noch nicht signiert).