Repository navigation
Releases: jochenhammes/pluto-tx
Release list
pluto-tx 0.9.0 RC4 – Debian-Paket (Ubuntu 26.04, amd64)
Vierter Release-Kandidat von pluto-tx als Debian-Paket (Pre-Release, zum Testen), nur für Ubuntu 26.04 LTS auf amd64. Für Debian 13 und arm64 gibt es in diesem RC kein Paket.
Installation
sudo apt install ./pluto-tx_0.9.0.rc4.ubuntu26.04_amd64.deb
pluto-tx-doctorAuf dem Ubuntu-Desktop geht auch ein Doppelklick auf das .deb (App Center). Die Abhängigkeiten, u. a. GNU Radio, installiert apt mit.
Warning
Die Programme können senden. Senden ist nur mit passender Genehmigung und auf dafür zugelassenen Frequenzen erlaubt.
Warning
Dieses Paket wurde nur im Container getestet, ohne angeschlossene Geräte. Die Installation auf einem echten Rechner mit Pluto, HackRF oder RTL-SDR steht noch aus.
Neu seit RC3
- Xiegu X6200 (mit OpenX6X00): als Sender und Empfänger über USB-Audio und Hamlib-CAT, in den Desktop-Apps,
pluto-cliund Web-TRX. Senden: SSB, LSB, FreeDV 2020, RADE, Waterfall Writer, PSK31, RTTY, FT8, JS8, JTTY. FreeDV nicht in Web-TRX. Empfang: SSB, LSB, RADE und die Digimodes. FM, POCSAG und APRS gehen über dieses Kabel nicht. Ein eigener Wächterprozess löst die PTT, wenn die App abstürzt. Brauchtlibhamlib-utilsund die Gruppedialout, siehe unten. Die Frequenz am Gerät übernehmenpluto-txund Web-TRX, der Leistungsregler wirkt direkt. - RADE im selben Web-TRX: Ein Sender über Soundkarte im selben Prozess nahm einem HackRF-Empfänger Daten, RADE dekodierte dann nicht, obwohl der Wasserfall ein Signal zeigte. Behoben für Sender über Soundkarte. Pluto und HackRF als Sender bleiben unverändert.
- Installation aus dem Git-Stand: ein
./install.shmit Menü statt neun Skripten,--allinstalliert alles. Das betrifft das Paket nicht. Die alteninstall-*.shgibt es nicht mehr, die Zuordnung steht im README. pluto-tx-doctor: prüft jetzt auch die Gruppedialoutbei angestecktem X6200 oder AIOC, ob Hamlib den X6200 kennt, und die PipeWire-Werkzeuge.
Kurzanleitung
Nach der Installation
pluto-tx-doctorausführen. Es zeigt, ob alle Komponenten gefunden werden und ob die SDRs erreichbar sind.- 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. - Eine vorhandene Git-Installation mit Startern in
~/.local/binverdeckt das Paket.pluto-tx-doctor --fix-launchersbenennt die alten Starter um; gelöscht wird nichts.
Xiegu X6200
sudo apt install libhamlib-utils # falls apt die Empfehlungen des Pakets übersprungen hat
sudo usermod -aG dialout $USER # danach neu anmeldenDann in den Apps oder in pluto-cli das Gerät x6200 wählen. Scan findet Port und Soundkarte. Bleibt die App getastet und stirbt der ganze Rechner oder das USB-Kabel, sendet das Gerät weiter: Dann hilft nur die PTT-Taste oder das Ausschalten am Gerät.
Programme
- Die Desktop-Apps findest du im Menü (Pluto TX, Pluto Advanced RX, Web-TRX) oder startest sie im Terminal mit
pluto-txbzw.pluto-advanced-rx. - Für die Kommandozeile ohne GUI gibt es
pluto-cli --help,pluto-cli tx --help,pluto-cli rx --helpundpluto-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. 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.envgespeichert. Dort kannst du es ändern und dannweb-trx restartausfü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 AusprobierenLaufzeitdaten wie Log, Zertifikat, Sitzungen, TX-Log und Einstellungen liegen in ~/.local/state/web-trx/.
Ohne Monitor (headless), wenn du den Server von Hand startest: GNU Radio öffnet immer einen lokalen Audio-Ausgang, auf manchen Rechnern ist ALSA-default ein 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=nullWeb-TRX als Dienst (headless)
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>.serviceund 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. Einweb-trx stopbeendet einen laufenden Dienst ebenfalls, danach läuft er erst nach dem nächsten Boot wieder. - Log:
web-trx logoderjournalctl -u web-trx@$USER.
Deinstallieren
sudo apt remove pluto-tx # Programm entfernen
sudo apt purge pluto-tx # zusätzlich die Dienst-Einrichtung entfernenDeine 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-txusw.
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), JTTY (wsjt-codec), JS8 (js8ref und JSC-Wortlisten)
- Der Host-Teil des ESP32-S3 mit vorgebauter Firmware
- 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
web-trx@.servicewird deaktiviert ausgeliefert und ist ein bewusster Schritt:web-trx service enable
Getestet
Paket gebaut aus 618b619; bis zum Tag kamen nur diese Notizen hinzu. In einem frischen Ubuntu-26.04-Container ohne Build-Werkzeuge: Installation allein aus den Distributionsquellen, --version und --help aller Programme, alle Komponenten über die Suchpfade des Pakets, pluto-tx-doctor, Web-TRX (Simulation) mit Login und Stopp, die volle Testsuite gegen den installierten Code (740 Tests, 36 übersprungen), nichts unter /usr geschrieben, sauberes Entfernen.
./install.sh --all aus dem Git-Stand in frischen Containern, Ubuntu 26.04 und Debian 13: 5 bis 6 Minuten, ein zweiter Lauf erkennt in 1 s, dass alles aktuell ist.
X6200 über Funk, aus dem Git-Stand und nicht aus dem Paket, in den Dummy-Load mit höchstens 0,5 W, HackRF mit Whip-Antenne als Gegenstelle: JTTY, FT8, JS8, SSB, LSB, RADE und FreeDV dekodiert; RADE aus dem echten Browser über 120 s rund 113 s synchron; Dauerlauf über 30 Minuten; kill -9 löst die PTT in 5 von 5 Fällen. Desktop-Apps nur ohne sichtbares Fenster am echten Gerät. Messwerte: docs/x6200/TESTS.md.
Bekannte Grenzen
- X6200 bricht manche Sendungen selbst ab: Um 28,30 MHz (28,28–28,32 MHz) ab 3 % Leistung nach rund 1 s, bei Sprache auch anderswo unregelmäßig. Das geschieht auch ohne die App, die Ursache im Gerät ist unbekannt.
pluto-txzeigt es im HW-Feld, Web-TRX meldet einen Fehler;pluto-clibemerkt es nicht. - X6200, nicht getestet: Betrieb an der Antenne, Empfang eines LSB-Signals über Funk, USB-Kabel ziehen, Akku-Ende während einer Sendung, das installierte Paket am echten Gerät. PSK31 und RTTY sind in Echtzeit am HackRF nur teilweise lesbar. Nach einer Leistungsänderung antwortet das Gerät rund 1,6 s lang nicht auf CAT.
- Web-TRX mit Pluto oder HackRF als Sender und HackRF als Empfänger im selben Prozess: Dort kann derselbe Datenverlust auftreten wie vor der RADE-Korrektur, das ist nicht gemessen. Abhilfe: Empfang mit 2 MS/s oder kleinerem Zoom.
- Zeitkritische Tests: Läuft die Testsuite neben anderer Rechenlast, überschreiten einzelne Tests knapp ihre Zeittoleranz. Auf dem ruhigen Entwicklungsrechner blieb einmal der bekannte POCSAG-Ausreißer bei 512 Baud; im Container war der Lauf grün.
- JTTY ist experimentell.
wsjt-codecstammt aus einer Beta, das Protokoll hat keinen Versionsmarker. Keine echte Gegenstation gehört und kein QSO gefahren. Web-TRX und die Desktop-Apps nicht mit echter Hardware getestet, AIOC und Soundkarte am Fun...
pluto-tx 0.9.0 RC3 – Debian-Paket (Ubuntu 26.04, amd64)
Dritter Release-Kandidat von pluto-tx als Debian-Paket (Pre-Release, zum Testen), nur für Ubuntu 26.04 LTS auf amd64. Für Debian 13 und arm64 gibt es in diesem RC kein Paket.
Installation
sudo apt install ./pluto-tx_0.9.0.rc3.ubuntu26.04_amd64.deb
pluto-tx-doctorAuf dem Ubuntu-Desktop geht auch ein Doppelklick auf das .deb (App Center). Die Abhängigkeiten, u. a. GNU Radio, installiert apt mit.
Warning
Die Programme können senden. Senden ist nur mit passender Genehmigung und auf dafür zugelassenen Frequenzen erlaubt.
Warning
Dieser RC wurde nur im Container getestet, ohne angeschlossene Geräte. Die Installation auf einem echten Rechner mit Pluto, HackRF oder RTL-SDR steht noch aus.
Neu seit RC2
- JTTY (experimentell): der Tastaturmodus aus WSJT-X 3.2, Empfang und Senden in den Desktop-Apps,
pluto-cliund Web-TRX. Decoder und Encoder sind das unverändertewsjt-codecaus WSJT-Xv3.3.0-beta5, das Paket bringt es mit. Der Text wächst beim Empfang mit, gesendet werden ganze Nachrichten bis 80 Zeichen von Hand. - MeshCore in Web-TRX: Empfang und Senden, Karte, Kanalschlüssel auf dem Server.
- Pluto als Sender und Empfänger zugleich: In Datenmodi läuft der Sender ohne Audio-Kette, die eigene Sendung wird im selben Web-TRX dekodiert. Die Abtastraten bleiben dabei synchron.
pluto-cli rxund HackRF:--lna-gain,--vga-gainund--rf-ampstellen seine Stufen ein.--gainund--gain-modewurden dort bisher still ignoriert und werden jetzt abgewiesen.pluto-cli rx --device audio: Eine Funkfrequenz in--freqwird abgewiesen; sie verschob bisher unbemerkt das Audioband.- APRS: Die Wartezeit zwischen Sendungen ist nur noch eine Warnung.
Kurzanleitung
Nach der Installation
pluto-tx-doctorausführen. Es zeigt, ob alle Komponenten gefunden werden und ob die SDRs erreichbar sind.- 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. - Eine vorhandene Git-Installation mit Startern in
~/.local/binverdeckt das Paket.pluto-tx-doctor --fix-launchersbenennt 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-txbzw.pluto-advanced-rx. - Für die Kommandozeile ohne GUI gibt es
pluto-cli --help,pluto-cli tx --help,pluto-cli rx --helpundpluto-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. 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.envgespeichert. Dort kannst du es ändern und dannweb-trx restartausfü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 AusprobierenLaufzeitdaten wie Log, Zertifikat, Sitzungen, TX-Log und Einstellungen liegen in ~/.local/state/web-trx/.
Ohne Monitor (headless), wenn du den Server von Hand startest: GNU Radio öffnet immer einen lokalen Audio-Ausgang, auf manchen Rechnern ist ALSA-default ein 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=nullWeb-TRX als Dienst (headless)
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>.serviceund 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. Einweb-trx stopbeendet einen laufenden Dienst ebenfalls, danach läuft er erst nach dem nächsten Boot wieder. - Log:
web-trx logoderjournalctl -u web-trx@$USER.
Deinstallieren
sudo apt remove pluto-tx # Programm entfernen
sudo apt purge pluto-tx # zusätzlich die Dienst-Einrichtung entfernenDeine 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-txusw.
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), JTTY (wsjt-codec), JS8 (js8ref und JSC-Wortlisten)
- Der Host-Teil des ESP32-S3 mit vorgebauter Firmware
- 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
web-trx@.servicewird deaktiviert ausgeliefert und ist ein bewusster Schritt:web-trx service enable
Getestet
Paket gebaut aus 7951515; bis zum Tag kamen nur diese Notizen hinzu. In einem frischen Ubuntu-26.04-Container ohne Build-Werkzeuge: Installation allein aus den Distributionsquellen, --version und --help aller Programme, alle Komponenten, pluto-tx-doctor, Web-TRX im Simulator, 658 Tests gegen den installierten Code (11 übersprungen), nichts unter /usr geschrieben, Entfernen und Löschen sauber.
Über Funk, aus dem Git-Stand und nicht aus dem Paket, mit Pluto+ bei −40 dB und HackRF bei VGA 0 dB: JTTY auf 2 m, 70 cm und 23 cm, Pluto+ und HackRF als Sender, RTL-SDR und HackRF als Empfänger; Gegenprobe mit rjtty und sjtty aus WSJT-X; Soundkarte von Lautsprecher zu Webcam-Mikrofon. Messwerte: docs/jtty/TESTS.md. MeshCore gegen einen echten Heltec V3, mit Web-TRX als Sender und Empfänger.
Bekannte Grenzen
- JTTY ist experimentell.
wsjt-codecstammt aus einer Beta, das Protokoll hat keinen Versionsmarker. Keine echte Gegenstation gehört und kein QSO gefahren. Web-TRX und die Desktop-Apps nicht mit echter Hardware getestet, AIOC und Soundkarte am Funkgerät gar nicht. - JTTY-Fehldekodierungen: Einzelne unsinnige Zeilen um −16 dB kommen vor, auch im Original.
- JTTY auf 23 cm: Ein kalter Pluto startet rund 300 Hz zu hoch und driftet bis −4 Hz/s. Der Driftausgleich ist nur mit warmem Pluto über Funk gesehen. Schon 0,65 ppm Quarzfehler führen aus dem Suchfenster: dann Audio Hz auf das Signal stellen oder die ppm-Korrektur setzen.
- JTTY-Langlauf ungeklärt: Ein CLI-Empfänger am RTL-SDR dekodierte nach 26 Minuten eine Serie nicht und endete mit Exit 134. Die Wiederholung wurde abgebrochen, die Ursache ist unbekannt.
- HackRF-Empfang: Bei der Standardrate 4 MS/s verlor JTTY Rahmen und rund 10 dB; für Digimodes
--bandwidth 2000000setzen. - POCSAG: Bei 512 Baud geht selten der erste Batch verloren und damit die Nachricht, wenn Startzeitpunkt und Frequenzversatz ungünstig zusammentreffen (rund 2 von 100 Testläufen). Das bestand schon vor diesem RC. Dieselben Tests können deshalb gelegentlich fehlschlagen.
- MeshCore: Standard sind 869,618 MHz im SRD-Band, nicht im Amateurfunk. Dort gelten nach unserem Kenntnisstand 500 mW ERP und 10 % Duty-Cycle; die App begrenzt nur die Sendezeit, nicht die Leistung hinter einer Endstufe.
- Nicht getestet: das installierte Paket mit echten Geräten und die grafischen Apps auf einem echten Desktop.
- APRS: Auf 144,800 MHz wurde noch nie gesendet. HackRF, Soundkarte, AIOC, die Sendeknöpfe der Desktop-Apps und die automatische Bestätigung sind über Funk nicht getestet. Details:
docs/aprs/SPEC.md. - POCSAG nach dem Umbau des Tastablaufs nur mit dem Pluto+ bei 1200 Bd über Funk geprüft.
- ADS-B und ADS-L: HackRF nicht an echtem Signal getestet.
- Empfindlichkeit: Rechenlast des eigenen Rechners stört einen danebenstehenden RTL-SDR messbar, vor allem um 70 cm um bis zu 14 dB.
- Noch keine APT-Quelle und kein
get.sh; Updates vorerst durch Installieren des neuen.deb. - Eine bestehende Git-Installation mit Startern in
~/.local/binverdeckt `/usr/bin...
pluto-tx 0.9.0 RC2 – Debian-Paket (Ubuntu 26.04, amd64)
Zweiter Release-Kandidat von pluto-tx als Debian-Paket (Pre-Release, zum Testen), nur für Ubuntu 26.04 LTS auf amd64. Für Debian 13 und arm64 gibt es in diesem RC kein Paket.
Installation
sudo apt install ./pluto-tx_0.9.0.rc2.ubuntu26.04_amd64.deb
pluto-tx-doctorAuf dem Ubuntu-Desktop geht auch ein Doppelklick auf das .deb (App Center). Die Abhängigkeiten, u. a. GNU Radio, installiert apt mit.
Warning
Die Programme können senden. Senden ist nur mit passender Genehmigung und auf dafür zugelassenen Frequenzen erlaubt.
Warning
Dieser RC wurde nur im Container getestet, ohne angeschlossene Geräte. Die Installation auf einem echten Rechner mit Pluto, HackRF oder RTL-SDR steht noch aus.
Neu seit RC1
- APRS: Empfang und Senden in den Desktop-Apps,
pluto-cliund Web-TRX mit Karte und Nachrichten, ohne Igate und ohne APRS-IS. Gesendet wird nur auf Klick oder Befehl. - ADS-L und ADS-B: nur Empfang, in der RX-App,
pluto-cliund Web-TRX mit Live-Karte. - ESP32-S3 als Sendegerät für FM und M17 auf 13 cm. Zum Senden wird zusätzlich
esptoolab Version 5 gebraucht, das nicht mitinstalliert wird (pipx install esptool). - POCSAG und APRS tasten am Pluto ohne den langen Trägervorlauf von mehreren Sekunden.
- Web-TRX: Der NOTAUS bleibt in jeder Fensterbreite und über der Vollbildkarte erreichbar.
Kurzanleitung
Nach der Installation
pluto-tx-doctorausführen. Es zeigt, ob alle Komponenten gefunden werden und ob die SDRs erreichbar sind.- 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. - Eine vorhandene Git-Installation mit Startern in
~/.local/binverdeckt das Paket.pluto-tx-doctor --fix-launchersbenennt 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-txbzw.pluto-advanced-rx. - Für die Kommandozeile ohne GUI gibt es
pluto-cli --help,pluto-cli tx --help,pluto-cli rx --helpundpluto-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. 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.envgespeichert. Dort kannst du es ändern und dannweb-trx restartausfü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 AusprobierenLaufzeitdaten wie Log, Zertifikat, Sitzungen, TX-Log und Einstellungen liegen in ~/.local/state/web-trx/.
Ohne Monitor (headless), wenn du den Server von Hand startest: GNU Radio öffnet immer einen lokalen Audio-Ausgang, auf manchen Rechnern ist ALSA-default ein 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=nullWeb-TRX als Dienst (headless)
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>.serviceund 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. Einweb-trx stopbeendet einen laufenden Dienst ebenfalls, danach läuft er erst nach dem nächsten Boot wieder. - Log:
web-trx logoderjournalctl -u web-trx@$USER.
Deinstallieren
sudo apt remove pluto-tx # Programm entfernen
sudo apt purge pluto-tx # zusätzlich die Dienst-Einrichtung entfernenDeine 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-txusw.
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)
- Der Host-Teil des ESP32-S3 mit vorgebauter Firmware
- 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
web-trx@.servicewird deaktiviert ausgeliefert und ist ein bewusster Schritt:web-trx service enable
Getestet
Paket gebaut aus 01e2175; bis zum Tag kamen nur eine Testkorrektur und diese Notizen hinzu. In einem frischen Ubuntu-26.04-Container ohne Build-Werkzeuge: Installation allein aus den Distributionsquellen, --version und --help aller Programme, alle Komponenten, pluto-tx-doctor, Web-TRX im Simulator, 599 Tests gegen den installierten Code (11 übersprungen), nichts unter /usr geschrieben, Deinstallation und Purge ohne Rückstände.
Über Funk, aus dem Git-Stand und nicht aus dem Paket: APRS und POCSAG vom Pluto+ zum RTL-SDR auf 432,150 MHz bei −40 dB, APRS- und ADS-B-Empfang an echtem Verkehr.
Bekannte Grenzen
- Nicht getestet: das installierte Paket mit echten Geräten und die grafischen Apps auf einem echten Desktop.
- APRS: Auf 144,800 MHz wurde noch nie gesendet. HackRF, Soundkarte, AIOC, die Sendeknöpfe der Desktop-Apps und die automatische Bestätigung sind über Funk nicht getestet. Details:
docs/aprs/SPEC.md. - POCSAG nach dem Umbau des Tastablaufs nur mit dem Pluto+ bei 1200 Bd über Funk geprüft.
- ADS-B und ADS-L: HackRF nicht an echtem Signal getestet.
- Empfindlichkeit: Rechenlast des eigenen Rechners stört einen danebenstehenden RTL-SDR messbar, vor allem um 70 cm um bis zu 14 dB.
- Noch keine APT-Quelle und kein
get.sh; Updates vorerst durch Installieren des neuen.deb. - Eine bestehende Git-Installation mit Startern in
~/.local/binverdeckt/usr/bin.pluto-tx-doctorzeigt das an,pluto-tx-doctor --fix-launchersbenennt die alten Starter um. - Aus RC1, hier in zwei vollen Läufen nicht wieder aufgetreten: 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-
LICENSEvon gr-m17 und das Submodullibm17enthalten 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. - Lizenzhinweis ESP32-Firmware: Die vorgebauten Images in
espdr/imagessind mit derlibphy.aaus ESP-IDF v5.5 gelinkt, für die die Bedingungen von Espressif gelten.
Quellen
sources-0.9.0.rc2.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).
pluto-tx 0.9.0 RC1 – Debian-Pakete (Ubuntu 26.04, Debian 13, amd64)
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-doctorAuf 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
pluto-tx-doctorausführen. Es zeigt, ob alle Komponenten gefunden werden und ob die SDRs erreichbar sind.- 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. - Eine vorhandene Git-Installation mit Startern in
~/.local/binverdeckt das Paket.pluto-tx-doctor --fix-launchersbenennt 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-txbzw.pluto-advanced-rx. - Für die Kommandozeile ohne GUI gibt es
pluto-cli --help,pluto-cli tx --help,pluto-cli rx --helpundpluto-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.envgespeichert. Dort kannst du es ändern und dannweb-trx restartausfü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 AusprobierenLaufzeitdaten 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=nullWeb-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>.serviceund 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. Einweb-trx stopbeendet einen laufenden Dienst ebenfalls, danach läuft er erst nach dem nächsten Boot wieder. - Log:
web-trx logoderjournalctl -u web-trx@$USER.
Deinstallieren
sudo apt remove pluto-tx # Programm entfernen
sudo apt purge pluto-tx # zusätzlich die Dienst-Einrichtung entfernenDeine 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-txusw. (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@.servicefü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/binverdeckt/usr/bin.pluto-tx-doctorzeigt das an,pluto-tx-doctor --fix-launchersbenennt 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-
LICENSEvon gr-m17 und das Submodullibm17enthalten 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).