Pagine

Direwolf, sperimentiamo un igate APRS con raspberry

Pubblicato il 17 sett. 2017
Ultima modifica 9 sett. 2018

Direwolf è un programma AX25 packet modem-tnc, APRS encoder/decoder, creato da WB2OSZ e scaricabile da https://www.github.com/wb2osz/direwolf

La realizzazione di un semplice igate APRS in ricezione necessita di una radio vhf sintonizzata sulla frequenza nazionale aprs 144.800, una chiavetta audio usb e un raspberry con installato raspbian, meglio se la versione due o tre. Sarà possibile impostare il sistema in dual rx, diciamo cosi, doppio igate, sintonizzando un secondo ricevitore sulla frequenza uhf 432.500 (poco diffusa in verità) collegando una seconda scheda audio usb per la sezione uhf.

Ho voluto scrivere questa guida come promemoria e per chi volesse sperimentare, in maniera semplice ed economica, un I-GATE aprs con poca spesa.

Cercherò di descrivere in dettaglio tutti i passaggi riguardanti l'installazione e la configurazione. Chiaramente chi ha avuto modo di usare linux sarà avvantaggiato, ma non sarà complicato anche per chi non lo conosce affatto.

Il programma include una serie di funzionalità come i-gate, digipeater, APRStt gateway e altro ancora. Qui mi limiterò a spiegare l'installazione, una configurazione minimale per la decodifica dei pacchetti aprs, l'attivazione di un i-gate, l'invio di un beacon via tcp/ip con le coordinate del simbolo in mappa aprs.fi e l'attivazione del PTT. Inutile dirlo, per la funzionalità I-GATE è necessaria una connessione internet.

Una volta configurato, direwolf sarà utilizzabile anche con Xsastir e UI-View32.

Questo il link al progetto Direwolf:
https://github.com/wb2osz/direwolf

Rimuoviamo pulseaudio, se presente, e facciamo un po di pulizia:
  • sudo apt-get remove --purge pulseaudio
  • sudo apt-get autoremove
  • rm -rf /home/pi/.pulse
  • sudo reboot
Installiamo il necessario per la compilazione e l'installazione. Alcuni pacchetti presenti nel comando successivo, anche se non necessari, potrebbero tornare utili nel caso vogliate installare svxlink. L'installazione non comporta alcun appesantimento significativo in termini di spazio occupato e processi attivi, ma avremo la certezza di non incappare in errori e dipendenze mancanti. Copiate e incollate sul terminale tutto il seguente blocco e date invio:
  • sudo apt-get install build-essential sigc++ gcc g++ make cmake libgcrypt-dev libgsm1-dev libsigc++-2.0-dev tcl-dev libspeex-dev libasound2-dev libpopt-dev libssl-dev libopus-dev groff tcl8.5-dev tk8.5-dev git
Impiegherà qualche minuto, al termine riavviate:
  • sudo shutdown -r now
Questo il link alla guida ufficiale riguardante l'installazione su raspberry: https://github.com/wb2osz/direwolf/blob/master/doc/Raspberry-Pi-APRS.pdf

Installiamo direwolf:
  • sudo apt-get install libasound2-dev
  • cd
  • git clone https://www.github.com/wb2osz/direwolf
  • cd direwolf
A questo punto possiamo decidere quale versione installare, se l'ultima stabile, una precedente, oppure ancora una di sviluppo per testarne le nuove funzionalità. Consiglio di installare la versione stabile più recente. Con il comando successivo visualizzerete tutte le versioni disponibili:
  • git tag
Queste le versioni disponibili a settembre 2017:

1.0
1.1
1.2
1.3
1.3-beta
1.3-dev-F
1.3-dev-I
1.3-dev-K
1.4
1.4-beta
1.4-dev-D
1.4-dev-E

Nella pagina del progetto: https://github.com/wb2osz/direwolf troverete ogni genere di informazione. Le guide si trovano nella cartella doc.

Installiamo l'ultima versione stabile, la 1.4 a Giugno 2017.
  • git checkout 1.4
  • make

    Impiegherà qualche minuto... al termine verrà suggerito, a terminale, il comando successivo, eseguiamo:
  • sudo make install
