Jump to content

Hamradio/chan svx sat/pl

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 sat and the translation is 75% complete.

Praktyczny przewodnik krok po kroku, jak podłączyć węzeł AllStarLink 3 bezpośrednio do SVXReflectora za pomocą chan_svx_sat — instalacja, połączenie i poprawne ustawienie audio. Bez wcześniejszej znajomości SvxLink. Do skopiowania i wklejenia.

💡 W jednym zdaniu: chan_svx_sat to driver kanału Asterisk, który pozwala twojemu węzłowi AllStar mówić w Opusie bezpośrednio z SVXReflectorem — eliminujesz dawny przeskok chan_usrp → svxlink i dodatkowy tandem vocoderów.
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.

Czy naprawdę tego potrzebuję?

  • Prowadzisz węzeł AllStarLink 3 (na Raspberry Pi lub x86) i chcesz go na talkgrupie SVXReflector.
  • Dziś pewnie łączysz go przez chan_usrp → svxlink. Działa, ale transkoduje audio dwukrotnie i dokłada kolejne pudełko do pilnowania.
  • chan_svx_sat zastępuje cały ten przeskok jednym driverem. Tor audio staje się tylko PCM ↔ Opus, raz.

Jeśli nie idziesz do SvxReflectora — np. łączysz tylko AllStar-do-AllStar albo używasz DMR/YSF — nie potrzebujesz tego. Zobacz Hamradio dla tamtych.

Słowa, które zobaczysz (słowniczek prostym językiem)

Termin Co tu znaczy
AllStarLink 3 (ASL3) System linkowania VoIP zbudowany na Asterisku. Twój węzeł uruchamia asl3-asterisk.
app_rpt Aplikacja Asteriska, która jest kontrolerem twojego przemiennika/węzła (COS, PTT, ID, linki).
SVXReflector Serwer łączący wielu klientów w stylu SvxLink na wspólnych talkgrupach. Twój węzeł się do niego loguje.
Talkgrupa (TG) „Kanał” na reflektorze. Nadajesz na TG i słyszysz każdego, kto też tam jest.
Opus Kodek audio na linii między twoim węzłem a reflektorem. Jedna transkodycja, 8 kHz, ramki 20 ms.
Trunk Połączenie TCP (login) do reflektora. Wiele węzłów może dzielić jeden trunk — zobacz niżej.
Sekcja Blok [block] w svx_sat.conf. Jedna sekcja = jeden węzeł = jedna TG.

Czego potrzebujesz, zanim zaczniesz

💡 Odhacz wszystkie cztery. Jeśli jednego brakuje, napraw to najpierw — bez nich most nie zadziała.
  1. Działający węzeł AllStarLink 3. Sprawdź: asterisk -V pokazuje Asterisk 22.x+asl3-....
  2. System 64-bitowy. Debian 12 (bookworm) lub 13 (trixie), na x86-64 albo arm64 (Pi 3/4/5). Sprawdź: dpkg --print-architecture i . /etc/os-release; echo $VERSION_CODENAME. (Pi Zero 2 W celowo nie jest wspierany — ciepło + Wi-Fi.)
  3. Własny login do reflektora — dedykowany login + klucz autoryzacji, nie współdzielony z svxlink ani innym węzłem. Dzielenie jednego wyrzuca drugiego. Loginy SVXReflector to znaki wielkimi literami.
  4. Reflektor jest osiągalny. Sprawdź: nc -vz REFLECTOR_HOST 5300.

Przykład używany w całym przewodniku to prawdziwy węzeł: węzeł AllStar 1999 połączony z reflektorem na 172.16.1.1:5300, talkgrupa 24016. Wszędzie, gdzie je widzisz, wstaw swój host / login / TG.

Jak to się składa w całość

Dwa małe pliki konfiguracyjne na węźle i pasująca linia SECRET na reflektorze. Oto całe okablowanie:

rpt.conf points at a section in svx_sat.conf, which logs in to the reflector whose SECRET must match.
rpt.conf → a section in svx_sat.conf → a login the reflector recognises.

Krok 1 — Zainstaluj pakiet

Wybierz .deb pasujący do twojego systemu i architektury:

System / arch Pakiet
trixie x86-64 asl3-chan-svx-sat_<ver>~trixie_amd64.deb
trixie arm64 (Pi) asl3-chan-svx-sat_<ver>~trixie_arm64.deb
bookworm x86-64 asl3-chan-svx-sat_<ver>~bookworm_amd64.deb
bookworm arm64 (Pi) asl3-chan-svx-sat_<ver>~bookworm_arm64.deb
sudo apt install ./asl3-chan-svx-sat_<ver>~<os>_<arch>.deb

Zależności (asl3-asterisk, libopus0, libssl3) rozwiążą się same. Pakiet instaluje moduł, przykładową konfigurację, tę dokumentację w /usr/share/doc/asl3-chan-svx-sat/ i dodaje zakomentowaną linię load w modules.conf do włączenia w Kroku 4. Nic jeszcze się nie ładuje ani nie łączy.

Krok 2 — Utwórz konfigurację reflektora

