Notificação de novas mensagens na sua BBS

(versão beta)
Só recentemente e a meu pedido o John Wiseman, G8BPQ, introduziu a notificação de mensagens pessoais por APRS.

Com este artigo pretendo ir mais longe…
Quem tinha um TNC2 recorda-se com certeza que, quando recebia novas mensagens na pBBS, no painel frontal piscava um led amarelo, que se apagava quando estas eram lidas.
Essa funcionalidade, fácil de ser implementada num raspberry pi perdeu-se! Talvez por questões de compatibilidade com a versão do BPQ para Microsoft Windows já não é possível…

Se quem como eu substituiu o velhinho TNC2 por um computador ou Rpi sente a falta desta funcionalidade.
Este projecto pretende resolver esta questão e abrir a ideia a outras possíveis aplicações como as que recentemente criei,

  • envio de dados meteo por APRS a partir do projecto Open Weather
  • notificações em APRS de AOS de satélites de APRS/AX.25

Neste projecto, os scripts precisam de se ligar ao linbpq e verificar se existem novas mensagens para o seu indicativo, por telnet. Por isso é necessário instalar o software “expect” para linux. Faça,

sudo apt-get install expect

Depois na directoria onde está instalado o linbpq crie o seguinte ficheiro,

$ cd /usr/local/bin/linbpq
$ nano lmBBS.sh
(copie e cole as ligas a seguir)

#!/usr/bin/expect -f

spawn telnet [YOUR NODE ADDRESS] 8010
expect "callsign:"
send "[CALLSIGN]\r";
expect "password:"
send "[PASSWORD]\r";

# Wait for a prompt. Adjust as needed to match the expected prompt.
expect "Press ? For list of commands\r"
send "BBS\r";
sleep .1;
send "LM\r";
sleep 1;
send "B\r";

interact

Substitua o [CALLSIGN], [PASSWORD] e [YOUR NODE ADDRESS] pela sua conta de login no linbpq, sem os parêntesis rectos “[ ]”.

Dê permissões de execução ao script,

$ chmod 755 lmBBS.sh

Se tudo funcionar como planeei execute o script fazendo ./lmBBS.sh e observe a ser feita automaticamente a ligação ao seu node por telnet, a entrada na BBS, a leitura de novas mensagens e, a seguir o fecho da ligação.

Agora vamos criar o script que irá receber e tratar os dados provenientes desta interação com o BPQ.
Para a notificação por e-mail vai ter de instalar e configurar o exim4.

Crie um novo script, supondo que se encontra na directoria de instalação do linbpq e corrija os caminhos e variáveis de acordo com a sua instalação.

Ligue-se à sua BBS pelo seu browser favorito. No menu da consola web, clique em “WebMail” e em seguida “Mine”. Retire do endereço URL a variável key. Copie e cole no código abaixo este valor.

http://node.oitaven.pt:9123/WebMail/WMMine?WB09K2721
$ nano bbsnewmsg.sh
(copie e cole as ligas a seguir)

#!/bin/bash

# set variables
nl='
'
# GPIO pin
pin=17
# validation key
key="WB09K2721"
# new messages read command
lmBBS="/usr/local/bin/linbpq/lmBBS.sh"

# filter to identify new unread messages
IFS=$'\n'
var=($($lmBBS | grep " PN " | awk '{ print $0 }'))
#echo "${var}"
msg="${#var[@]}"
echo "Tem $msg mensagens por ler..."

function join { local IFS=$'\n'; shift; echo "$*"; }
body=$(join , ${var[@]})
echo "$nl$body"

unset IFS

# if new messages, send e-mail alert - optional
if [ $msg -gt 0 ]; then
   # on pi-star certain directories are created on virtual disks, for example /var/log, so it is necessary to manually create the exim4 log file
   if ! [[ -f "/var/log/exim4/mainlog" ]]
   then
      sudo mkdir /var/log/exim4/
      sudo touch /var/log/exim4/mainlog
      sudo chown -R Debian-exim. /var/log/exim4/ 
   fi
   echo "Read your messages at http://node.oitaven.pt:9123/WebMail/WMMine?$key$nl$nl$body" | mail -s "You have $msg new messages in packet mailbox" callsign@domain.com
fi
# end e-mail alert

# led turn on in case of have mensages
if [ $msg -ne 0 ]; then
   # turn led on with Rpi GPIO
   #gpio -g mode $pin out
   #gpio -g write $pin 1

   # if blink is running don't call it again
   process=$(pgrep blink.sh)
   if ! [ "${#process}" -gt 0 ] ; then
      /linbpq/blink.sh &
   fi
else
   sudo pkill --signal 1 --exact blink.sh
   # reset $pin and put it in read mode
   gpio -g write $pin 0
   gpio -g mode $pin in
fi
# end led alert

Substitua o seu endereço de e-mail e o seu endereço URL do linbpq onde acede por webmail.

Ligue o Led ao GPIO, em série com uma resistência de valor entre 100 ohm e 330 ohm, ao raspberry pi, entre um dos pinos GND e o GP17,

Crie o script que irá piscar o led, fazendo,

$ nano blink.sh
#!/bin/bash

pin=17
gpio -g mode $pin out

while :
do
   gpio -g write $pin 1
   sleep 1
   gpio -g write $pin 0
   sleep 1
done

Dê permissões de execução a ambos os scripts,

$ chmod 755 bbsnewmsg.sh
$ chmod 755 blink.sh

E, a partir de agora é este o ficheiro que passa a chamar para verificar se tem novas mensagens ./bbsnewmsg.sh

Ao correr o script, este faz a chamada ao script de ligação por telnet e leitura da lista de novas mensagens, se as houver, envia um e-mail de notificação e acende um led ligado à porta 17 do GPIO.

Para correr o script automaticamente de 6 em 6 horas, adicione uma linha no seu crontab em /etc/crontab

2 */6 * * * pi-star /usr/local/bin/linbpq/bbsnewmsg.sh

Este foi um exemplo de como se podem integrar outros programas com o BPQ de modo simples e não intrusivo.
Este último script tem algumas falhas, por exemplo sempre que é chamado notifica todas as mensagens por ler… A ideia era ser chamado a cada 5 minutos, mas então não deveria enviar múltiplos e-mails de notificação de mensagens anteriores… Fica para próximas versões!

Logo que possível farei actualizações nestes scripts. Teste e crie os seus script com esta ideia. Sinta-se livre de copiar e distribui-los… agradeço menção a CT1EBQ.

pi-star +GUI, packet e aplicações desktop

Há uns meses atrás comecei este projecto. Sempre fui adepto de “all in one”, nas impressoras, nos rádios, nos gadgets, até nos canivetes suíços! Compreendo quem prefira um rádio para HF, outro para VHF e UHF, mas eu gosto deles com tudo!
Este projecto é para os que gostam de “tudo na mesma caixa”!

