INSTALLAZIONE DI SVXLINK V. 19.09.2 SU RASPBERRY PI 4B+ E SISTEMA RASPBERRY PI OS – 22/08/2021
Prima di procedere con l’installazione collegare tutto l’hardware necessario al raspberry.
Aggiornare il sistema operativo all’ultima versione disponibile ed infine riavviare il sistema:
- sudo apt-get update
- sudo apt-get upgrade
- sudo reboot now
Per tutti i pigroni che non hanno voglia di dare i comandi manualmente, ho creato un file bash da scaricare qui che farà in automatico tutta la procedura fino alla sezione 2. Importante, una volta scaricato lo script, dategli i massimi privilegi con il comando sudo chmod a+rwx script.sh e poi fatelo partire con sudo bash script.sh dalla cartella home.
Installazione di tutti i pacchetti necessari (alcuni potrebbero già essere presenti mentre altri potrebbero venire sostituiti con versioni più aggiornate):
- sudo apt-get install sigc++
- sudo apt-get install cmake
- sudo apt-get install tk-dev
- sudo apt-get install tk8.5-dev
- sudo apt-get install libgsm1-dev
- sudo apt-get install libpopt-dev
- sudo apt-get install libopus-dev
- sudo apt-get install libgcrypt20-dev
- sudo apt-get install libspeex-dev
- sudo apt-get install libasound2-dev
- sudo apt-get install librtlsdr-dev
- sudo apt-get install rtl-sdr
- sudo apt-get install libssl-dev
- sudo apt-get install groff
- sudo apt-get install libcurl4-openssl-dev
- sudo apt-get install libjsoncpp-dev
- sudo apt-get install vorbis-tools
Aggiungere al sistema l’utente “svxlink” altrimenti la compilazione va in errore perché non riesce a scrivere alcune librerie:
- sudo adduser svxlink
- sudo adduser svxlink gpio
- sudo adduser svxlink audio
- sudo adduser svxlink dialout
- sudo adduser svxlink plugdev
- sudo adduser svxlink daemon
Download dell’ultima versione di SVXLINK (nell’esempio la 19.09.2 quella disponibile alla data della presente documentazione)
Spostarsi nella propria home directory e scaricarlo:
- cd
- sudo wget https://github.com/sm0svx/svxlink/archive/refs/tags/19.09.2.tar.gz
Procedere con l’estrazione dei files dall’archivio scaricato:
- sudo tar xvfz 19.09.2.tar.gz
Spostarsi nella cartella del programma:
- cd svxlink-19.09.2
Spostarsi nella cartella dei sorgenti:
- cd src
All’interno della cartella dei sorgenti creare la cartella “build” e spostarsi al suo interno:
- sudo mkdir build && cd build
Dare il comando per la creazione del makefile:
- sudo cmake -DUSE_QT=OFF ..
Mi raccomando lo spazio e i due punti dopo il comando sono importanti perché indicano che deve fare il makefile dalla cartella inferiore.
Terminato il processo della creazione del makefile senza errori procedete con la compilazione:
- sudo make
- sudo make doc
- sudo make install
- sudo ldconfig
se tutto fila liscio e sono presenti tutte le librerie necessarie il processo partirà e durerà un po’. A questo punto l’installazione di svxlink può dirsi terminata.
Svxlinx ha bisogno del pacchetto di clips vocali. Torniamo nella nostra home e lo scarichiamo:
- cd
- sudo wget https://github.com/sm0svx/svxlink-sounds-en_US-heather/releases/download/19.09/svxlink-sounds-en_US-heather-16k-19.09.tar.bz2
Procediamo con l’estrazione dei files dall’archivio scaricato:
- sudo tar jvfx svxlink-sounds-en_US-heather-16k-19.09.tar.bz2
A questo punto va creata la directory dove svxlink va a cercare i clips vocali:
- sudo mkdir -p /usr/local/share/svxlink/sounds/en_US
Entriamo poi nella cartella dove abbiamo estratto i files e li copiamo nella cartella appena creata:
- cd en_US-heather-16k
- sudo cp -r * /usr/local/share/svxlink/sounds/en_US
Anche l’installazione dei clips vocali è terminata.
Sezione 2
Il passo successivo consiste nel configurare i seguenti files:
- /usr/local/etc/svxlink/svxlink.d/ModuleEchoLink.conf
- /usr/local/etc/svxlink/svxlink.conf
Qui la guida completa del file ModuleEchoLink.conf
Qui la guida completa del file svxlink.conf
Editiamo il file ModuleEchoLink.conf (Comando sudo nano)
eseguire le modifiche indicate alle voci seguenti:
- #ALLOW_IP=192.168.1.0/24
rimuovere il # iniziale
- CALLSIGN=yourcallsign-L
Inserire il nominativo col suffisso L o R a seconda che sia nodo o ripetitore
- PASSWORD=your_password
Inserire la password per il collegamento a echolink
- SYSOPNAME=name
Inserire il vostro nome che comparirà nella lista echolink
- LOCATION= [SvxRpi] luogo frequenza
Inserire la città e la frequenza radio
Personalizzare l’ultima voce “DESCRIPTION” con i dati del vostro sistema.
Editiamo il file svxlink.conf
eseguire le modifiche indicate alle voci seguenti:
[SimplexLogic]
- MODULES=ModuleEcholink
A noi interessa solo avere il modulo echolink quindi rimuovete il resto dei moduli
- CALLSIGN=yourcallsign locator
Inserire il proprio nominativo e il locator
[Rx1]
- AUDIO_DEV=alsa:plughw:1
inserire il numero corrispondente alla scheda audio usb in uso
- SQL_DET=VOX
selezioniamo il sistema vox. Commentare tutte le righe con “SERIAL”
[Tx1]
- AUDIO_DEV=alsa:plughw:1
inserire lo stesso valore usato per la sezione [Rx1]
- PTT_TYPE=GPIO
- PTT_PIN=gpio17
Se non lo fossero, commentare con # tutte le righe per il settaggio del PTT su RS232.
UTILIZZO GPIO PER IL PTT
Per poter utilizzare un pin GPIO per il comando del PTT il GPIO prescelto va prima esportato in sys/class. Per fare ciò dare il seguente comando:
- sudo nano /etc/rc.local
ed aggiungere le seguenti righe prima di “exit 0”:
- echo 17 > /sys/class/gpio/export
- echo “out” > /sys/class/gpio/gpio17/direction
- echo 0 > /sys/class/gpio/gpio17/value
- echo 18 > /sys/class/gpio/export
- echo “in” > /sys/class/gpio/gpio18/direction
(Nell’operazione di copia e incolla fare attenzione che le virgolette siano quelle tecniche (Shift+2) e non quelle grafiche)
Per i primi test fate partire svxlink da terminale col comando:
- sudo svxlink
in questo modo svxlink invierà l’output allo schermo e potremo vedere a video il corretto funzionamento o eventuali errori da correggere. Quando tutto sarà testato ed operativo svxlink andrà fatto partire come “demone” col comando:
- sudo svxlink –daemon
in questo modo funzionerà in background. Sarà anche opportuno, se utilizzato come sistema sempre online, inserire la voce nel file init.d e configurarlo per il lancio automatico all’avvio del sistema. Un’altra cosa da fare nei primi test sarà la configurazione dei livelli audio e mic della scheda audio, va fatto col pannello di configurazione alsamixer che si richiama col comando:
- sudo alsamixer
Nella schermata di alsamixer selezionare la scheda audio con F6, poi attivare tutti i volumi con F5 ed infine regolare i volumi:
- Headphone: da echolink (PC) a radio
- Mic: non utilizzato (mettere in mute e a zero)
- Mic Capture: da radio a echolink (PC)
- Auto Gain: attivato
Se si vuole far partire il server svxlink ad un determinato orario si può usare questo comando:
- crontab -e
inserendo i due comandi per lo start e lo stop del server:
- sudo svxlink –daemon
- sudo killall svxlink
SvxLink, se non modificato, genera dei “bip” quando ci sono interruzioni sui pacchetti dati. Se volete eliminare questi “bip” occorre modificare il file: EchoLink.tcl che si trova in /usr/local/share/svxlink/events.d/ quindi:
- sudo nano /usr/local/share/svxlink/events.d/EchoLink.tcl
Cercate:
proc is_receiving {rx} {
if {$rx == 0} {
playTone 1000 100 100;
}
}
Modificate così:
proc is_receiving {rx} {
if {$rx == 0} {
# playTone 1000 100 100;
}
}
Inoltre cercate:
proc squelch_open {is_open} {
if {!$is_open} {
playSilence 200
playTone 1000 100 100
}
}
Modificate così:
proc squelch_open {is_open} {
if {!$is_open} {
playSilence 200
# playTone 1000 100 100
}
}
Verificare la configurazione di rete: editiamo il file dhcpcd.conf
- sudo nano /etc/dhcpcd.conf
Aggiungere alla fine le seguenti righe e commentare altre eventualmente simili
- interface eth0
- static ip_address=192.168.1.31/24 # proprio indirizzo IP
- static routers=192.168.1.254 # proprio gateway
- static domain_name_servers=8.8.8.8 # proprio DNS
- noipv6
- interface wlan0
- static ip_address=192.168.1.32/24 # proprio indirizzo IP
- static routers=192.168.1.254 # proprio gateway
- static domain_name_servers=8.8.8.8 # proprio DNS
- noipv6
Editare o creare il file wpa_supplicant:
- sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Il file deve apparire come sotto, dove ssid è quello della rete wifi in uso e psk è la password WPA della rete wifi:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=IT
network={
ssid=”CUCCIOLO”
psk=”**********”
}
Creazione di una partizione temporanea su RAM per salvare il file di log senza scrivere sulla sd. Questa operazione ci permette di far durare più a lungo nel tempo la nostra sd, ma ovviamente ad ogni riavvio del sistema la partizione si cancella e il log si perde.
Digitare i seguenti comandi:
- mkdir /tmp/log
- sudo cp -p /etc/fstab /etc/fstab.save
- sudo nano /etc/fstab
Aggiungere la seguente linea:
- tmpfs /tmp/log tmpfs nodev,nosuid,size=20M 0 0
Salvare e poi concludere col seguente comando:
- sudo mount /tmp/log
Per verificare usare il seguente comando:
- df -h
Creazione file bash per l’avvio di svxlink
- sudo nano /home/pi/ssvv
Aggiungere queste righe:
- #!/bin/bash
- sudo svxlink –daemon –logfile=/tmp/log/svxlink.log
Creazione file bash per l’avvio del log
- sudo nano /home/pi/log
Aggiungere queste righe:
- #!/bin/bash
- tail -f /tmp/log/svxlink.log
Creazione file bash per fermare svxlink
- sudo nano /home/pi/stop
Aggiungere queste righe:
- #!/bin/bash
- sudo killall svxlink
Diamo i permessi ai files appena creati
- sudo chmod a+rwx ssvv
- sudo chmod a+rwx log
- sudo chmod a+rwx stop
APPENDICE A
Se per vostre esigenze avete bisogno di cambiare alcuni file audio come per esempio il file greeting.wav che è la sintesi ascoltata da chiunque si connetta tramite echolink, bisogna seguire una certa procedura:
- Dare comando: sudo apt-get install sox
- Creare il vostro file audio di tipo .WAV con un formato 16 bit PCM, una frequenza 16000 Hz, mono
- Copiare il file nella cartella /usr/local/share/svxlink/sounds/en_US/EchoLink
- Spostarsi in questa cartella
- Fare un backup del file da sostituire
- Dare comando: sudo sox origine.wav -r 16000 -e signed-integer -b 16 -L destinazione.wav
- (Ovviamente origine.wav è il vostro file mentre destinazione.wav è il nome del file da sostituire che deve mantenere il suo nome originale, altrimenti svxlink non lo trova e restituisce un errore)
- Il gioco è fatto
APPENDICE B
Impostare l’ordine delle schede audio
La scheda audio predefinita è la prima nell’elenco rilevato da ALSA. Questo elenco però potrebbe cambiare a ogni reboot (ad esempio se abbiamo delle schede audio USB che vanno e vengono), e questo può dare problemi sia per avere dei riferimenti certi delle schede, sia per sapere qual è la scheda predefinita. Considerando che alcuni programmi usano sempre la stessa, spesso cambiarla è una rottura, è importante specificare un ordine.
Per prima cosa dobbiamo capire quali sono i moduli del kernel legati alle nostre schede, con questo comando:
- lsmod | grep “^snd_” | column -t
Il risultato nel mio caso è:
snd_hda_codec_hdmi 23704 1 snd_hda_codec_realtek 59331 1 snd_usb_audio 100181 2 snd_usbmidi_lib 18744 1 snd_usb_audio snd_rawmidi 18479 1 snd_usbmidi_lib snd_seq_device 5300 1 snd_rawmidi snd_hda_intel 25700 2 snd_hda_codec 97464 3 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_intel snd_hwdep 6300 2 snd_usb_audio,snd_hda_codec snd_pcm 74926 4 snd_usb_audio,snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel snd_page_alloc 7217 2 snd_pcm,snd_hda_intel snd_timer 18966 1 snd_pcm
I moduli effettivi in genere sono quelli che non hanno moduli collegati a destra, e che non hanno la parola “codec” nel nome. Nel mio caso: snd_usb_audio e snd_hda_intel.
A questo punto creiamo un file con sudo nano /etc/modprobe.d/alsa.conf così fatto:
options snd slots=snd_hda_intel,snd_usb_audio options snd_hda_intel index=0 options snd_usb_audio index=1
Questo specifica che la scheda intel è sempre al primo posto, e poi segue l’usb.
Riavviamo e siamo a posto.
Per verificare l’assegnazione delle schede:
- aplay -l
APPENDICE C
Recuperare la password di accesso al Raspberry
Se vi siete dimenticati la password di accesso al vostro raspberry dovete seguire questi passaggi:
- Spegnere il raspberry, estrarre la micro sd card e collegarla ad un computer
- Cercare il file cmdline.txt
- Editare il file e aggiungere alla fine il comando init=/bin/sh
- Salvare il file ed espellere la micro sd card e reinserirla nel raspberry
- Collegare il raspberry ad un monitor e una tastiera e accenderlo
- Finito il bootstrap dare i comandi:
- mount -o remount, rw /
- passwd pi (inserire l’utente)
- (inserire la nuova password)
- (reinserire la nuova password)
- sync
- exec /sbin/init
- Fare lo shutdown, togliere la micro sd e reinserirla sul pc
- Editare di nuovo il file cmdline.txt e cancellare il comando aggiunto in precedenza
- Salvare il file ed espellere la micro sd card e reinserirla nel raspberry
- Riavviare il raspberry nuovamente digitando la nuova password alla richiesta.
Ringrazio tantissimo l’amico Vittorio EA3GAP per l’insegnamento di tutto ciò che so sul server svxlink e non posso non menzionare il mio grande maestro di sempre Bruno I0YCB.
73 da Fabio IZ0WLH