WSJT-X mit SDR- oder Remote-Software nutzen (PipeWire)

Hier hatte ich vor einiger Zeit beschrieben, wie man unter Linux virtuelle Audio-Geräte einrichtet, um WSJT-X mit Software-Radios zu nutzen. Damals, im Jahr 2024 hatte ich eine Linux-Installation genutzt, bei der PulseAudio zum Einsatz kam. Mittlerweile nutzen viele Linux-Distributionen aber PulseAudio. Aus diesem Grund gibt es mit diesem Artikel ein Update zu meiner Anleitung.

Mit PipeWire ersetzt man pacmd durch pactl - sofern pipewire-pulse installiert ist (was bei den meisten Distributionen standardmäßig der Fall ist). Damit steht die PulseAudio-Kompatibilitätsschicht zur Verfügung, was die Erstellung der virtuellen Audio-Geräte sehr einfach macht. Mit folgendem Befehl prüft man, ob pipewire-pulse installiert ist

pactl info | grep "Server Name"
# Ausgabe: Server Name: PulseAudio (on PipeWire x.x.x)

Wenn in der Ausgabe "on PipeWire" steht, läuft pipewire-pulse auf deinem System.

Die virtuellen Audio-Geräte erstellt man mit folgenden Befehlen:

pactl load-module module-null-sink sink_name=WSJT-X_output sink_properties=device.description=WSJT-X_output
pactl load-module module-null-sink sink_name=WSJT-X_input sink_properties=device.description=WSJT-X_input

Die beiden Geräte sind bis zum nächsten Neustart aktiv (bzw. bis PipeWire neu gestartet wird.) Sofern alles funktioniert, kannst du die Konfiguration persistieren, so dass sie auch einen Neustart übersteht. Eine Möglichkeit ist es, einen systemd User-Service anzulegen:

Erstelle die folgende Konfigurationsdatei:

nano ~/.config/systemd/user/wsjt-x-sinks.service

Der Inhalt der Konfigurationsdatei sollte wie folgt sein:

[Unit]
Description=WSJT-X Virtual Audio Sinks
After=pipewire-pulse.service
Requires=pipewire-pulse.service

[Service]
Type=oneshot
ExecStart=/usr/bin/pactl load-module module-null-sink sink_name=WSJT-X_output sink_properties=device.description=WSJT-X_output
ExecStart=/usr/bin/pactl load-module module-null-sink sink_name=WSJT-X_input sink_properties=device.description=WSJT-X_input
RemainAfterExit=yes

[Install]
WantedBy=default.target

Der Service muss nun nur noch aktiviert werden:

systemctl --user daemon-reload
systemctl --user enable --now wsjt-x-sinks.service

Den Service-Status prüft man mit:

systemctl --user status wsjt-x-sinks.service

Die Einstellungen von WSJT-X und der Remote-Software erfolgt dann wieder so, wie in meinem alten Artikel beschrieben.