Há uns meses, nem sabia o que era um Raspberry Pi até que me rendi… comprei um zero com wireless, experimentei o 3B + e depois comprei um 4. Foi com o mesmo entusiasmo com que recebi o meu ZX81 ou o Spectrum em 1982, mas com tecnologia mais recente e capaz de um projecto deste tipo!
– Era o computador que faltava na minha estação de rádio! Sem ventoinhas, logo sem barulho, a 5V ou facilmente alimentado a partir de 12V e, o Raspberry 4 com uma capacidade de processamento suficiente para correr um sem número de aplicações em simultâneo! Estas características maravilharam-me…

Tudo começou quando adquiri o meu rádio D-Star, instalei num Pi zero W o software pi-star, num computador antigo a correr linux, apenas linha de comandos, o linbpq para packet e APRS e depois precisava de outro brincar com modos digitais…
Eram muitos computadores, todos ligados, a consumir energia 24 horas por dia! Não, tinha de haver outra solução.
A solução passava por um computador, todos os sistemas e software a correr ali…
Pretendia ainda uma solução alimentada a 12V, de modo a poder alimenta-lo a baterias e criar sistemas de alimentação redundante.

A solução era mesmo um Raspberry Pi!

Fiz teste num 3B + de um amigo. Percebi que tinha de instalar primeiro o pi-star, a última versão “buster” do debian, disponível para download no site deste excelente projeto.
O pi-star tem uma excelente característica, depois do arranque o sistema entra em modo read-only, e apesar de o podermos pôr em read-write, tudo está feito para que volte a read-only no instante seguinte! Era um quebra cabeças e o primeiro problema a resolver! Todos os posts anteriores foram o caminho a percorrer para chegar até aqui e resumem a minha experiência em Pi.

Se quiser ter os modos digitais, o propósito de ter instalado o core do pi-star, terá de adquirir uma pequena placa de RF, chamada MMDVM hotspot. Encontra-se facilmente no eBay e a minha custou cerca de 15€ mais despesas de envio.

As instruções seguintes mostra como o fazer.

No final deste projecto, com algumas horas e muita paciência, fica com um Raspberry Pi (recomendo o 4, com 2 ou mais Gb de RAM) com,

pi-star, para modos digitais (D-Star, DMR, YSF...)
packet e APRS no linbpq + (Hamlib, Direwolf, Xastir, Linpac)
recepção de WSPR com uma simples RTL-SDR v3
FLRig e FLDigi
WSJT-X
JTDX
GridTracker (Display connections on a map)
JS8CALL
CQRLOG + TQSL (Advanced Ham Radio Logbook)
GPredict (Sat-Tracking)
QSSTV (Slow Scan Televison)
GQRX (SDR)
FreeDV (Digital Voice)
VOACAP (Propagation Prediction)
Chirp (Programming transceivers)
Qtel (Echolink Client)
WSPR with RTL-SDR v3
VNC server para acesso externo (tablet, telefone ou computador)

Que tal? 🙂

Instruções

Não há fórmulas mágicas, os bons projecto levam tempo!
Precisa tempo e paciência, sobre tudo se não tem muita experiência com sistemas operativos linux em linha de comandos. No entanto tentei tanto neste como nos posts anteriores criar instruções para que fosse apenas copiar e colar…
Neste projecto, e porque não sou o autor de tudo, deixo links para outros sites, para os siga e instale tudo pela ordem que sugiro.

Comecemos por instalar o pi-star

Faça o download e siga as instruções para o seu sistema operativo.
A instalação do pi-star não é opcional já que este projecto se baseia nele, que inclui o último sistema operativo “buster” à data em que escrevo este artigo.

Depois vamos instalar o interface gráfico GUI. Sim, vai ter uma consola gráfica, mas toda a instalação corre praticamente em linha de comandos.

Depois de instalado o pi-star, identifique a sua versão. Terá de habilitar o SSH, configurar o acesso à network ou, ligar um monitor, teclado e rato. Abra uma janela terminal, ou aceda por SSH e faça,

$ uname -a

…dá-lhe algumas informações sobre a versão, processador e hardware
Para conhecer qual o sistema operativo, pelo nome que conhecemos digite,

$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

ou, digite o comando “lsb_release -a”.
Actualize agora o seu sistema já instalado,

$ sudo pistar-update
$ sudo pistar-upgrade
$ sudo reboot

O pi-star, foi desenhado com propósito único, e será necessário instalar diversos componentes: software, plugins de terceiros e livrarias de código; de modo a dotá-lo de todo o software para o nosso projecto.

Instale a componente de configuração do Raspberry Pi, que facilitará muito qualquer configuração de rede, hardware, serviços, etc…

$ rpi-rw
$ sudo apt-get install raspi-config

Ambiente gráfico de janelas

Agora vamos instalar o X ou interface gráfico GUI. Passo simples. Depois já terá acesso ao sistema pelo interface gráfico de janelas que lhe será mais familiar…

$ rpi-rw
$ sudo apt-get install -y raspberrypi-ui-mods rpi-chromium-mods
$ sudo reboot

A partir deste momento, pode aceder já por teclado e rato, ligando um monitor à porta HDMI do Pi.
Habilite o VNC, para lhe permitir aceder remotamente, se não pretender como eu, ligar o monitor. Na linha de comandos ainda, faça,

$ rpi-rw
$ sudo raspi-config
7 Advanced Options
A5 Resolution
…seleccione o modo à sua escolha, no meu caso escolhi uma das configurações 16:9
Faça "Ok", "Ok" de novo, "Finish", "Yes" vamos fazer um reboot…

Agora já se pode ligar por VNC.
Antes de fazer reboot, pode também habilitar o “auto-login” no sistema de janelas. Volte ao “raspi-config” e siga os menus “Boot option”->”Desktop / CLI”->”Desktop autologin”.
Algumas instruções que li sugeriram também instalar o xinit. Considere-o para já como opção,

$ rpi-rw
$ sudo apt-get install --no-install-recommends xinit

Para conhecer o endereço IP do seu Pi, faça

$ ifconfig

Identifique a sua ligação de rede, instale o VNC Desktop no seu computador e já pode aceder confortavelmente ao seu Pi, pelo sistema gráfico de janelas.
Note que, a partir do momento que tem acesso ao interface gráfico pode abrir ali uma janela terminal e executar todos os comandos que se seguem…
Eu continuo ligado por SSH.

Porque o pi-star é muito robusto, quase à prova de desligar a alimentação quando e sempre que quiser sem qualquer cuidado em particular, tem também um firewall onde é preciso permitir o acesso externo. Nada complicado. Crie o ficheiro ipv4.fw que será lido pelo sistema e adicione estas regras ao iptables, firewall linux,

