Svxlink-Zello Bridge

„` SVXLink-Zello-Bridge 0.3.3 „`
„`

SVXLink-Zello-Bridge

SVXLink ↔ Zello Verbindung

Funknetz NRW

Version 0.3.3   |   STABLE
„`
„`

SVXLink-Zello-Bridge 0.3.3

Die SVXLink-Zello-Bridge verbindet ein SVXLink/SVXReflector-System mit einem Zello-Kanal.

Die Bridge arbeitet unabhängig von proprietären Bridge-Programmen und verwendet die dokumentierte Zello Channel API.

Aktueller Funktionsstand:
SVXLink → Zello und Zello → SVXLink funktionieren. Mehrere Sprechvorgänge hintereinander sind möglich, ohne dass der Dienst neu gestartet werden muss.
„`
„`

Funktionen

SVXLink → Zello

Audiodaten aus SVXLink werden als OPUS an den Zello-Kanal übertragen.

Zello → SVXLink

Zello-Audio wird empfangen und über SVXLink/SVXReflector ausgegeben.

SVX V2

Verbindung über das SVXLink Reflector Protocol V2 mit TCP und UDP.

OPUS

Für die Audioübertragung wird OPUS verwendet.

Automatische Wiederverbindung

Bei einer Unterbrechung versucht die Bridge automatisch erneut zu verbinden.

systemd

Die Bridge kann als Linux-Systemdienst betrieben werden.

„`
„`

Technische Daten

Komponente Wert
Bridge-Version 0.3.3
SVXLink Protocol V2
Audio Codec OPUS
Sample Rate 16.000 Hz
Frames pro Paket 1
Paketdauer 20 ms
OPUS Bitrate 20 kbit/s
Python Python 3
Installationsverzeichnis /opt/svxlink-zello-bridge
Konfiguration /etc/svxlink-zello-bridge/config.toml
„`
„`

Installation

Archiv herunterladen

Die aktuelle Bridge kann über den Download-Link am Ende dieser Seite heruntergeladen werden.

Archiv nach /opt kopieren
cd /opt
Archiv entpacken
unzip svxzello.zip
In das Installationsverzeichnis wechseln
cd /opt/svxlink-zello-bridge
Installationsscript ausführbar machen
chmod +x install.sh
Installation starten
./install.sh
Konfigurationsdatei
Wenn noch keine Konfiguration vorhanden ist, erstellt das Installationsscript automatisch:
/etc/svxlink-zello-bridge/config.toml
Eine bereits vorhandene Konfiguration wird nicht überschrieben.
„`
„`

Konfiguration

Die Konfiguration befindet sich unter:

/etc/svxlink-zello-bridge/config.toml

Beispiel

[general]
```

log_level = "INFO"
reconnect_seconds = 10

[svxlink]
protocol = 2
host = "DEIN-SVXREFLECTOR"
tcp_port = 5300
udp_port = 5300
callsign = "DEIN-CALL"
auth_key = "DEIN-AUTH-KEY"
talkgroup = 1

[zello]
endpoint = "wss://zello.io/ws"
channel = "DEIN-ZELLO-KANAL"
auth_token = "DEIN-AUTH-TOKEN"
username = "DEIN-BENUTZER"
password = "DEIN-PASSWORT"

sample_rate = 16000
frames_per_packet = 1
packet_duration_ms = 20
opus_bitrate = 20000
„`
Sicherheit:
Die Datei enthält Zugangsdaten für SVXLink und Zello. Die Datei sollte deshalb nur für den Benutzer bzw. Root lesbar sein.
chmod 600 /etc/svxlink-zello-bridge/config.toml
„`
„`

Systemdienst

Nach der Installation kann der Dienst mit systemd verwaltet werden.

Dienst starten

systemctl start svxlink-zello-bridge

Status anzeigen

systemctl status svxlink-zello-bridge

Logs anzeigen

journalctl -u svxlink-zello-bridge -f

Dienst stoppen

systemctl stop svxlink-zello-bridge

Dienst neu starten

systemctl restart svxlink-zello-bridge
„`
„`

Funktionstest

1. SVXLink → Zello

Einen kurzen Sprechvorgang über SVXLink durchführen.

Im Log sollten unter anderem Meldungen wie folgende erscheinen:

SVX talker start
```