Skopiuj przykład i otwórz do edycji:

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

Zrób to tak (nadaj sekcji nazwę węzła — schludnie i jednoznacznie):

[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 + hasło muszą pasować do reflektora. W sekcji [SATELLITE] reflektora musi być linia SECRET_SA7AUX-AC=CHANGE_ME (rozróżnia wielkość liter). Jeśli prowadzisz reflektor: dodaj/zmień linię SECRET_ i zrestartuj reflektor — sekrety czyta tylko przy starcie.

callsign jest pokazywany jako nazwa węzła, jeśli jest wolny na reflektorze w danym momencie; przy kolizji (lub gdy pusty) używa zapasowo ASL-<section> (np. ASL-1999), ponownie oceniane automatycznie, w miarę jak nazwy się zwalniają.

Krok 3 — Skieruj na niego węzeł

W /etc/asterisk/rpt.conf, w stanzie twojego węzła, zakomentuj stary rxchannel — nigdy go nie kasuj — i dodaj linię SVX:

[1999](node-main)
; rxchannel = USRP/127.0.0.1:4001:4002   ; old bridge, kept so you can revert
rxchannel = SVXSAT/1999                  ; chan_svx_sat -> section [1999]
💡 Chcesz, by przetrwało aktualizacje pakietu? Umieść stanzę węzła w /etc/asterisk/custom/rpt.conf — ASL3 dołącza ten plik i nigdy go nie nadpisuje. Edytuj bezpośrednio jak wyżej dla szybkiej zmiany; użyj custom/, jeśli chcesz, by twoja konfiguracja przetrwała czysto aktualizacje asl3-asterisk.

Krok 4 — Włącz moduł

ASL3 ma autoload = no, więc moduł trzeba wypisać ręcznie. Pakiet dodał zakomentowaną linię — włącz ją. Musi być wewnątrz sekcji [modules] (linia load po kolejnej sekcji jest po cichu ignorowana):

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

Krok 5 — Zastosuj i sprawdź

Zmiana rxchannel wymaga reinicjalizacji app_rpt, więc zrestartuj Asteriska, a potem sprawdź:

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

Zdrowy most wygląda tak — CONNECTED znaczy, że podstawowe połączenie masz gotowe:

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

Naciśnij PTT na węźle → txframes rośnie, a reflektor otwiera talkera na twojej TG. Gdy ktoś inny mówi na TG → rxframes rośnie. Gotowe. Reszta strony to regulacje i dodatki.

Ustaw audio poprawnie

Tu najwięcej osób się zacina, więc nie spiesz się. Tylko żółte stopnie mają pokrętła — wszystko szare jest automatyczne.

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

To wszystko żyje w sekcji węzła w svx_sat.conf. Po każdej zmianie uruchom sudo asterisk -rx "core restart now".

Cztery pokrętła audio

Ustawienie Domyślnie Co robi
tx_gain 0 Przedwzmocnienie w TX (węzeł → reflektor), w dB. Podnieś, jeśli inni mówią, że jesteś cichy; obniż, jeśli mówią, że przesterowujesz.
rx_gain 0 Przedwzmocnienie w RX (reflektor → węzeł), w dB. Podnieś, jeśli audio reflektora jest za ciche na twoim przemienniku.
tx_agc / rx_agc no Automatyczna regulacja wzmocnienia. Włącz, by wyrównać silne/słabe stacje. yes lub no.
bitrate 16000 Bitrate Opus w bit/s. Zostaw, jeśli nie masz powodu.
💡 Limiter jest zawsze aktywny w obu kierunkach — chroni przed przesterowaniem, nawet jeśli przesadzisz ze wzmocnieniem. Opus inband-FEC + PLC też są zawsze aktywne: zgubiony pakiet jest odtwarzany z FEC następnego, a niedobór buforu jest maskowany zamiast dawać kliknięcie. Niczego z tego nie konfigurujesz.

„Moje audio jest X → zrób Y”

Objaw Rozwiązanie
Inni mówią, że jesteś za cichy Podnieś tx_gain po kilka dB naraz (np. 3, potem 6).
Inni mówią, że przesterowujesz / zniekształcasz Obniż tx_gain odrobinę. Limiter chroni szczyt, ale czyste wejście jest lepsze.
Audio reflektora za ciche na twoim przemienniku Podnieś rx_gain o kilka dB.
Silne i słabe stacje bardzo nierówne Włącz rx_agc = yes (i/lub tx_agc = yes).
Audio poszarpane na wyjściu Zobacz poprawkę tx_hold niżej.
Trzaski/urwania wchodzące na słabej linii Podnieś jitter (zobacz niżej). FEC/PLC już pomagają; to daje zapas.

Dwa kolejne pokrętła: tx_hold i jitter

Ustawienie Domyślnie Co robi
tx_hold 250 Czas przytrzymania TalkerStop, w ms. Krótkie puszczenie/wciśnięcie w środku wypowiedzi (migotanie COS, hangtime linku) zamknęłoby i otworzyło ponownie talkera reflektora, szarpiąc audio. Przytrzymanie utrzymuje go otwartym przez lukę. 0 = zatrzymaj od razu po puszczeniu.
jitter 40 Wstępne wypełnienie buforu jitter, w ms. Wyżej = płynniej na słabej/długiej linii, ale więcej opóźnienia. 0 = minimum (dobre w czystej LAN). Maks. 500.

Jeśli audio na wyjściu jest poszarpane: uruchom svxsat show i obserwuj starts/stops. Po jednym na wypowiedź jest zdrowe. Wiele na wypowiedź znaczy, że twoje PTT migocze — podnieś tx_hold (spróbuj 400).

Opcjonalnie: słuchanie dodatkowych talkgrup

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

Utrzymywanie go w ruchu — na zawsze

Dwie niezależne rzeczy pozostają aktywne: link do reflektora i link AllStar węzeł-do-węzła.

  • Link do reflektora jest automatyczny. chan_svx_sat łączy się ponownie sam (heartbeat TCP + UDP, backoff po każdym urwaniu). Nic do konfigurowania; svxsat show wraca do CONNECTED w kilka sekund po każdej przerwie.
  • Chcesz utrzymać węzeł AllStar połączony z hubem? Użyj trwałego connect app_rpt, który sam się odbudowuje:
sudo asterisk -rx "rpt cmd 1999 ilink 13 403870"   # 13 = permanent, transceive

Łącz automatycznie przy starcie przez stanzę węzła:

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

Pas i szelki z cronem (ilink 3 jest idempotentne — nic nie robi, jeśli już połączone):

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

Dodatek: zmiana talkgrupy z radia (DTMF)

Możesz przenieść węzeł na inną TG na żywo — przez RF z DTMF, chronione PIN-em — i potem wrócić. Wygodne, by rozgłosić biuletyn/net na innej TG i potem wrócić.

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

Schemat wybierania: *855 + PIN + akcja. Umieść komendy w rpt.conf pod [functions] (PIN to kod sterujący — zły PIN po prostu nic nie robi). Domyślny PIN to 0000 — zmień go przed użyciem:

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

Ustaw domyślną TG i limit czasu auto-powrotu w svx_sat.conf:

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

Tymczasowa TG zawsze wraca do domyślnej przy restarcie, ponownym połączeniu lub po tg_timeout — więc zapomniana zmiana nigdy nie zostawi węzła zablokowanego.

Wiele węzłów na jednym loginie

Nadaj wielu sekcjom ten sam login + password (i po jednym tg każdej), a zostaną zmultipleksowane na jednym trunku reflektora — jeden handshake, jeden heartbeat — podczas gdy każda nadal pojawia się jako własny węzeł z własnym znakiem i TG. Sekcje z różnymi loginami otwierają osobne trunki.

[403872]
host = reflector.example.org
login = SA7AUX-N      ; SAME login  -> shared trunk
password = CHANGE_ME  ; SAME secret
callsign = SA7AUX-1
tg = 24016
</div>

<div lang="en" dir="ltr" class="mw-content-ltr">
[403873]
host = reflector.example.org
login = SA7AUX-N      ; SAME login  -> same connection
password = CHANGE_ME
callsign = SA7AUX-2
tg = 24021            ; different TG per node

Rozwiązywanie problemów

Objaw Sprawdź
svxsat show puste / "No such command" / węzeł nie ma rxchannel Czy load = chan_svx_sat.so jest włączone wewnątrz [modules]? Zrobiłeś core restart now?
down zamiast CONNECTED Host/port osiągalne? login/hasło poprawne? Obserwuj: sudo tail -f /var/log/asterisk/messages.log | grep -i svx
auth rejected: Invalid callsign Login musi być poprawnym znakiem wielkimi literami, a konto musi istnieć na reflektorze.
auth rejected: Access denied Złe hasło lub login nie jest zarejestrowany na reflektorze (brak SECRET_ / reflektor nie zrestartowany).
txframes rośnie, ale nikt cię nie słyszy Czy słuchający klient naprawdę wybiera/monitoruje tę samą TG?
Audio poszarpane na wyjściu, starts rośnie wiele-na-wypowiedź Migoczące PTT → podnieś tx_hold (np. 400).
txbadsize rośnie app_rpt dostarcza ramki nie-slin — sprawdź tor audio węzła.
Ładuje się, ale odmawia ("compile-time options") Pakiet musi pasować do zainstalowanej wersji asl3-asterisk — zainstaluj deb dla swojego dokładnego systemu.

Przywracanie

  1. Przywróć stary rxchannel (odkomentuj) i zakomentuj rxchannel = SVXSAT/....
  2. Zakomentuj load = chan_svx_sat.so w modules.conf.
  3. sudo asterisk -rx "core restart now".

Usunąć całkiem: sudo apt remove asl3-chan-svx-sat (dodaj --purge, by usunąć też przykładową konfigurację i linię w modules.conf).

Zobacz też

  • Hamradio — wszystkie poradniki o głosie cyfrowym i bramkach.
  • Autor / zgłaszanie błędów: SA7AUX <bjorne@sa7aux.se>. GNU GPL v2.