DVSwitch su Ubuntu 24.04.02 (e non solo) in STFU

A seguito del precedente esperimento poi fallito, ritorno a presentarvi una soluzione funzionante per installare DVSwitch Server in versione minimale su piccole VPS anche con versioni Debian superiori alla 10 (come da progetto originale).

Cosa è cambiato? La probabile incompatibilità del nuovo modulo MMDVM aveva vanificato la procedura pubblicata in precedenza ma nel frattempo , come molti di voi sapranno, il gruppo DMR Brescia responsabile per il BM in Italia ha consigliato/spinto coloro che come me usano sistemi esclusivamente via rete, come dvswitch, di passare al protocollo STFU.

Utilizzando esclusivamente la rete BM con dvswitch ho allora provato a cimentarmi nuovamente in questo adattamento pensato quindi SOLO ED ESCLUSIVAMENTE per coloro che necessitano connessione STFU alla/e reti BrandMeister.

L’idea di base è stata banale: come scritto nell’articolo precedente uno dei “contro” di STFU è , per quanto provato, l’impossibilità di avere la buona vecchia dashboard web del proprio server. Assodato questo, considerato che personalmente non ho mai usato il Monitoring integrato (pacchetto Monit) e focalizzandomi su compatibilità ed uso su macchine con ridotte o ridottissime risorse ho provato ad escludere tutto quanto nello scenario presentato sopra, non più necessario. Quello che ci serve è semplicemente: il pacchetto base, il pacchetto menù , l’Analog Bridge, STFU ed MMDVM Bridge usato solo come “connettore” dei vari pezzettini.

Escludendo tutta la parte non DMR ma soprattutto tutta la parte web/php/monitoring non solo si snellisce il tutto ma si riesce ad avere compatibilità anche con le versioni Linux non nativamente supportate in origine dal dvswitch.

Quello che segue è testato da 2 giorni e funzionante su una piccola VM x64 con “soli” 512MB Ram ed 1Vcore (CPU) , i test danno un footprint di 214MB e un’uso limitato a non più del 10% della CPU anche in QSO.

L’installazione funziona ed è da me testata su Ubuntu Server 24.04.02 “vergine” cioè installato da zero senza altri sw/servizi installati .

Non ho modo/tempo/voglia di far test su altre versioni di OS ma sono fiducioso che per l’esiguo numero di componenti e per la presenza dei pacchetti fondamentali compatibili a partire da Ubuntu 20.04 il tutto dovrebbe funzionare da quella versione in su ed anche in ambiente ARM (raspberry per fare l’esempio più conosciuto).

Aggiornamento del 23/05/2025: quanto segue funziona e l’ho testato su Raspberry Pi Zero 2W con Raspbian bookworm 64bit Lite. Da notare che il footprint RAM è inferiore alla versione vm su x64 occupando “solo” 152MB/417MB totali. Nessuno swap ed anche in QSO i 4 core arm non vanno oltre il 15%.

Rammento che non ho alcun legame con gli sviluppatori del progetto ne conosco in modo esteso il funzionamento dei singoli componenti che compongono il server. Questo significa che è sperimentazione pura.

Non è scopo di questa guida approfondire in generale concetti legati a nat, routing,ip e configurazione base di dvswitch nonchè il suo stesso funzionamento in quanto esistono risorse specifiche.

Malgrado non c’è nulla di difficile o complicato è preferibile avere una conoscenza almeno di base dei sistemi Linux/Unix.

Quanto segue, è la procedura passo passo da me usata per realizzare questa versione minimale di DVSwitch Server solo STFU. La VM usata è da ieri up&running , ho fatto un paio di QSO ed un po di ascolto su vari TG e sembra funzionare bene su VM di tipo KVM/QEMU configurata con 512MB Ram e 1CPU su miniPC Intel N95.

Cominciamo…

1. Scarica lo script di setup repository DVSwitch

wget http://dvswitch.org/bookworm (oppure http://dvswitch.org/buster per versioni più datate come ubuntu 20.04 originale) 

Scarica lo script ufficiale per aggiungere i repository DVSwitch su Debian Bookworm/Ubuntu 24+ (20.04 se usate lo script buster).

2. Rendi eseguibile lo script

chmod +x bookworm (o buster se scaricato in alternativa)

Permette l’esecuzione dello script appena scaricato.

3. Esegui lo script


sudo ./bookworm (o buster se scaricato in alternativa)

Lancia lo script (da utente normale e poi come root per configurare repo e chiavi GPG).

4. Installa i pacchetti core di DVSwitch

Cominciamo con l’update in modo da aggiornare il contenuto con le nuove repository di dvswitch:

sudo apt update

A seguire:

sudo apt install dvswitch-base
sudo apt install dvswitch-menu
sudo apt install analog-bridge
sudo apt install mmdvm-bridge
  • dvswitch-base: componenti base DVSwitch.

  • dvswitch-menu: tool/testuale per configurazione e gestione DVSwitch.

  • analog-bridge: gestore bridge audio (include anche alsa ed md380-emu per gestione AMBE2).

  • mmdvm-bridge: servirà solo per creare i file di configurazione (DVSwitch.ini)

5. Installa STFU

sudo apt install stfu -y

Installa il proxy STFU per BrandMeister DMR secondo la policy sysop Italia (si integra nella pipeline DVSwitch).

