Hamradio/chan svx sat/pl
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.
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.
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_satzastę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
- Działający węzeł AllStarLink 3. Sprawdź:
asterisk -VpokazujeAsterisk 22.x+asl3-.... - System 64-bitowy. Debian 12 (bookworm) lub 13 (trixie), na x86-64 albo arm64 (Pi 3/4/5). Sprawdź:
dpkg --print-architecturei. /etc/os-release; echo $VERSION_CODENAME. (Pi Zero 2 W celowo nie jest wspierany — ciepło + Wi-Fi.) - 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.
- 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:
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)
[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]
/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:
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.
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. |
„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 showwraca doCONNECTEDw 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ć.
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
- Przywróć stary
rxchannel(odkomentuj) i zakomentujrxchannel = SVXSAT/.... - Zakomentuj
load = chan_svx_sat.sowmodules.conf. 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.