Fatto! Concludiamo l'installazione con il comando:
  • make install-conf 
Se tutto è andato a buon fine possiamo effettuare una prima configurazione minimale, ci consentirà di vedere i pacchetti aprs ricevuti.

Torniamo nella nostra home digitando cd e invio.

Facciamo subito una copia del file di configurazione, utile riferimento in caso di errori accidentali nella modifica dello stesso.
  • cp direwolf.conf direwolf.conf.old
Dando il comando ls -l vedrete una lista di file e cartelle. I nostri file sono direwolf.conf e direwolf.conf.old. Come già detto, in caso di errore nella configurazione del file direwolf.conf, fate sempre riferimento alla copia dell'originale, direwolf.conf.old, facendo però attenzione a non modificarlo.

Editiamo il file con l'editor nano:
  • nano direwolf.conf
Scorrendo il file con le frecce, il primo valore da impostare è la scheda audio. Togliamo il cancelletto iniziale alla riga successiva:

ADEVICE  plughw:1,0


Uno spaccato della sezione interessata:
------------------------------------------------------------------------------------
# ADEVICE  plughw:1,0

# Starting with version 1.0, you can also use "-" or "stdin" to
# pipe stdout from some other application such as a software defined
# radio.  You can also specify "UDP:" and an optional port for input.
# Something different must be specified for output.

ADEVICE - plughw:1,0
# ADEVICE UDP:7355 default



#
# Number of audio channels for this souncard:  1 or 2.
#

ACHANNELS 1
#ACHANNELS 2
------------------------------------------------------------------------------------

Il primo numero dopo i due punti, identifica l'indirizzo numerico assegnato dal sistema alla scheda audio usb. Verificatelo digitando sul terminale alsamixer e successivamente il tasto F6. Di solito alla prima scheda audio usb viene assegnato il numero 1, ma alcuni sistemi la posizionano a zero o numeri superiori. Impostate quello corretto. Dopo la virgola va bene lo zero.

Scorriamo ancora il file direwolf.conf. Alla sezione MYCALL sostituite NOCALL con il vostro nominativo in maiuscolo. Questo sarà il nominativo visualizzato in mappa aprs.fi.

MYCALL VOSTRONOMINATIVO



Impostazione PTT

Attenzione, i pin GPIO del raspberry sono collegati direttamente al processore, senza protezione alcuna. Con ritorni rf, su uno qualsiasi di questi pin, o tensioni superiori a 3,3 volt si rischia di renderlo inutilizzabile! Usate un fotoaccoppiatore, sempre!

Per abilitare il pin GPIO25 basta togliere il cancelletto dalla riga interessata:

PTT GPIO 25

Utile nel caso vogliate abilitare la funzionalità digi, oppure per rendere disponibile il ptt in modalità pseudo terminal, agw kiss e utilizzare cosi Direwolf anche in tx da remoto con altri software.

A questo punto basterà avviare il programma digitando direwolf. Sul terminale vedrete i servizi attivati e i pacchetti decodificati man mano che vengono ricevuti. Per fermarlo ctrl+c.

Se avete difficoltà a leggere le righe per via dello sfondo chiaro, predefinito, avviate direwolf con l'opzione -t 0

direwolf -t 0

Visualizzerete le righe molto meglio, ma ogni colore e simbolo ha un significato preciso. Per maggiori info consultate la guida.

Il led della scheda audio comincerà a lampeggiare, segno di un corretto funzionamento.

Per visualizzare tutte le opzioni disponibili digitate man direwolf, nella shell, q per uscire.

Se usate la versione 3B del raspberry, connettetelo esclusivamente via lan. Non usate la connessione wifi integrata e non lasciatela attiva, pena il blocco dell'intero sistema. Il blocco è casuale in termini temporali e si presenta sempre entro la prima ora di funzionamento. Testato solo con raspbian jessie.

Nel caso di utilizzo anche in TX, il blocco porterà lo stato del GPIO25 a +3,3V, molto rischioso per radio non adeguatamente raffreddate e il conseguente disturbo del canale aprs con portante fissa. Prevedete sempre un timer fra GPIO25 e il circuito del ptt per la radio. In alternativa, se presente, potete attivate la funzione taglia lingua a pochi secondi nel menù della radio.

Una semplice soluzione di temporizzatore la trovate al link sopra, sul sito del progetto, nella guida di installazione su raspberry. Verso la fine del documento vedrete lo schema di un semplice temporizzatore realizzato con un ne555 e pochi altri componenti.

Per disabilitare la scheda wifi all'avvio editate il file rc.local con:

sudo nano /etc/rc.local

e inserite le due righe seguenti prima di exit 0:

sleep 2
ifconfig wlan0 down

In quest'ordine:

---------------------------------------------------------------------

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

sleep 2
ifconfig wlan0 down

exit 0
---------------------------------------------------------------------

ctrl+o per salvare ctrl+x per uscire dall'editor.


Attiviamo l'I-Gate e configuriamo il beacon con l'icona visibile in mappa aprs.fi

Scorriamo il file fino alla sezione Internet Gateway. Togliamo il cancelletto alla riga IGSERVER e modificamola cosi:

IGSERVER euro.aprs2.net

Ottenete adesso il vostro id associato al nominativo inserendolo a questo link:

http://apps.magicbug.co.uk/passcode/

Segnate l'id ottenuto.
Scorrete ancora il file direwolf.conf verso il basso e togliete il commento a questa riga:

IGLOGIN WB2OSZ-5 12345..

Sostituite WB2OSZ-5 con il vostro nominativo e 12345.. con il vostro id.

Passiamo adesso al nome visualizzato in mappa.
Fatevi un'idea chiara su come impostare correttamente il vostro ssid leggendo la pagina al seguente link:

http://www.aprs.org/aprs11/SSIDs.txt

Cerchiamo di fare le cose per bene; in mappa aprs si trovano spesso ssid strampalati e note, commenti, poco esplicativi.

I beacon verranno inviati in mappa con il nominativo impostato nella sezione iniziale del file, MYCALL NOACALL. Pertanto se utilizzate il vostro nominativo di stazione, o sezione, inserite -10 per l'i-gate.

Settiamo il beacon

Fate riferimento alla guida ufficiale per conoscere in dettaglio le tante opzioni disponibili per questa sezione. Qui mi limiterò a far comparire l'icona igate, solo rx.

Sempre nella sezione riguardante l'I-GATE, copiate e incollate la seguente riga sotto IGLOGIN WB2OSZ-5 12345...

PBEACON sendto=IG delay=0:40 every=20 symbol=R& alt=40 lat=41.0203N long=011.2839E comment="IGate solo RX"

Sostituite i valori di lat e long nel precedente esempio con i vostri corretti.

Per ricavare le coordinate esatte usate questa mappa:

https://www.sunearthtools.com/dp/tools/conversion.php?lang=it

Usate la riga corretta corrispondente al formato nell'esempio sopra.


Andiamo adesso a vedere in dettaglio le voci di questa sezione:


PBEACON Personal beacon.

sendto specifica dove inviare il beacon, in questo caso IG, internet gateway, via tcp/ip.

delay setta il ritardo di invio del primo beacon dopo l'attivazione del programma. Nell'esempio è settato a 40 secondi. Va bene cosi.

every setta l'intervallo di invio del beacon. Nell'esempio l'ho impostato a venti minuti. Per conoscenza, la pagina web aprs.fi, su browser, visualizza i punti mappa per un'ora dall'ultimo aggiornamento, altri software visualizzano gli ultimi trenta minuti. Ritengo inutile una riduzione di questo intervallo, servirebbe solo a generare inutile traffico dati. Venti minuti vanno più che bene.

symbol specifica l'icona visualizzata. In questo caso & visualizza un quadratino nero ed R la lettera bianca al suo interno. RX solo IGATE. Questo è il simbolo corretto per un I-Gate, solo rx

Qui trovate l'elenco aggiornato con tutti i simboli:
http://www.aprs.org/symbols/symbols-new.txt

alt specifica l'altitudine in metri.

lat e long specificano la posizione.

Il testo scritto in comment verrà visualizzato in verde nella bandierina delle info in mappa aprs.fi. Potete scrivere per esempio una e-mail di riferimento, sempre utile e spesso assente, successivamente RX solo IGATE.

Attiviamo direwolf all'avvio del raspberry.

Per attivare direwolf all'avvio provate le seguenti soluzioni:
  1. Aggiungete in fondo al file /etc/rc.local il comando per avviarlo, prima di exit 0.

    Editiamo il file:

    • sudo nano /etc/rc.local

    Aggiungiamo in fondo, prima di exit 0:

    • sleep 2
    • /usr/local/bin/direwolf -t 0 -c /home/pi/direwolf.conf > /dev/null 2>&1
     
  2. Fatto! Non è necessario configurare altro se non avete la necessità di memorizzare il traffico. Se volete invece creare un file di log con tutti i beacon ricevuti, dovrete sostituire il precedente comando con il seguente e continuare a leggere i passi successivi:
  3. usr/local/bin/direwolf -t 0 -c /home/pi/direwolf.conf >> /home/pi/logdirewolf &
     
  4. Come detto prima, cosi facendo verrà creato il file logdirewolf e verranno scritti al suo interno tutti i beacon ricevuti. Necessariamente bisogna fare in modo che vengano cancellati periodicamente seguendo la logica di logrotate, altrimenti la memoria dalla sd del raspberry verrà completamente saturata.
     
  5. Creiamo adesso il file di log nella home.

    Per essere sicuri di creare il file nella home pi, digitate cd e date invio. Il file verrà creato con il seguente comando:

    touch logdirewolf

  6. Come detto prima, il prossimo passaggio è fondamentale per ruotare e successivamente eliminare i file di log più vecchi. Con questo sistema i file di log vengono giornalmente ruotati fino ad un massimo di quattro per poi essere definitivamente cancellati. In quest'ordine; logdirewolf, logdirewolf.1 logdirewolf.2 e cosi via. Cosi facendo, come detto prima, tutto il traffico ricevuto verrà scritto nel file logdirewolf.

    Creiamo il file che si occuperà della rotazione:

    sudo nano /etc/logrotate.d/logdw

    Copiamo al suo interno le seguenti righe rispettando i ritorni a capo e la posizione delle parentesi graffe, potete fare copia incolla, se state usando il terminale, potete incollarlo tenendo premuto contemporaneamente Ctrl+Maiuscolo e v:

    /home/pi/logdirewolf {
        daily
        rotate 4
        missingok
        copytruncate
        notifempty
        create 0644 pi pi
    }


    Cosi facendo, se il vostro raspberry sarà acceso alle 6:45 di ogni mattino, il file di log verrà ruotato da logdirewolf a logdirewolf.1 e cosi via fino a quattro per poi essere cancellato.
Bene, per visualizzare il file di log, logdirewolf, mentre viene scritto dal programma date questo comando:

tail -f -n 100 /home/pi/logdirewolf


Altra soluzione se non volete creare un file di log all'avvio del programma.

Procedete cosi.

Create un file, start-dw nella vostra home pi con questi comandi:

cd per tornare nella home.

nano start-dw per creare il file.

Copiate le seguenti righe al suo interno:

#! /bin/bash
/usr/local/bin/direwolf -c /home/pi/direwolf.conf > /dev/null 2>&1 &

ctrl+o per salvare ctrl+x per uscire dall'editor.

Rendiamo eseguibile il file con:
chmod +x start-dw

Adesso editiamo il file rc.local con sudo nano /etc/rc.local e inseriamo prima di exit 0 queste righe:

sleep 2
/home/pi/start-dw &

Fatto! Se avete seguito tutti i passaggi alla lettera, ed io non ho commesso errori nel descriverli, il vostro igate dovrebbe attivarsi all'avvio del sistema. Verificate se il led della scheda audio usb lampeggia e successivamente verificate il punto mappa su aprs.fi.

Alcune considerazioni riguardo i livelli audio, l'interfacciamento con la scheda audio usb e il mixer alsamixer.

Non connettete l'uscita audio della radio, altoparlante o auricolare che sia, direttamente all'ingresso mic della scheda audio usb. Interponete in serie al polo caldo una resistenza di alcune decine di Kohm e un condensatore da 100 nano. 33Kohm dovrebbe già andar bene, eventualmente aumentate o diminuite il valore empiricamente, ma di solito, per ottenere un giusto livello, vengono raggiunti e superati i 100K. Aggiungere un trimmer non guasterebbe.

Fate la stessa cosa per l'uscita audio usb verso l'ingresso mic della radio. In questo caso bastano un paio di kohm e sempre un condensatore da 100 nano. A dire il vero, per fare le cose per bene, l'interfacciamento corretto prevede l'isolamento galvanico tra radio e scheda audio usb con l'uso di trasformatori audio 1:1 600 ohm.

Stessa cosa per il ptt, dovreste usare, per sicurezza, un fotoaccoppiatore. In giro per il web si trovano tante interfacce per modi digitali ed esempi, più o meno semplici per una soluzione ottimale.

Non esagerate con il livello del volume della radio e lasciate lo squelch aperto. Alcune radio, in particolare le cinesi, sono un po lente nella commutazione squelch e per questo potreste non ricevere correttamente i pacchetti iniziali del beacon.

Regolate i livelli audio da shell di gitando alsamixer sul terminale.

Successivamente F6, visualizzerete tutte le schede audio presenti.
Di solito sono due, quella integrata nel raspberry, solo audio out, e la chiavetta audio usb.

Spostatevi con le frecce sulla scheda audio usb e date invio.

Successivamente F5 per visualizzare tutti i cursori.

L'ingresso microfono viene regolato dal cursore Capture e non mic.

Lasciatelo a zero e "giocate" sul volume della radio.

questo livello va incrementato solo in presenza di segnali bassi, preamplificati (uscita 1200-9600 baud ecc.).

L'uscita volume audio altoparlante o cuffia della radio regolatela sempre partendo dal minimo, aumentando poco alla volta finché non vedrete comparire i pacchetti nella shell man mano che vengono ricevuti. Esc per uscire da alsamixer.

Buon divertimento.


I seguenti comandi installano il protocollo AX25 utile a collegare in pseudoterminal direwolf avviato con l'opzione -p, KISS mode:

sudo apt-get install ax25-apps

sudo apt-get install ax25-tools

sudo apt-get install libax25

sudo apt-get install libax25-dev

Mi riprometto di scrivere una breve guida sul protocollo ax25, direwolf e kissattach.


2 commenti:

Anonimo ha detto...

pensi che si potrebbe fare un igate vhf/uhf la radio che userei per ricevere il segnale è bi banda, funzionerebbero due programmi contemporaneamente settati rispettivamente per 1200 e 9600 bd ?
ciao , Filippo
it9ign@gmail.com

Biagio La Fauci IT9FDP ha detto...

Ciao Filippo, scusa il ritardo, ma ultimamente causa impegni ho avuto poco tempo da dedicare a questo passatempo.

Non ho mai provato una configurazione doppia, ma leggendo il file direwolf.conf credo sia possibile. Nel file di configurazione sono previste più schede audio ed eventualmente più canali sulla stessa periferica. Stessa cosa nelle varie sezioni da abilitare, igate e digi, è possibile settare la scheda interessata.

Nel caso volessi attivare un doppio igate, dovresti prevedere o una scheda audio con due ingressi microfono, o line, oppure due schede mono. Le ultime si trovano a pochi euro su internet o negozi cinesi.

Invece per la parte radio dovresti usarne due, a meno che il bi banda in questione non abbia un'uscita audio distinta per le Vhf e una per le Uhf. Una volta sistemato correttamente il file di configurazione, basta avviare una sola istanza del programma.

La velocità a 9600 la ottieni settando il parametro MODEM a 9600 in direwolf.conf, ma sei costretto ad utilizzare radio con ingresso diretto al modulatore e uscita 9600 dal discriminatore. Le radio con solo ingresso mic e uscita altoparlante non vanno bene.

Appena posso faccio una prova "volante" connettendo semplicemente due schede audio economiche al raspberry e lo avvio, anche senza radio, con le configurazioni accennate sopra, per verificarne la funzionalità. Se si attiva correttamente, vedrò di inserire una spiegazione dettagliata di tutte le voci interessate in questo stesso articolo. 73 cordiali.