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

Integrando tudo

Vamos agora ligar o nosso DX Cluster ao BPQ.

Edite o ficheiro de configuração do BPQ, escrevendo na consola terminal,

Na configuração do port Telnet acrescente a linha CMDPORT=7300 ou adiciona o port 7300 na linha já existente,

CMDPORT=23 63000 7300

Na secção Applications acrescente a linha,

APPLICATION 4,DX,C 2 HOST 0 S,CT1EBQ-9,EBQDXC

onde,

4 é o número de série, isto é, a aplicação 4
DX o nome com que aparece na linha de comandos do BPQ
C 2 HOST 0 S para a ligação telnet no port 2
CT1EBQ-9 o indicativo e SSID para ligação directa por RF ao DX Cluster
EBQDXC é o alias da ligação

Agora no terminal linux, edite os seguintes ficheiro e acrescente no final as linhas seguintes em cada um deles. Grave e saia, com CTRL+S, CTRL+X

bpqapp 63000/tcp # bpq hardware information

e,

bpqapp stream tcp nowait pi-star /usr/local/bin/linbpq/app.pl

Agora, no final deste projecto, e se começou por ler o artigo pi-star +GUI, packet e aplicações desktop vamos ter um computador, tão simples quanto um raspberry pi, com pi-star e modem MMDVM, servidor de APRS e packet radio, com quantas bandas e modos, quantas as placas de som instaladas com um node de DX Cluster!

Actualmente este projecto está a funcionar ininterruptamente e faz parte da estação de CT1EBQ, com packet a 300, 1200 e 9600 bauds, em HF, VHF e SatGate, UHF para comunicações mais rápidas e ARDOP em 14.1035 MHz LSB.

E pode ser vista aqui

APRS location of CT1EBQ

Referências:

Sobre as frequências a utilizar:
http://www.cantab.net/users/john.wiseman/Documents/LinBPQtoSpider.html
https://en.wikipedia.org/wiki/Automatic_Packet_Reporting_System
http://wiki.complete.org/PacketRadioOnHF
https://vapn.org/about/virginia-packet-network-design/references/hf-robust-packet-frequency-list

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,

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

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/

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

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

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

Configuração,

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,

Vamos criar a base de dados,

...este comando pode demorar alguns minutos.

Compilamos o software para o nosso sistema operativo,

E, vamos agora iniciar o nosso programa,

ou, daqui para a frente,

"&" 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,

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. Proteja a sua conta escrevendo na consola,

set/password [your callsign] [your password]

Para sair da consola e fechar o spider, faça "B", "quit" ou "shutdown".

Para entrar como sysop na consola, escreva "sysop". Supondo que a sua password era "abcdef", o sistema pergunta-lhe "05223" que corresponde às letras da sua password "afccd".

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,

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
WorkingDirectory=/usr/local/bin/spider
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,

e, active o serviço

Agora inicie o serviço escrevendo,

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

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.

Ligue-se a outros nodes de DX
ou, estableça um cluster com outros nodes de DX.

Ligar-se a outros…

Contacte uma estação de amador que faça parte do DX Cluster e peça-lhe se se pode ligar a ele para fazer crescer o cluster na sua área.

Crie um script para cada nova estação que venha a fazer parte do seu cluster em ./connect/[callsign]
Supondo que se pretende ligar a CT1EBQ-9. Crie o ficheiro /spider/connect/ct1ebq-9

Com o seguinte conteúdo,

timeout 60
connect telnet node.ct1ebq.com 7300
'login' 'yourcallsign+SSID'
'password' 'passthatIgiveyou'
client ct1ebq-9 telnet

…grave e feche o ficheiro.

O próximo passo é criar um ficheiro para o arranque destas contas…
Eis o meu exemplo,

e, copie e cole este modelo alterando o indicativo das estações que vai adicionando ao cluster,

# Startup Script
set/var $Spot::maxspots = 100
set/var $DXMsg::email_server = 'localhost'
set/var $main::reqreg = 0
set/spider pe1rrr-9
set/spider k3chb-2
set/spider cs5sel-5

Ao criar um cluster com CT1EBQ-9 teria de acrescentar a linha, "set/spider ct1ebq-9" e apagar as restantes com indicativos que não fazem parte da sua rede. Recorde que, é apenas um exemplo.

Depois devemos adicionar também cada indicativo ao crontab do DX Cluster, em /spider/local_cmd/crontab
Um vez mais deixo-lhe o meu exemplo para que tudo faça sentido,

# check every 10 minutes to see if ct1ebq-9 is connected and if not
# start a connect job going

0,10,20,30,40,50 * * * * start_connect('cs5sel-5') unless connected('cs5sel-5')
0,10,20,30,40,50 * * * * start_connect('pe1rrr-9') unless connected('pe1rrr-9')
0,10,20,30,40,50 * * * * start_connect('k3chb-2') unless connected('k3chb-2')

USDB Update
31 5 * * 6 spawn('cd /tmp; wget -q ftp://ftp.w1nr.net/usdbraw.gz; /usr/local/bin/spider/perl/create_usdb.pl /tmp/usdbraw.gz; rm -f /tmp/usdbraw.gz')
45 5 * * 6 run_cmd('load/usdb')

No seu caso apagava as linhas com os indicativos que não fazem parte da sua rede e acrescentaria,
0,10,20,30,40,50 * * * * start_connect('ct1ebq-9') unless connected('ct1ebq-9')

Ligue outros...

Agora vamos permitir a ligação de outros nodes ao nosso DX Cluster.

É muito simples, apenas tem de abrir a consola, no terminal ou por telnet ligando-se com o seu indicativo. Faça,

...e, agora crie o novo utilizador, por exemplo, de modo a que ct1ebq-9 se ligue também à sua estação,

set/password ct1ebq-9 [password]

[password] é uma string com letras, números ou outros caracteres aceites pelo sistema.

Ainda na consola, utilize o comando "spoof" para atribuir o nome e locator ao novo node,

spoof CT1EBQ-9 set/name Ricardo
spoof CT1EBQ-9 set/qra IM58GR

Para instruções do comando spoof faça "help spoof" na consola do DX Cluster. Para sair escreva B e Enter.
Por favor informe-me que pretende ligar-se ao cluster através de mim e envie-me,

o seu URL e o port do DX Cluster, habitualmente o 7300
o seu indicativo para o cluster, callsign e SSID
e a password que atribuiu a ct1ebq-9
o seu nome
o seu QRA locator

Muito grato ao Red, PE1RRR pela sua ajuda na compilação destes dados em como criar um cluster de DX. Hoje dia 4 de Maio de 2024, Red passou a silente key, descansa em paz meu amigo...

Esta foi a explicação que lhe permite saber como configurar tudo desde o princípio...
Mas se quiser fazer a instalação sem se preocupar com estas configurações pode utilizar o script descrito nesta página ou, para fazer a actualização de uma instalação existente siga este link...

Continua na parte 5

Referências:
https://dxheat.com/dxc/
http://www.dxcluster.org/main/usermanual_en.html
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...

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,

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,

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 node.ct1ebq.com 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,

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

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

[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,

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

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

Para parar o linbpq

Para verificar o estado do serviço,

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.