$ rpi-rw
$ sudo nano /root/ipv4.fw
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -m tcp -p tcp --dport 5900:5901 -j ACCEPT
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -m tcp -p tcp --dport 8010 -j ACCEPT
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -m tcp -p tcp --dport 8081 -j ACCEPT
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -m tcp -p tcp --dport 8772 -j ACCEPT
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -m tcp -p tcp --dport 9123 -j ACCEPT
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -m udp -p udp --dport 10093 -j ACCEPT
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -m udp -p udp --dport 10093 -j ACCEPT
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -m udp -p udp --dport 81 -j ACCEPT
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -m tcp -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -m udp -p udp --dport 64738 -j ACCEPT
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -m tcp -p tcp --dport 64738 -j ACCEPT
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -m tcp -p tcp --sport 1024:65535 -j ACCEPT

Grave, CTRL + x, “yes” e volte à linha de comandos.

Nota: esta lista de regras tem sido actualizada ao longo do projecto embora nem sempre seja referido nos diversos posts. Sempre que uma aplicação ou serviço necessita de comunicar para fora, ou receber dados, temos de abrir a porta respectiva!

Configurei já as portas 5900 e 5901 para acesso por VNC, a 8010 para acesso por telnet ao linbpq, a 9123 o acesso web à consola do linbpq e a 10093 para transferência de mensagens entre nodes, também para o linbpq.
Para aplicar estas regras,

$ sudo pistar-firewall

Configurar o pi-star em mode read-write permanente

Descobrir onde o pi-star re-escrevia as instruções de read-write para read-only deu algum trabalho, muitos ficheiros abertos e re-escritos, novas instalações, pesquisas na web, frustração e umas boas horas. Vamos começar.

Temos de substituir todas as instruções que montam o sistema como leitura apenas, para leitura e escrita, isto é de “ro /” por “rw /”.
Comecemos pelas regras na montagem das partições,

$ rpi-rw
$ sudo nano /etc/fstab

Igualmente importante, edite o ficheiro /etc/rc.local e comente com “#” a última linha onde aparece a expressão,

mount -o remount,ro /

ou melhor, não a comente e altere-a para,

mount -o remount,rw /

na directoria /var/www, fazemos o login como root,

$ cd /var/www
$ sudo -s

Verificamos quantas entradas existem,

# find ./ -type f -print0 | xargs -0 grep "ro \/"

Trocamos todos os “ro /” por “rw /”. Para evitar erros copie a seguinte expressão,

# rpi-rw
# find ./ -iregex ".*.php?$" | xargs perl -pi -e 's/ro \//rw \//'

E, verificamos que já não existe nenhum “ro /” por substituir. O output deve ser vazio!

# find ./ -type f -print0 | xargs -0 grep "ro \/"
# exit
$

“exit” sai do user root.
Em cada actualização do pi-star bem sucedida devemos correr estes 3 últimos comandos “find…”! É natural que, durante o update surjam mensagens como: “os seguintes ficheiros foram modificados…” Ignore e, volte a fazer os procedimentos descritos anteriormente.

Vamos editar ainda os seguintes ficheiros e substituir todas as entradas de “ro /” por “rw /”

$ rpi-rw

/etc/bash.bashrc ; não é necessário
/etc/bash.bash_logout
/etc/apt/apt.conf.d/100update
/etc/systemd/system/apt-daily.service
/etc/systemd/system/apt-daily-upgrade.service

Renomear os seguintes ficheiros, por exemplo para _[ficheiro]

$ rpi-rw
$ sudo mv /etc/init.d/umountroot /etc/init.d/_umountroot
$ sudo mv /etc/init.d/checkroot.sh /etc/init.d/_checkroot.sh
$ sudo reboot

Existem mais alguns ficheiros encontrados em /usr/local/sbin, /usr/sbin e /usr/bin mas não detectei nada que provocasse o sistema a voltar a read-only.

Notas:
1. Ao tentar actualizar agora o pi-star deve aparecer-lhe uma mensagem com esta,

Starting Services…
Done
Updates complete, sleeping for a few seconds before making the disk Read-Only
mount: /: mount point is busy.
Finished

O que é normal visto que o sistema é read-write. Não há problema.

2. Recentemente dei que o meu raspberry entrava em modo “halt” todas as noites à hora que executava o cron.daily
O problema manifestava-se quando corria no script “powersave” a instrução “tvservice -o” que desliga o port HDMI. Desabilite esta linha, editando o ficheiro /etc/cron.daily/powersave e comentando a instrução com “#”,
#/opt/vc/bin/tvservice -o

Instalação de modos digitais em ambiente gráfico

Quer ter uma estação de rádio digital completa no seu raspberry pi?
Prossiga agora para o artigo – https://dl1gkk.com/setup-raspberry-pi-for-ham-radio/

Instalou tudo? Fantástico!

Instalação de Packet AX.25 e APRS com linbpq

Siga os meus posts anteriores, instale e configure de acordo com as suas preferências, o seu indicativo, o QRA locator, etc…

packet/APRS iGate, BBS, node e DX cluster com Raspberry Pi (parte 1)
packet/APRS iGate, BBS, node e DX cluster com Raspberry Pi (parte 2)
packet/APRS iGate, BBS, node e DX cluster com Raspberry Pi (parte 3)
packet/APRS iGate, BBS, node e DX cluster com Raspberry Pi (parte 4)
packet/APRS iGate, BBS, node e DX cluster com Raspberry Pi (parte 5)
Mapas de APRS em BPQ32

Opcional

Acesso linux a partir do linbpq
Direwolf AX.25 + FEC = FX.25 (para quem pretende explorar o HF)
Monitor de WSPR com raspberry pi + dongle RTL-SDR

Veja também

Solução de problemas com a placa de som CM108
Como criar Menus no Gnome para o raspberry pi

…aspecto final


Referências:
https://gist.github.com/kmpm/8e535a12a45a32f6d36cf26c7c6cef51
https://forum.pistar.uk/viewtopic.php?t=1237&start=10
https://forum.pistar.uk/viewtopic.php?t=858

Referências avançadas:
https://hallard.me/raspberry-pi-read-only/
https://gist.github.com/paulfurley/8e2e2ead269d81d6c41604233a696acd
https://medium.com/@andreas.schallwig/how-to-make-your-raspberry-pi-file-system-read-only-raspbian-stretch-80c0f7be7353
https://github.com/km4ack/pi-build
https://forum.pistar.uk/viewtopic.php?f=3&t=2059&start=40

Direwolf AX.25 + FEC = FX.25

Nesta data o projecto direwolf vai na sua versão 1.6 D e suporta FX.25

Trata-se do protocolo AX.25 perfeitamente compatível com compressão de erros, útil sobretudo em comunicações de packet em HF.

Para dispormos desta característica devemos instalar esta versão de desenvolvimento. Siga os passos seguintes,

git clone https://github.com/wb2osz/direwolf.git
cd direwolf
git branch -r
git checkout dev
mkdir build && cd build
cmake ..
make -j4
sudo make install
make install-conf
make install-rpi ; ou: ln -f -s /usr/local/share/applications/direwolf.desktop ~/Desktop/direwolf.desktop ; se pretender criar atalho no menu em X

Após instalada a nova versão, chamo o direwolf com a seguinte linha,

/usr/local/bin/direwolf/direwolf -X 32 -d x -t 0 -c /usr/local/bin/direwolf/direwolf300.conf -l /usr/local/bin/direwolf/logs/direwolf300.log

As opções a seguir dizem respeito a,

-X - número de check bytes
-d - as opções de debug, optei por x
-t 0 - evita que ao chamar o direwolf o ecrã cintile
-c - local onde se encontra o ficheiro de configuração para esta placa de som, bauds, PTT entre outras definições
-l (L minúsculo) - onde será guardo o log

Quadro com opções de debug

Um exemplo do output com a função de debug -d x

FX.25: Matched correlation tag 0x05 with 6 bit errors.  Expecting 223 data & 32 check bytes.
FX.25: Matched correlation tag 0x05 with 0 bit errors.  Expecting 223 data & 32 check bytes.
FX.25: Matched correlation tag 0x05 with 0 bit errors.  Expecting 223 data & 32 check bytes.
FX.25: FEC complete with no errors.
FX.25: FEC complete with no errors.
FX.25: FEC complete, fixed 13 errors in byte positions: 11 19 65 73 74 92 116 117 132 138 143 144 192

FX.25: Matched correlation tag 0x06 with 1 bit errors.  Expecting 128 data & 32 check bytes.
FX.25: Matched correlation tag 0x06 with 1 bit errors.  Expecting 128 data & 32 check bytes.
FX.25: Matched correlation tag 0x06 with 1 bit errors.  Expecting 128 data & 32 check bytes.
FX.25: Matched correlation tag 0x06 with 1 bit errors.  Expecting 128 data & 32 check bytes.
FX.25: FEC complete with no errors.
FX.25: FEC complete with no errors.
FX.25: FEC complete with no errors.
FX.25: FEC complete, fixed  1 errors in byte positions: 97

O modo de FX.25 é automático e utilizado pela aplicação quando detecta erros na recepção.

Este modo é mais lento do que o protocolo AX.25 mas com melhor rendimento em comunicações a grande distância onde existe ruído, como as bandas de HF.

A estação que transmite define o número de check bytes a utilizar.

Melhorias do FX.25 em APRS

Um exemplo no envio de 1000 pacotes de APRS onde se introduz uma taxa de erro, controlada, e no final da transmissão contam-se os pacotes recebidos correctamente,

Melhorias do FX.25 em packet radio

O modo de ligação utiliza os mesmos pacotes de AX.25, mas de uma maneira diferente.
Em vez de transmitir broadcasting, isto é para todos como o APRS, é utilizado na comunicação entre duas estações específicas. O TNC que escuta atribui números de sequência aos pacotes recebidos.
O receptor reconhece o que foi recebido e solicita o preenchimento de pacotes ausentes, isto é, com erro.

Este teste utiliza 100 pacotes, cada um com 128 bytes de informação.
A quantidade total de dados da transferência, dividida pelo tempo decorrido, fornecerá uma taxa de transferência efectiva, medida em bytes por segundo neste exemplo.
À medida que a taxa de erro aumenta, são necessárias mais tentativas e a taxa de transferência diminui. Nalgum momento, o receptor simplesmente desiste antes de chegar ao fim. Damos aqui uma pontuação de 0.

Referências:
https://packet-radio.net/direwolf-1-6-d-mar-1-2020-fx-25/
https://packet-radio.net/direwolf-ax-25-fec-fx-25/
https://github.com/wb2osz/direwolf/blob/dev/doc/AX25_plus_FEC_equals_FX25.pdf

packet/APRS iGate, BBS, node e DX cluster com Raspberry Pi (parte 4)

O DX Cluster é uma rede de computadores dedicada que partilha informação dos seus utilizadores sobre a actividade de DX. Estes computadores na rede têm o nome de “nós” ou nodes em inglês.
Os nodes interligam-se por rádio ou sobre a Internet, por AX.25 ou telnet, formando um cluster.

Este serviço, suportado por rádio amadores ou clubes, mantêm a rede funcional, difundindo as estações de amador a fazerem DX em tempo real.

Nesta rede a informação é chamada de spot, uma linha com o indicativo de quem chama, ou coloca o spot na rede, a frequência de DX, a estação de amador com quem estabelece contacto, uma mensagem curta de 30 caracteres e a hora de envio do spot.

Tem inúmeros filtros que permitem a quem se liga a um node do cluster receber por exemplo spots de uma ou várias bandas, de indicativos “CT”, por modos digitais como o RTTY ou CW, entre outros…

Permite-nos ainda fazer simulações de DX entre 2 pontos, obter dados sobre a MUF e propagação, a distância entre pontos do globo, os azimutes e elevação do Sol e da Lua no horizonte, enviar e receber mensagens com outros amadores ou o posicionamento de satélites.

Satellites available/Age of Keps (days):-
               AO-07: 5125                 AO-10: 5126
               AO-16: 5125                 AO-27: 5125
               AO-40: 5124                 AO-51: 5124
            FENGYUN1: 5124                 FO-29: 5125
               GO-32: 5124                HUBBLE: 5124
               IO-26: 5125                   ISS: 5124
               KO-23: 5124                 LO-19: 5125
               MO-46: 5124                NCUBE2: 5124
               NO-44: 5125                 NO-45: 5124
             NOAA-10: 5124               NOAA-11: 5124
             NOAA-12: 5124               NOAA-14: 5124
             NOAA-15: 5124               NOAA-16: 5124
             NOAA-17: 5124               NOAA-18: 5124
             OKEAN-0: 5125               OKEAN-4: 5124
               OO-38: 5125                 PO-28: 5124
               PO-34: 5125                RESURS: 5124
               RS-15: 5125                SICH-1: 5125
               SO-33: 5124                 SO-50: 5125
               TO-31: 5124                  UARS: 5124
               UO-11: 5125                 UO-22: 5125
               UO-36: 5124                 UWE-1: 5124
               VO-52: 5125                 WO-18: 5125
                XI-V: 5124                 XO-53: 5124

A lista completa de comandos pode ser consultada em http://www.dxcluster.org/main/usermanual_en-12.html

Veja a rede de DX Cluster em http://www.hamcluster.net/

No contexto deste projecto o DX Cluster é uma opção, e talvez a mais difícil de configurar.
Para fazer parte de um cluster é necessário solicitar a outro provedor autorização para fazer parte da rede, já que, haverá tráfego constante a difundir entre os membros do cluster.

Em Portugal podem-no solicitar a CS5SEL.

Mãos à obra!

Comecemos por instalar algumas ferramentas essenciais para a instalação do DX Cluster também conhecido por Spider.

Instale o wget, para download de ficheiros na linha de comandos ou modo terminal,

sudo apt-get install wget

Git é a ferramenta que lhe permite descarregar o DX Spider e futuras actualizações,

sudo apt-get install git-core

Criemos um link para a directoria de instalação. Por coerência com o software anteriormente instalado, optei por o fazer em /usr/local/bin/

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

Procede-se à instalação de algumas livrarias de perl,

sudo apt-get install libtimedate-perl (42Kb)
sudo apt-get install libnet-telnet-perl (56,7Kb)
sudo apt-get install libcurses-perl (86,4Kb)
sudo apt-get install libdigest-sha-perl (54,4Kb)
sudo apt-get install libdata-dumper-simple-perl (12,9Kb)

Cria-se a directoria de instalação e descarrega-se o spider,

cd /usr/local/bin/
git clone git://scm.dxcluster.org/scm/spider
cd /usr/local/bin/spider
sudo git reset --hard

Atribuíem-se permissões a directorias e ficheiros. Neste projecto o utilizador é “pi-star”, mude-o de acordo com a sua instalação

sudo chown -R pi-star. /usr/local/bin/spider
sudo find /usr/local/bin/spider -type d -exec chmod 2755 {} \;
sudo find /usr/local/bin/spider -type f -exec chmod 755 {} \;

Configuração,

cd /usr/local/bin/spider
mkdir local
mkdir local_cmd
cp perl/DXVars.pm.issue local/DXVars.pm
cp perl/Listeners.pm local/Listeners.pm
cd local

Edite o ficheiro DXVars.pm e siga as instruções que se encontram nos comentários das linhas.

Edite o ficheiro Listeners.pm e remova o caracter # na linha onde é configurada a porta de ligação.

Configure o cluster com o seu indicativo,

/usr/local/bin/spider/perl/create_sysop.pl

Vamos criar a base de dados,

cd /tmp
wget http://ftp.w1nr.net/usdbraw.gz
/usr/local/bin/spider/perl/create_usdb.pl /tmp/usdbraw.gz

…este comando pode demorar alguns minutos.

Compilamos o software para o nosso sistema operativo,

cd /usr/local/bin/spider/src
make

E, vamos agora iniciar o nosso programa,

/usr/local/bin/spider/perl/cluster.pl &

ou, daqui para a frente,

/spider/perl/cluster.pl &

“&” no fim da linha abre o programa em background. Se não o utilizar abra outra janela terminal e faça login no sistema como sysop, o seu indicativo,

/spider/perl/console.pl

Agora, na consola execute os comandos,

> load/usbd
> set/node [indicativo do node]
> connect [ficheiro de ligação com o mesmo nome]

Estes comandos são memorizados pelo sistema, não sendo necessário escrever-los cada vez que se liga ou inicia o programa.
Para sair da consola e fechar o spider, faça “quit” ou “shutdown”.

Para interligar o DX Cluster com o linbpq, identifique as linhas seguintes no ficheiro de configuração bpq32.cfg e descomente-as ou escreva,

CMDPORT 7300;

no port de telnet, no meu caso nas configurações do portnum=2,
e, a linha seguinte geralmente no final do ficheiro de configuração

APPLICATION 1,DX,C 2 HOST 0

assumindo que a porta de ligação telnet é a porta 2.

Iniciar o DX Cluster no arranque do sistema

Crie o ficheiro de arranque,

sudo nano /etc/systemd/system/spider.service

Copie e cole o seguinte conteúdo corrigindo o utilizador e caminhos,

[Unit]
Description=Dxspider DXCluster service
After=network.target
[Service]
Type=simple
User=pi-star
Group=pi-star
ExecStart=/bin/bash -c "/usr/bin/perl -w /spider/perl/cluster.pl" pi-star > /dev/tty3
Comment out line below for logging everything to /var/log/messages
StandardOutput=null
Restart=always
[Install]
WantedBy=multi-user.target

Atribua permissões de execução ao ficheiro,

sudo chmod 755 /etc/systemd/system/spider.service

e, active o serviço

sudo systemctl enable spider.service

Agora inicie o serviço escrevendo,

sudo systemctl start spider

Para verificar se o serviço se encontra a correr faça,

sudo systemctl status spider

ao qual o sistema deverá responder,

 spider.service - Dxspider DXCluster service
   Loaded: loaded (/etc/systemd/system/spider.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2020-09-08 22:00:46 WEST; 8min ago
 Main PID: 2215 (perl)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/spider.service
           └─2215 /usr/bin/perl -w /spider/perl/cluster.pl


Sep 08 22:00:46 pi-star systemd[1]: Started Dxspider DXCluster service.

Continua na parte 5

Referências:
http://www.hamcluster.net/
http://www.cantab.net/users/john.wiseman/Documents/LinBPQtoSpider.html
https://packet-radio.net/install-dxspider-on-a-debian-system/
https://gitlab.com/glaukos/dxspider_installation_script/blob/master/install_dxspider.sh
https://do7psl.de/installation-of-dxspider-on-a-raspberry-pi/
http://www.cantab.net/users/john.wiseman/Documents/BPQCFGFile.html
https://www.hamradiodeluxe.com/blog/Ham-Radio-Deluxe-Newsletter-April-19-2018–Understanding-DX-Clusters.html

packet/APRS iGate, BBS, node e DX cluster com Raspberry Pi (parte 3)

Instalação do “linbpq”, o core do projecto.

O linbpq, versão linux do BPQ32 para windows, foi e continua a ser desenvolvido desde os anos 90 até aos dias de hoje, por John Wiseman de indicativo G8BPQ.
Responde activamente a questões em Groups.io

Para instalar o linbpq vou manter a mesma estrutura de dados em /usr/local/bin/. Vamos começar por descarregar o programa e as páginas de HTML para acesso por browser…

$ sudo mkdir /usr/local/bin/linbpq
$ cd /usr/local/bin/linbpq
$ sudo wget http://www.cantab.net/users/john.wiseman/Downloads/Beta/pilinbpq
$ sudo mv pilinbpq linbpq
$ sudo chmod +x linbpq

$ sudo setcap "CAP_NET_ADMIN=ep CAP_NET_RAW=ep CAP_NET_BIND_SERVICE=ep" linbpq

$ sudo mkdir HTML
$ cd HTML
$ sudo wget http://www.cantab.net/users/john.wiseman/Downloads/Beta/HTMLPages.zip
$ sudo unzip HTMLPages.zip
$ sudo rm HTMLPages.zip

$ cd ../
$ sudo mkdir BPQAPRS
$ cd BPQAPRS
$ sudo wget http://www.cantab.net/users/john.wiseman/Documents/Samples/APRSHTML.zip
$ sudo unzip APRSHTML.zip
$ sudo rm APRSHTML.zip

$ cd /usr/local/bin/
$ sudo chown -R pi. linbpq

Copie um outro ficheiro de configuração do linBPQ, com o nome de bpq32.cfg para o directório de instalação; no meu caso /usr/local/bin/linbpq/ e reproduza neste ficheiro as alterações necessárias à ligação do BPQ32 com o Direwolf.
Para facilitar descarregue este exemplo que, utilizei na minha configuração depois de substituir algumas expressões (instruções no próprio ficheiro).

Veja o exemplo a seguir para a configuração dos PORTS de RF,

;****** PORT 3 Direwolf 300-baud ****** PORT PORTNUM=1 ; Port number ID=HF Packet 300-baud ; PORTS command text TYPE=ASYNC ; RS232 connection IPADDR=127.0.0.1 ; DIREWOLF TCPPORT=8001 ; DIREWOLF SPEED=19200 CHANNEL=A ; TNC channel MAXFRAME=4 ; Max outstanding frames FRACK=5000 ; Level 2 timeout (ms) RESPTIME=200 ; Level 2 delayed ACK (ms) RETRIES=10 ; Level 2 max retries PACLEN=236 ; Max packet length (bytes) TXDELAY=300 ; Transmit keyup delay (ms) SLOTTIME=100 ; CMSA interval timer (ms) TXTAIL=30 PERSIST=63 ; Persistence (256/(# transmissions-1) DIGIFLAG=1 ; Allow Digipeat on this port ENDPORT

;****** PORT 4 Direwolf 1200-baud ****** PORT PORTNUM=2 ; Port number ID=VHF Packet 1200-baud ; PORTS command text TYPE=ASYNC ; RS232 connection IPADDR=127.0.0.1 ; DIREWOLF TCPPORT=8003 ; DIREWOLF SPEED=19200 CHANNEL=A ; TNC channel MAXFRAME=1 ; Max outstanding frames FRACK=5000 ; Level 2 timeout (ms) RESPTIME=40 ; Level 2 delayed ACK (ms) RETRIES=10 ; Level 2 max retries PACLEN=236 ; Max packet length (bytes) TXDELAY=100 ; Transmit keyup delay (ms) SLOTTIME=100 ; CMSA interval timer (ms) TXTAIL=30 PERSIST=63 ; Persistence (256/(# transmissions-1) DIGIFLAG=1 ; Allow Digipeat on this port ENDPORT

Guarde o ficheiro de configuração como bpq32.cfg no directório do linbpq.
Inicie o direwolf, se estiver a usar algum equipamento de RF, como descrito anteriormente.
Abra uma nova janela de terminal e inicie o linbpq,

$ cd /usr/local/bin/linbpq
$ sudo -u pi ./linbpq &

O linBPQ deve ligar-se ao Direwolf por localhost através da porta 8001 ou 8003 de acordo com as configurações que definiu.

Quando corre o linbpq pela primeira vez, este cria uma série de outros ficheiros e pastas…

Aceder ao BPQ

Pode aceder ao BPQ de 3 formas, por:

  • RF, ligando-se através de um TNC
  • telnet, desde uma janela terminal
  • browser, onde vamos acabar por fazer algumas configurações

por RF

Ligue outro rádio na mesma frequência e, se tem um TNC2, escreva,

cmd: C [indicativo]

por telnet

Se nas suas configurações do linbpq definiu a porta 8010 na instrução “TCPPORT=8010”, abra uma janela terminal e escreva,

$ telnet [endereço IP do raspberry pi] 8010

Consulte o artigo Manual de Packet para mais informações e opções disponíveis na ligação por RF e telnet.

Nota: num computador com Microsoft Windows 10 terá de instalar o programa telnet.

por browser

Abrindo uma janela no seu browser preferido e escrevendo no campo de endereços: http://[endereço IP do raspberry pi]:9123
caso tenha definido como eu no config do bpq a instrução “HTTPPORT=9123”

As primeiras configurações devem ser feitas através de browser. Pelo browser é-lhe possível re-escrever o bpq32.cfg, depois de autenticado como sysop.

Ao entrar no BPQ a página deve ser semelhante a esta,

Painel do BPQ

As configurações de Node e APRS são feitas todas dentro do ficheiro de configuração – o bpq32.cfg
Mas para configurar a BBS temos de as fazer por browser. Siga o link “Mail Mgmt”, faça o login como sysop, que definiu na instrução do PORT 2, para telnet, como “USER=[CALSIGN login],[password],[CALSIGN],,SYSOP”, excluindo os parêntesis rectos,

Página de login

Siga o link “Configuration”, e preencha os campos de acordo com a figura e com o seu indicativo,

Configurações gerais da BBS

Vamos ao menu “Users” e preenchemos os dados que conhecemos, seguindo o exemplo,

Configurações de utilizadores da BBS

Para começar a receber tráfego e mensagens na sua BBS, terá de estabelecer ligação com outra BBS na rede.
As mensagens entre BBS podem ser difundidas em ax.25 pela Internet ou caso esta se encontre indisponível, por RF.

Solicite ao sysop de outra BBS que se encontre ligada à rede de packet que configure o encaminhamento de mensagens para a sua BBS, adicionando as seguintes linhas no ficheiro de configuração bpq32.cfg
Na secção “BROADCAST NODES”,

MAP CT1EBQ-8 node.oitaven.pt UDP 10093 B

(uma vez mais substitua na linha acima o seu indicativo, a ligação ou endereço IP, se for fixo, ou por um DNS dinâmico)

No seu ficheiro de configuração, e na mesma secção deve acrescentar a linha,

MAP CQ0PCV-8 node.arlc.pt UDP 10093 B

(novamente, faça as substituições necessárias…)

Na secção “ROUTES” acrescente a linha,

CQ0PCV-8,193,1

onde CQ0PCV-8 é a BBS que, no meu exemplo, me entrega as mensagens.

Para enviar mensagens da sua BBS para outra BBS ou pBBS, neste caso a sua estação deve fazer o envio de tráfego, configure a opção “Forwarding”, conforme a figura, procedendo às alterações necessárias…

Configurações de re-encaminhamento

Explore todas as potencialidades do BPQ, navegando nas páginas da sua BBS e consultando os manuais online de John Wiseman, G8BPQ

Iniciar o linbpq no arranque

Comece por criar um script para chamar o linbpq, por exemplo no mesmo directório de instalação do linbpq,

cd /usr/local/bin/linbpq
nano runbpq
#!/bin/bash

cd /usr/local/bin/linbpq
sudo -u pi-star ./linbpq > /dev/tty2

atribua permissões de execução ao runbpq.sh

chmod 755 runbpq

A seguir crie o ficheiro para arranque do serviço escrevendo

sudo nano /etc/systemd/system/linbpq.service
[Unit]
After=network.target
[Service]
ExecStart=/bin/bash /usr/local/bin/linbpq/runbpq
Restart=always
[Install]
WantedBy=multi-user.target

Agora, para iniciar o serviço no arranque do sistema faça,

sudo systemctl enable linbpq.service

Se não quiser iniciar no arranque faça em qualquer momento,

sudo systemctl disable linbpq.service

Outros comandos,
Para iniciar o linbpq como serviço,

sudo systemctl start linbpq.service

Para parar o linbpq

sudo systemctl stop linbpq.service

Para verificar o estado do serviço,

sudo systemctl status linbpq.service

Continua na parte 4

packet/APRS iGate, BBS, node e DX cluster com Raspberry Pi (parte 1)

…ou, como montar uma estação de rádio packet/APRS com Raspberry Pi 3/4 e algum software.

Esta documentação é a síntese de diversos sites sobre o tema, referidos mais abaixo nas diversas Referências para este projecto.

Faça o download do zip e instale o Raspian Buster Lite no seu Raspberry Pi 3 ou superior.

Estas instruções podem ser utilizadas a partir de uma janela terminal SSH em linux ou Mac OS X. Para Microsoft utilize o Putty.

Abra então uma janela terminal local (apenas para linux e Mac OS X) e insira o cartão micro SD (2Gb é suficiente), no computador. Faça,

$ diskutil list

…para identificar o disco (cartão SD) a formatar.

Em resposta, o sistema irá devolver disk2 ou disk3. No meu caso foi o disk3. Por favor substitua este número conforme o seu caso quando necessário. Não se engane ou corre o risco de destruir a informação existente noutro disco!

Nota: não utilize “sudo” ou o operador “root” a não ser quando for absolutamente necessário. Eu indicarei.
Nestes comandos que refiro, o símbolo “$” indica que o seu utilizador não é “root”. Se lhe aparecer “#” na linha de comandos, saia e volte a entrar com um utilizador com menos privilégios…
Pode copiar e colar os comandos que aqui escrevo, excluindo o “$” ou “#” no início da linha.

Identificado o disco, SD card, vamos formata-lo,

$ sudo diskutil eraseDisk FAT32 PACKET-PI MBRFormat /dev/disk3

Desmonte o disco,

$ diskutil unmount /dev/disk3s1

E vamos instalar a imagem do Raspbian Buster a partir do nosso disco. Descomprima o download, caso a imagem do sistema operativo venha comprimida em ZIP ou TAR.
Esta operação é natural que tarde uns minutos, dependendo da velocidade de escrita do cartão SD,

$ sudo dd bs=1m if=Downloads/2020-02-13-raspbian-buster-lite.img of=/dev/rdisk3

Até finalizar a instalação da imagem o computador não lhe mostra nada. Pode demorar entre 2 a 10 minutos…
Faça CTRL+T ou CTRL+SHIFT+T para ver o progresso e aguarde.

Finalizado… desmonte o disco,

$ diskutil unmount /dev/disk3s1

Aguarde a mensagem do sistema, indicando que pode retirar o disco e coloque no raspberry pi…

Na primeira instalação deve ligar o raspberry a um monitor e teclado USB.
Faça login com o utilizador: pi
Password: raspberry
Corra o “raspi-config”, configure uma rede, por exemplo a rede wireless e habilite o SSH para ligação remota.

$ sudo raspi-config

…e siga os seguintes menus,

2 Network Options
N1 Hostname: (o nome do raspberry na rede)
N2 Wi-fi: SSID e passkey
4 Localisation Options
I1 Change Locale -> Local: pt_PT.UTF-8 UTF-8 (default: en_GB.UTF-8 UTF-8) e, Default locale for the system environment: pt_PT.UTF-8 (default: none)
I2 Change Timezone -> Geographic area: Europe -> Time zone: Lisboa
I3 Change Keyboard Layout: Generic 105-key PC (intl.)
I4 Change Wi-fi Country: PT Portugal
5 Interfacing Options
P2 SSH: enable
8 Update

No final seleccione “<Finish>”, com o tabulador e saia do configurador.

Continua na parte 2

Referências:
https://www.raspberrypi.org/documentation/installation/installing-images/README.md
…e, siga os links.

Mapas de APRS em BPQ32

Finalmente, depois de alguma persistência e diversos e-mails trocados com o colega Gerhard – F5VAG e, John Wiseman – G8BPQ, a página de APRS já tem os mapas de localização!

O APRS é cada vez uma ferramenta mais interessante, com muitas aplicações que vão além do geo-posicionamento… Estes mapas estão agora disponíveis a partir do link http://node.arlc.pt:9123/aprs/all.html, depois de seleccionada a estação a seguir…

Foram actualizadas algumas das funcionalidades desta estação de packet, com o upgrade do BPQ32, sendo agora possível enviar mensagens por packet e APRS com difusão imediata!

Recordo que o manual se encontra aqui – https://www.arlc.pt/…/…/2019/08/Manual-Packet-Radio-ARLC.pdf, embora ainda não referindo estas novas funcionalidades. A página web de entrada em packet é http://node.arlc.pt:9123

Quem não tem credenciais, utilize o seu indicativo com a password: arlcham
Uma pequena nota, o node de UHF encontra-se desligado, a partilhar a antena com o D-Star em fase de testes…

Quem disponha dos velhinhos TNC pode ligá-los e difundir um beacon, com algumas regras, assim como fazer digipeating de APRS. Se houver interesse deixem comentários!

Envio de localização GPS com o TH-D74 através de hotspot

Esta versão, desenvolvida pelo G4KLX, possibilita entre muitas outras funcionalidades a partilha de geolocalização, utilizando o módulo mais recente do ircddbgateway no pi-star.

Se tem um TH-D74E e gostava que os seus dados de GPS fossem enviados para aprs.fi, apenas precisa de instalar e executar a versão mais recente do ircDDB Gateway disponível em https://github.com/g4klx/ircDDBGateway e configurar o rádio, menu 630 (GPS Info in Frame) para “On”. As opções “Sentence” (menu 631) devem ser as de origem – $GPGGA e $GPRMC. O menu 632 (Auto TX) deve ficar desligado, em “Off”.

Esta versão do gateway ircDDB, permite que o D-Star Repeater faça interface com o roteamento do indicativo através do ircDDB e de todos os diferentes tipos de refletores. Inclui muitas funcionalidades, tais como:

  • suporta Icom stacks
  • suporta repetidores de construção caseira
  • Icom DD mode em Linux através da internet
  • roteamento de indicativo de chamada via ircDDB
  • refletores D-Plus REF
  • refletores DExtra XRF
  • refletores DCS
  • refletores XLX
  • roteamento CCS7
  • transferências de dados D-RATS
  • gateway DPRS dados para APRS-IS
  • anúncios multi-idiomas de texto e voz
  • controle de chamada DTMF ou UR
  • interface de controle remoto
  • servidor StarNet

E a capacidade de definir políticas para o uso de refletores.

Faça o download em ZIP, descomprima por exemplo em /tmp, habilite o modo de leitura e escrita com “rpi-rw” e compile de acordo com as instruções na própria página. Se não necessitar de interface gráfico ignore as linhas referidas nestas instruções. Seja paciente, pois a compilação pode tardar entre 20 minutos a 3 horas no caso do raspberry pi zero.

Outras referências:
Facebook Kenwood TH-D74 group
https://www.f4fxl.org/compile-and-install-the-latest-ircddbgateway-in-pi-star/
https://www.f4fxl.org/compile-and-install-the-latest-dstarrepeater-in-pi-star/

packet/APRS iGate, BBS, node e DX cluster com Raspberry Pi (parte 2)

Se pretender criar uma estação de packet e APRS com iGate por RF, agora ou mais tarde, siga estas instruções. Caso contrário, pode passar à parte 3.

Após a instalação do sistema operativo linux, vamos então instalar o “modem” Direwolf e o linBPQ responsável pelas aplicações de BBS, APRS, DX Cluster, Node, Chat entre outras…

Devemos garantir que temos todas as actualizações necessárias:

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo reboot now

Depois de re-iniciar vamos instalar a livraria de som,

$ sudo apt-get install libasound2-dev

Em opção, se quisermos utilizar o Direwolf para controlar o PTT (emissão do rádio), através do GPIO, ou do GPIO da placa de som externa USB, instalamos também a biblioteca,

 $ sudo apt-get install libudev-dev

Instale o git, software para controlo de versões para programadores,
$ sudo apt-get install git

Agora vamos compilar e instalar o Direwolf

$ cd /tmp
$ git clone https://www.github.com/wb2osz/direwolf
$ cd /tmp/direwolf
$ git tag
$ git checkout 1.5
$ make -j
$ sudo make install
$ make install-conf

No meu caso ficou instalado em /usr/local/bin/direwolf

Agora fazemos um pequeno truque para ficar tudo arrumadinho,

$ sudo mkdir /usr/local/bin/dw
$ cd /usr/local/bin
$ sudo mv * dw/
$ sudo mv dw/ direwolf/
$ sudo chown -R pi. direwolf/

Pode optar por ter os ficheiros de configuração em /etc ou copia-los para o directório do direwolf – por questões de backup prefiro que fique tudo em direwolf/,

$ cp -n /tmp/direwolf/direwolf.conf /usr/local/bin/direwolf
$ cp -n /tmp/direwolf/sdr.conf /usr/local/bin/direwolf
$ cp -n /tmp/direwolf/telemetry-toolkit/telem-m0xer-3.txt /usr/local/bin/direwolf
$ cp -n /tmp/direwolf/telemetry-toolkit/telem-*.conf /usr/local/bin/direwolf
$ sudo cp -n /tmp/direwolf/dw-start.sh /sbin
$ sudo chmod +x /sbin/dw-start.sh

Como o Raspberry Pi 3 ou 4 não tem nenhuma entrada de som, temos de utilizar uma placa externa. O mais fácil e mais barato são as placas USB.


Pode encontrar facilmente no eBay diversas marcas e modelos… Sugiro que encomende mais do que uma para um dia mais tarde poder ligar vários rádios. É importante que escolha uma com o circuito integrado CM108, à vista, para poder fazer modificações.

Neste projecto utilizamos o GPIO da placa de som para o PTT, com de um simples transistor ligado ao pino 13 do CM108 através de uma resistência de 10k.


Ligue a sua placa de som USB, abra uma janela terminal e escreva,

$ aplay -l ("L" minúsculo, não o número 1)

Se o Raspberry Pi tiver a saída de som onboard activa, deve de aparecer como Card 0, Device 0.
A nova placa de som USB deve ser reconhecida como Card 1, Device 0, uma segunda por Card 2, Device 0 e por aí fora…

De notar que podemos correr várias instalações de Direwolf no caso de pretendermos estabelecer ligações ao BPQ em diversas velocidades, por exemplo 300 bauds para HF, 1200 para VHF e 9600 para UHF. Sim, o Direwolf faz comunicações a 9600 bauds com um transceptor preparado para tal!

Abra o ficheiro de configuração do Direwolf (pode descarregar o meu exemplo), em /usr/local/bin/direwolf/direwolf.conf com um editor de texto à sua escolha: “nano” ou “vi” e, habilite a placa de som USB correcta removendo o caracter “#” no início da linha apropriada, escrevendo,

ADEVICE  plughw:1,0

desça algumas linhas e altere “NOCALL” para o seu indicativo,

MYCALL NOCALL

Defina a velocidade do modem, por exemplo 1200 bauds,

MODEM 1200

Avance algumas linhas e defina a opção de PTT que pretende utilizar. No meu caso utilizei o GPIO da placa de som para o efeito.

PTT CM108 3 /dev/hidraw0

Mais abaixo active e altere as opções AGWPORT e KISSPORT para as definições que irá utilizar no linBPQ.
Desactive as opções APRS, se pretende utilizá-las através do linBPQ.

Grave as alterações introduzidas e execute o Direwolf através do terminal,

cd /usr/local/bin/direwolf
./direwolf (ou direwolf -t 0 -p -c /usr/local/bin/direwolf/direwolf.conf)

Se já tiver os cabos preparados, ligados ao seu transceptor, e na frequência correcta, deverá ver de imediato a actividade de packet ou APRS a surgir no terminal.

Se receber alguma mensagem idêntica,

“audio level = 193(95/67)…
Audio input level is too high. Reduce so most stations are around 50.”

Ajuste a entrada e a saída de som com o programa “alsamixer”. Escreva,

$ alsamixer

Prima F6 para seleccionar a placa de som USB e ajuste os cursores de modo a obter o valor aproximado de 50, na recepção do direwolf. Faça ESC para gravar e sair.

Para guardar estas definições após um reboot,

$ sudo alsactl store

O direwolf só por si tem todas as funcionalidades de APRS que precisa. Para complementar esta informação faça o download do manual.

Prima CTRL+C para fechar o Direwolf e, instale o pilinBPQ.

Problemas na configuração da(s) placas de som? Vejam também,
Solução de problemas com a placa de som CM108

Continua na parte 3

Referências:
https://github.com/wb2osz/direwolf/blob/master/doc/Raspberry-Pi-APRS.pdf
https://github.com/wb2osz/direwolf/tree/master/doc
http://www.hardwaresecrets.com/datasheets/CM108.pdf
http://m0nfi.uk/info/cm108-soundcard.html