6. Modifica il file di configurazione STFU/DVSwitch

sudo nano /opt/MMDVM_Bridge/DVSwitch.ini

Apri il file e fra la sezione [YSF] e [ASL] inserisci quanto segue:

[STFU]
BMAddress = 2222.master.brandmeister.network ; Brandmeister ODMRT server address ITALIA
BMPort = 54006 ; Brandmeister ODMRT port
BMPassword = PASSWORD BM (da Selfcare)  ; Your Brandmeister password
Address = 127.0.0.1 ; Address to send AMBE TLV frames to (export)
txPort = 31100 ; Port to send AMBE TLV frames to (export)
rxPort = 31103 ; Port to listen on (import)
UserID = DMRID ; Your DMR ID
TalkerAlias = NOMINATIVO Nome ; Max 27 characters
StartTG = 222 ; Startup talk group (TG iniziale ,nell’esempio TG222)
LogLevel = 3 ; STFU log level (0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error)

Personalizzate solo con la vostra password BM, il dmrid ed il Talker Alias (Es. IU2DLC Pietro).

7. Crea il symlink per lanciare il menu DVSwitch facilmente

sudo ln -s /usr/local/dvs/dvs /usr/local/bin/dvs

Permette di lanciare il menu dvswitch (dvs) da qualsiasi path, comodo per le future configurazioni.

Procedete con la configurazione di DVSwitch lanciando dvs da qualsiasi directory. Inserite i semplici dati che richiede. Dovete scegliere nella configurazione anche la porta UDP che poi DOVRETE aprire sulla vostro router, firewall creando apposita regole di NAT/Port Forwarding.

Attenzione: è necessario che abbiate un IP pubblico , possibilmente statico o , se dinamico, mappato su dynamic dns. 

Non funziona con connessioni mobili e cioè connettendo il raspberry o VM via hotspot cellulare o similare. E’ una limitazione delle reti mobili.

Per questo motivo il mio consiglio è di usare , ad esempio, il raspberry connesso alla proprio rete domestica in fibra o adsl o usare una VPS qualsiasi a pagamento che offra IPV4 pubblico (io uso la taglia più piccola delle VPS Ionos).

Vi ricordo inoltre di selezionare come decoder/codec quello software (ultima opzione mostrata).

8. Aprite il file seguente

sudo nano /opt/MMDVM_Bridge/MMDVM_Bridge.ini

Nella sezione [DMR Network] mettete

Enable=0

Malgrado in altre guide non venga citato questo passaggio io l’ho trovato fondamentale per evitare errori al passaggio successivo

quando andrete ad abilitare STFU.

Più in generale nelle varie sezioni dei modi digitali Enable deve essere 0 per TUTTI i modi ivi compreso il DMR.

Non abbiamo installato i moduli MMDVM necessari quindi gli altri protocolli non funzionerebbero.

9. Stop MMDVM Bridge e abilitazione del servizio STFU all’avvio

Prima di avviarlo fermiamo il servizio mmdvm_bridge con

sudo systemctl stop mmdvm_bridge

e visto che non ci serve più possiamo disabilitarlo con :

sudo systemctl disable mmdvm_bridge

successivamente 

sudo systemctl enable stfu

Fa partire STFU automaticamente al boot della macchina.

10. Avvia manualmente STFU

sudo systemctl start stfu

Avvia subito il servizio STFU (utile anche per i primi test).

11. Controlla lo stato di STFU

sudo systemctl status stfu

Verifica che STFU sia in esecuzione e correttamente configurato.

Se non ci sono errori potrete vedere i log in tempo reale con il comando:

sudo tail -f /var/log/dvswitch/STFU.log

12. Modifica del file del servizio per riavvio automatico in caso di crash dello stesso.

Modifichiamo il funzionamento del servizio stfu in modo che in caso di problemi si auto riavvii SEMPRE (always).
Il file originale e la guida di BM indica on riavvio solo in caso di failure (Restart=on-failure) questo significa che 
in caso di Exit code 0 (uscita “pulita” dopo un SIGINT / reload) → systemd NON lo riavvia.
procediamo quindi con :
sudo nano /usr/lib/systemd/system/stfu.service
e inseriamo solo questo:

[Unit]
Description=STFU Service
After=netcheck.service
Requires=netcheck.service

[Service]
Type=simple
Restart=always
RestartSec=3
RestartPreventExitStatus=254
StandardOutput=null
WorkingDirectory=/opt/STFU
Environment=STFU_LOG=/var/log/dvswitch
ExecStartPre=/usr/bin/sh -c ‘echo “Starting STFU: [`date +%%T.%%3N`] ” >> /var/log/netcheck’
ExecStart=/opt/STFU/STFU /opt/MMDVM_Bridge/DVSwitch.ini
KillMode=process

[Install]
WantedBy=multi-user.target

Attenzione a causa del copia e incolla del codice sull’editor WP fate attenzione a:
  • Usare virgolette dritte

  • Percentuali SEMPRE doppie (%%) nei comandi systemd

Salviamo il file e successivamente:
sudo systemctl daemon-reload
sudo systemctl restart stfu

E’ tutto. Ecco  l’articolo ufficiale in merito a STFU pubblicato sul sito DMR Brescia

73, Pietro, IU2DLC

Shortlink: https://easyurl.it/dvsstfu

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.