Zello start_stream
Zello stream started
SVX talker stop
Zello stop_stream
Zello stream stopped
„`

2. Zello → SVXLink

Anschließend über den Zello-Kanal senden. Das Audio sollte über SVXLink ausgegeben werden.

3. Mehrere Sprechvorgänge

Mehrere Sprechvorgänge hintereinander testen. Nach jedem Sprechvorgang muss der Zello-Stream sauber beendet werden.

Erwartetes Verhalten:
Jeder neue SVXLink-Sprechvorgang erzeugt einen neuen Zello-Stream und wird anschließend wieder sauber beendet.
„`
„`

Audio-Übertragung

Die Zello Channel API erwartet für den Codec-Header ein 4-Byte-Format.

struct.pack("<HBB", sample_rate, frames, duration)

Dabei werden folgende Werte übertragen:

Feld Größe Bedeutung
Sample Rate 16 Bit z. B. 16000 Hz
Frames 8 Bit Frames pro Paket
Duration 8 Bit Paketdauer in ms
Für die aktuelle Konfiguration bedeutet das:
Sample Rate:       16000 Hz
```

Frames:            1
Paketdauer:        20 ms
Codec:             OPUS
Bitrate:           20000 bit/s
„`
„`
„`

Fehlerdiagnose

Dienst läuft nicht

systemctl status svxlink-zello-bridge

Danach die letzten Logmeldungen prüfen:

journalctl -u svxlink-zello-bridge -n 100 --no-pager

Zello-Verbindung funktioniert nicht

Prüfen:

  • Zello-Kanalname
  • Benutzername
  • Passwort
  • Auth-Token
  • Internetverbindung

SVXLink-Verbindung funktioniert nicht

Prüfen:

  • SVXReflector-Adresse
  • TCP-Port
  • UDP-Port
  • Callsign
  • AUTH_KEY
  • Talkgroup
  • Firewall

Kein Audio von SVXLink nach Zello

Zunächst prüfen, ob der Stream korrekt gestartet und beendet wird:

journalctl -u svxlink-zello-bridge -f

Ein vollständiger Ablauf sollte ungefähr so aussehen:

SVX talker start
```

Zello start_stream
Zello stream started
Audio packets ...
SVX talker stop
Zello stop_stream
Zello stream stopped
„`

Update auf eine neue Version

Vor einem Update sollte die vorhandene Konfiguration gesichert werden.

cp /etc/svxlink-zello-bridge/config.toml \
```

/etc/svxlink-zello-bridge/config.toml.backup
„`

Danach die neue Version installieren und den Dienst neu starten.

systemctl stop svxlink-zello-bridge
```

cd /opt
unzip svxzello.zip

cd /opt/svxlink-zello-bridge
./install.sh

systemctl restart svxlink-zello-bridge

systemctl status svxlink-zello-bridge
„`
Die bestehende Konfigurationsdatei wird bei einer vorhandenen Installation nicht automatisch überschrieben.
„`
„`

Download

Hier kann die aktuelle Bridge heruntergeladen werden.

„`
„`

Projektinformationen

Die SVXLink-Zello-Bridge wurde als eigenständige Software zur Verbindung von SVXLink und Zello entwickelt.

Die Bridge verwendet die SVXLink-Schnittstelle und die Zello Channel API zur Audioübertragung.

Wichtig:
Zugangsdaten wie Zello-Passwort, Auth-Token und SVXLink AUTH_KEY gehören ausschließlich in die lokale Konfigurationsdatei und sollten nicht öffentlich veröffentlicht werden.
„`
„`

SVXLink-Zello-Bridge 0.3.3

Funknetz NRW

© 2026

„`
Dieser Beitrag wurde unter Allgemein veröffentlicht. Setze ein Lesezeichen für den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert