Jump to content

Hamradio/chan svx/de

From MediaWiki For Hamradio Analog/Digital and Debian v13 software/Raspberry PI v3/4/5 howto
This page is a translated version of the page Hamradio/chan svx and the translation is 77% complete.

Eine handliche Schritt-für-Schritt-Anleitung, um einen AllStarLink-3-Knoten direkt mit einem SVXReflector zu verbinden — mit chan_svx. Installieren, verbinden und das Audio richtig einstellen. Keine SvxLink-Vorkenntnisse nötig. Zum Kopieren und Einfügen.

💡 In einem Satz: chan_svx ist ein Asterisk-Kanaltreiber, mit dem dein AllStar-Knoten Opus direkt mit einem SVXReflector spricht — so entfällt der alte chan_usrp → svxlink-Umweg und das zusätzliche Vocoder-Tandem.
⚠ Zwei Geschwister-Treiber — wähle den richtigen. chan_svx (diese Seite) tritt dem Reflektor als SvxLink-Client bei (ein Login = eine TG). Sein Geschwister chan_svx_sat tritt als Satellit/Trunk bei und kann mehrere Knoten/TGs auf einem Login tragen. Willst du den Trunk, lies die chan_svx_sat-Anleitung.
Before: app_rpt via USRP and svxlink to the reflector. After: app_rpt straight to the reflector over one Opus stream.
One Opus hop instead of two transcodes. Less latency, cleaner audio.

Brauche ich das überhaupt?

  • Du betreibst einen AllStarLink-3-Knoten (auf einem Raspberry Pi oder x86) und willst ihn auf einer SVXReflector-Talkgroup haben.
  • Heute überbrückst du ihn vermutlich mit chan_usrp → svxlink. Das geht, aber es transkodiert das Audio zweimal und bringt eine weitere Kiste zum Pflegen mit.
  • chan_svx ersetzt diesen ganzen Umweg durch einen Treiber. Der Audioweg wird nur noch PCM ↔ Opus, einmal.

Willst du nicht zu einem SvxReflector — z. B. wenn du nur AllStar-zu-AllStar verlinkst oder DMR/YSF nutzt — brauchst du das nicht. Siehe Hamradio dafür.

Wörter, die du siehst (Glossar in einfacher Sprache)

Begriff Was er hier bedeutet
AllStarLink 3 (ASL3) Das auf Asterisk aufbauende VoIP-Verlinkungssystem. Dein Knoten fährt asl3-asterisk.
app_rpt Die Asterisk-Anwendung, die deine Repeater-/Knotensteuerung ist (COS, PTT, IDs, Links).
SVXReflector Ein Server, der viele SvxLink-artige Clients auf gemeinsamen Talkgroups zusammenführt. Dein Knoten loggt sich dort ein.
Talkgroup (TG) Ein „Kanal“ auf dem Reflektor. Du sendest auf einer TG und hörst alle anderen darauf.
Opus Der Audio-Codec auf der Leitung zwischen Knoten und Reflektor. Eine Transkodierung, 8 kHz, 20 ms-Frames.
Client chan_svx tritt dem Reflektor als normaler SvxLink-Client bei — ein Login, eine TG, ein Stream.
Sektion Ein [block] in svx.conf. Eine Sektion = ein Knoten = eine TG.

Was du brauchst, bevor du anfängst

💡 Hake alle vier ab. Fehlt eines, behebe es zuerst — ohne sie kann die Brücke nicht funktionieren.
  1. Ein funktionierender AllStarLink-3-Knoten. Prüfen: asterisk -V zeigt Asterisk 22.x+asl3-....
  2. Ein 64-bit-OS. Debian 12 (bookworm) oder 13 (trixie), auf x86-64 oder arm64 (Pi 3/4/5). Prüfen: dpkg --print-architecture und . /etc/os-release; echo $VERSION_CODENAME. (Der Pi Zero 2 W wird bewusst nicht unterstützt — Wärme + WLAN.)
  3. Ein eigener Reflektor-Login — ein dedizierter Login + Auth-Key, nicht mit svxlink oder einem anderen Knoten geteilt. Teilst du einen, fliegt der andere raus. SvxReflector-Logins sind Rufzeichen in Großbuchstaben.
  4. Der Reflektor ist erreichbar. Prüfen: nc -vz REFLECTOR_HOST 5300.

Das durchgehende Beispiel unten ist ein echter Knoten: AllStar-Knoten 1999, der zu einem Reflektor unter 172.16.1.1:5300 verbindet, Talkgroup 24016. Ersetze überall dein eigenes Host / Login / TG.

Wie alles zusammenpasst

Zwei kleine Konfigdateien auf dem Knoten und ein Login, das der Reflektor kennt. Das ist die ganze Verkabelung:

rpt.conf points at a section in svx.conf, which logs in to the reflector as a client.
rpt.conf → a section in svx.conf → a login the reflector recognises.

Schritt 1 — Das Paket installieren

Wähle das .deb, das zu deinem OS und deiner Architektur passt:

OS / Arch Paket
trixie x86-64 asl3-chan-svx_<ver>~trixie_amd64.deb
trixie arm64 (Pi) asl3-chan-svx_<ver>~trixie_arm64.deb
bookworm x86-64 asl3-chan-svx_<ver>~bookworm_amd64.deb
bookworm arm64 (Pi) asl3-chan-svx_<ver>~bookworm_arm64.deb
sudo apt install ./asl3-chan-svx_<ver>~<os>_<arch>.deb

Abhängigkeiten (asl3-asterisk, libopus0, libssl3) werden automatisch aufgelöst. Das Paket installiert das Modul, eine Beispiel-Konfig, diese Art Dokumentation unter /usr/share/doc/asl3-chan-svx/ und fügt eine auskommentierte load-Zeile in modules.conf hinzu, die du in Schritt 4 aktivierst. Noch wird nichts geladen oder verbunden.

Schritt 2 — Die Reflektor-Konfig erstellen

Kopiere die Vorlage und öffne sie zum Bearbeiten:

sudo cp /etc/asterisk/svx.conf.sample /etc/asterisk/svx.conf
sudo chown asterisk:asterisk /etc/asterisk/svx.conf
sudo chmod 640 /etc/asterisk/svx.conf      # it holds your reflector password
sudoedit /etc/asterisk/svx.conf

Mach sie so (benenne die Sektion nach dem Knoten — aufgeräumt und eindeutig):

[1999]
host     = 172.16.1.1       ; reflector hostname or IP
port     = 5300             ; reflector port (default 5300)
login    = SA7AUX-AC        ; your OWN login, UPPER-CASE, not shared
password = CHANGE_ME        ; your reflector auth-key
callsign = SA7AUX           ; name shown to the reflector
tg       = 24016            ; talkgroup to select (TX + primary RX)
💡 Login + Passwort müssen zu dem passen, was der Reflektor für diesen Login erwartet. Nutze einen dedizierten Login — ein Rufzeichen in Großbuchstaben — den kein anderer Client (svxlink, ein anderer Knoten) schon nutzt; teilst du einen, fliegt der andere raus.

Das callsign wird als Name des Knotens angezeigt, wenn es auf dem Reflektor gerade frei ist; bei einer Kollision (oder wenn leer) fällt es auf ASL-<section> zurück (z. B. ASL-1999), automatisch neu geprüft, sobald Namen frei werden.

Schritt 3 — Den Knoten darauf zeigen lassen

In /etc/asterisk/rpt.conf, im Stanza deines Knotens, kommentiere den alten rxchannel aus — lösche ihn nie — und füge die SVX-Zeile hinzu:

[1999](node-main)
; rxchannel = USRP/127.0.0.1:4001:4002   ; old bridge, kept so you can revert
rxchannel = SVX/1999                  ; chan_svx -> section [1999]
💡 Soll es Paket-Upgrades überleben? Leg das Knoten-Stanza stattdessen in /etc/asterisk/custom/rpt.conf — ASL3 bindet diese Datei ein und überschreibt sie nie. Nutze die direkte Bearbeitung oben für eine schnelle Änderung; nutze custom/, wenn deine Konfig asl3-asterisk-Updates sauber überstehen soll.

Schritt 4 — Das Modul aktivieren

ASL3 hat autoload = no, das Modul muss also von Hand gelistet werden. Das Paket hat eine auskommentierte Zeile hinzugefügt — schalte sie ein. Sie muss innerhalb des [modules]-Abschnitts stehen (eine load-Zeile nach einem späteren Abschnitt wird still ignoriert):

sudo sed -i 's/^; *load = chan_svx.so/load = chan_svx.so/' /etc/asterisk/modules.conf
grep -n '^load = chan_svx.so' /etc/asterisk/modules.conf     # confirm it's active

Schritt 5 — Anwenden und prüfen

Eine rxchannel-Änderung erfordert, dass app_rpt neu initialisiert, also starte Asterisk neu und prüfe dann:

sudo asterisk -rx "core restart now"
sudo asterisk -rx "svx show"

Eine gesunde Brücke sieht so aus — CONNECTED heißt, die Grundverbindung ist fertig:

Annotated svx show output explaining CONNECTED, txframes, rxframes, starts/stops, fec and plc.

Taste am Knoten → txframes steigt und der Reflektor öffnet den Talker auf deiner TG. Wenn ein anderer auf der TG spricht → rxframes steigt. Fertig. Der Rest der Seite sind Feinabstimmung und Extras.

Das Audio richtig einstellen

Hier bleiben die meisten hängen, also geh es langsam an. Nur die gelben Stufen haben Regler — alles Graue ist automatisch.

The TX and RX audio chains showing which stages are tunable (gain, AGC, jitter, tx_hold) and which are automatic (limiter, Opus FEC/PLC).

All das lebt im Sektions-Block des Knotens in svx.conf. Nach jeder Änderung: sudo asterisk -rx "core restart now" ausführen.

Die vier Audio-Regler

Einstellung Standard Was sie tut
tx_gain 0 Vorverstärkung auf TX (Knoten → Reflektor), in dB. Erhöhen, wenn andere sagen, du bist leise; senken, wenn sie sagen, du übersteuerst.
rx_gain 0 Vorverstärkung auf RX (Reflektor → Knoten), in dB. Erhöhen, wenn das Reflektor-Audio auf deinem Repeater zu leise ist.
tx_agc / rx_agc no Automatische Pegelregelung. Einschalten, um laute/leise Stationen auszugleichen. yes oder no.
bitrate 16000 Opus-Bitrate in bit/s. Lass sie, außer du hast einen Grund.
💡 Ein Limiter ist immer an in beide Richtungen — er verhindert Übersteuern, selbst wenn du die Verstärkung zu weit erhöhst. Opus inband-FEC + PLC sind ebenfalls immer an: ein verlorenes Paket wird aus dem FEC des nächsten rekonstruiert, und ein Unterlauf wird verdeckt statt zu klicken. Davon konfigurierst du nichts.

„Mein Audio ist X → tu Y“

Symptom Lösung
Andere sagen, du bist zu leise Erhöhe tx_gain um wenige dB (z. B. 3, dann 6).
Andere sagen, du übersteuerst / verzerrst Senke tx_gain einen Tick. Der Limiter schützt die Spitze, aber sauberes Eingangssignal ist besser.
Reflektor-Audio zu leise auf deinem Repeater Erhöhe rx_gain um wenige dB.
Laute und leise Stationen sind extrem ungleich Schalte rx_agc = yes ein (und/oder tx_agc = yes).
Abgehackt / zerhackt gesendetes Audio Siehe den tx_hold-Fix unten.
Knacken/Aussetzer, die hereinkommen auf einer schlechten Leitung Erhöhe jitter (siehe unten). FEC/PLC helfen schon; das gibt Reserve.

Zwei weitere Regler: tx_hold und jitter

Einstellung Standard Was sie tut
tx_hold 250 TalkerStop-Haltezeit, in ms. Kurzes Ent-/Wieder-Tasten mitten in einer Durchgabe (COS-Flackern, Link-Haltezeit) würde sonst den Reflektor-Talker schließen und wieder öffnen und das Audio zerhacken. Die Haltezeit hält ihn über die Lücke offen. 0 = sofort beim Enttasten stoppen.
jitter 40 Jitter-Buffer-Vorfüllung, in ms. Höher = glatter auf einer schlechten/langen Leitung, aber mehr Latenz. 0 = minimal (gut in einem sauberen LAN). Max 500.

Wenn das gesendete Audio zerhackt ist: führe svx show aus und beobachte starts/stops. Je eins pro Durchgabe ist gesund. Viele pro Durchgabe heißt, deine Tastung flattert — erhöhe tx_hold (probiere 400).

Optional: zusätzliche Talkgroups hören

monitor = 24020, 9990     ; extra TGs you HEAR (RX only); TX still goes to 'tg'

Dauerhaft oben halten

Zwei unabhängige Dinge bleiben oben: der Reflektor-Link und der AllStar-Knoten-zu-Knoten-Link.

  • Der Reflektor-Link ist automatisch. chan_svx verbindet sich von selbst neu (TCP + UDP-Heartbeats, Backoff nach jedem Abbruch). Nichts zu konfigurieren; svx show steht innerhalb von Sekunden nach jedem Ausfall wieder auf CONNECTED.
  • Soll der AllStar-Knoten mit einem Hub verlinkt bleiben? Nutze app_rpts permanentes Connect, das sich selbst wiederherstellt:
sudo asterisk -rx "rpt cmd 1999 ilink 13 403870"   # 13 = permanent, transceive

Beim Boot automatisch verlinken über das Knoten-Stanza:

[1999](node-main)
rxchannel = SVX/1999
startup_macro = *3403870     ; auto-connect to 403870 (transceive) on startup

Gürtel-und-Hosenträger per Cron (ilink 3 ist idempotent — ein No-Op, wenn bereits verlinkt):

# keep node 1999 linked to 403870 every 2 minutes
*/2 * * * * /usr/sbin/asterisk -rx "rpt cmd 1999 ilink 3 403870" >/dev/null 2>&1

Bonus: Talkgroup vom Funkgerät wechseln (DTMF)

Du kannst den Knoten live auf eine andere TG schalten — über HF mit DTMF, per PIN geschützt — und dann zurück. Praktisch, um eine Bulletin/ein Net auf einer anderen TG auszusenden und dann zurückzugehen.

DTMF dial pattern star-855 plus PIN plus action digit, with a table of actions and the control flow.

Wählmuster: *855 + PIN + Aktion. Leg die Befehle in rpt.conf unter [functions] (die PIN ist der Steuercode — eine falsche PIN tut einfach nichts). Standard-PIN ist 0000 — ändere sie vor der Nutzung:

; /etc/asterisk/rpt.conf  —  base 855, PIN 0000 (CHANGE IT!)
[functions]
85500001 = cmd,asterisk -rx "svx settg 403872 3149060"   ; *855 0000 1 -> bulletin TG
85500002 = cmd,asterisk -rx "svx settg 403872 3149070"   ; *855 0000 2 -> another TG
85500000 = cmd,asterisk -rx "svx revert 403872"          ; *855 0000 0 -> default TG
85500009 = cmd,asterisk -rx "svx down   403872"          ; *855 0000 9 -> link down
85500008 = cmd,asterisk -rx "svx up     403872"          ; *855 0000 8 -> link up

Setze die Standard-TG und ein Auto-Zurück-Timeout in svx.conf:

[403872]
tg         = 3149050     ; the DEFAULT TG (revert/up target)
tg_timeout = 30          ; minutes on another TG before auto-revert (0 = off)

Eine temporäre TG fällt immer auf die Standard-TG zurück — bei einem Neustart, einer Wiederverbindung oder nach tg_timeout — so strandet ein vergessener Wechsel den Knoten nie.

Mehrere Knoten oder TGs? Nutze chan_svx_sat

chan_svx ist ein Login = eine TG = ein Stream — ein Reflektor-Client pro Sektion. Brauchst du mehrere Knoten / Talkgroups über einen einzigen Reflektor-Login (einen gemeinsamen Trunk), ist das genau, was der Geschwister-Treiber chan_svx_sat tut — er tritt als Reflektor-Satellit/Trunk statt als Client bei. Siehe die chan_svx_sat-Anleitung.

Fehlerbehebung

Symptom Prüfen
svx show leer / "No such command" / Knoten hat keinen rxchannel Ist load = chan_svx.so innerhalb [modules] aktiviert? Hast du core restart now gemacht?
down statt CONNECTED Host/Port erreichbar? login/password korrekt? Beobachte: sudo tail -f /var/log/asterisk/messages.log | grep -i svx
auth rejected: Invalid callsign Login muss ein gültiges Großbuchstaben-Rufzeichen sein, und das Konto muss auf dem Reflektor existieren.
auth rejected: Access denied Falsches Passwort, oder der Login ist nicht auf dem Reflektor registriert.
txframes steigt, aber niemand hört dich Wählt/beobachtet der hörende Client wirklich dieselbe TG?
Abgehacktes Audio raus, starts steigt viele-pro-Durchgabe Tastung flattert → erhöhe tx_hold (z. B. 400).
txbadsize steigt app_rpt liefert Nicht-slin-Frames — prüfe den Audioweg des Knotens.
Lädt, verweigert aber ("compile-time options") Das Paket muss zur installierten asl3-asterisk-Version passen — installiere das deb für dein genaues OS.

Zurücksetzen

  1. Stelle den alten rxchannel wieder her (auskommentieren aufheben) und kommentiere rxchannel = SVX/... aus.
  2. Kommentiere load = chan_svx.so in modules.conf aus.
  3. sudo asterisk -rx "core restart now".

Komplett entfernen: sudo apt remove asl3-chan-svx (mit --purge auch die Beispiel-Konfig und die modules.conf-Zeile entfernen).

Siehe auch

  • Hamradio — alle Digital-Voice- und Gateway-Anleitungen.
  • Autor / Fehlerberichte: SA7AUX <bjorne@sa7aux.se>. GNU GPL v2.