Desktop widget para o raspberry pi com Conky

Fosse qual fosse o sistema operativo sempre gostei de ter no desktop a informação do sistema em background… um must have!

Comece por instalar a aplicação,

$ sudo apt-get install conky -y

Faça o download do ficheiro de configuração,

$ wget -O /home/pi/.conkyrc https://raw.githubusercontent.com/novaspirit/rpi_conky/master/rpi3_conkyrc

na linha de comandos anterior substitua “pi” por “pi-star” se instalou sobre o pi-star, ver pi-star +GUI, packet e aplicações desktop (http://oitaven.pt/ct1ebq/2020/04/16/pi-star-gui-packet-e-aplicacoes-desktop/)

Note que, esta aplicação utiliza recursos diversos entre eles o comando “top” e usa cerca de 12% de um dos core.
Para reduzir o impacto no aquecimento e consumo, depois de instalado edite o ficheiro “.conkyrc” e modifique a linha “update_interval 0.5” de acordo com as suas preferências…

A utilização do CPU é linear,

0.5s - 12% CPU
1s - 6% CPU
2s - 3% CPU

Para iniciar agora a aplicação no boot do sistema temos de criar 2 ficheiros, o primeiro para atrasar o script de shell durante 4 segundos, o segundo para permitir que o lxdesktop inicie o script de shell,

Crie o ficheiro,

$ sudo nano /usr/bin/conky.sh

Copie o seguinte conteúdo, grave e saia,

!/bin/sh
(sleep 4s && conky) &
exit 0

Crie agora o ficheiro de chamada,

$ sudo nano /etc/xdg/autostart/conky.desktop

Copie o seguinte conteúdo, grave e saia,

[Desktop Entry]
Name=conky
Type=Application
Exec=sh /usr/bin/conky.sh
Terminal=false
Comment=system monitoring tool.
Categories=Utility;

Faça reboot no sistema et voilà!

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

Como criar Menus no Gnome para o raspberry pi

Um tópico pouco documentado e que por isso merece algum destaque.
Instale a aplicação para gestão de menus,

$ sudo apt-get install alacarte

Mesmo com esta grande ajuda prepare-se para ter problemas imprevistos, de atalhos que desaparecem, alteração da ordem dos menus e atalhos… enfim, algo que a comunidade raspberry/debian terá de dar atenção no futuro.

Vamos criar uma pasta no menu de aplicações chamado “Digital Modes”…
Os menus são criados em /etc/xdg/menus/applications-merged/ e, obedecem à estrutura seguinte,

$ sudo nano /etc/xdg/menus/applications-merged/digitalmodes.menu
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN" "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">
<Menu>
  <Name>Digital</Name>
  <Menu>
    <Name>Digital Modes</Name>
    <Directory>DigitalModes.directory</Directory>
    <Include>
        <Category>DigitalModes</Category>
    </Include>
  </Menu> <!-- End DigitalModes -->
</Menu>

Depois terá de ir a /usr/share/desktop-directories/ e criar um ficheiro com as traduções, localização do icon em /usr/share/pixmaps/

$ sudo nano /usr/share/desktop-directories/DigitalModes.directory
[Desktop Entry]
Name[en_CA]=Digital Modes
Name[en_GB]=Digital Modes
Name[es]=Digital Modes
Name[pt]=Digital Modes
Name[pt_BR]=Digital Modes
Name=Digital Modes
Comment[en_CA]=Digital Communication Modes
Comment[en_GB]=Digital Communication Modes
Comment[es]=Digital Communication Modes
Comment[pt]=Digital Communication Modes
Comment[pt_BR]=Digital Communication Modes
Comment=Digital Communication Modes
TRANSLATORS: Don't translate this text (this is icon name)
Icon=digitalmodes.png
Type=Directory

A seguir é necessário editar cada um dos atalhos que se encontram no menu e identificá-los numa destas directorias,

/usr/share/applications

/usr/local/share/applications

~/.local/share/applications

Neste exemplo, editamos o atalho do programa GridTracker, que ficará dentro da pasta “Digital Modes”,

sudo nano /usr/share/applications/Pi4-GridTracker.desktop
[Desktop Entry]
Type=Application
Name=GridTracker
Comment=GridTracker, a WSJT-X Companion
Icon=/usr/share/pixmaps/gridtracker.png
Exec=/usr/local/bin/GridTracker/GridTracker --disable-accelerated-2d-canvas --num-raster-threads=2
Terminal=false
Categories=DigitalModes;

No final actualize o sistema de menus com o comando,

$ lxpanelctl restart

Referências:
https://www.youtube.com/watch?v=ScsjRujpsMY
http://cagewebdev.com/raspberry-pi-adding-start-menu-items/
https://wiki.lxde.org/en/Main_Menu

Monitor de WSPR com raspberry pi + dongle RTL-SDR

Uma ideia simples e que permitirá receber spots de WSPR (Weak Signal Propagation Reporter Network) e registá-los na rede, utilizando apenas um dongle USB, o RTL-SDR v3 RTL2832U, um raspberry pi 2 B+ ou superior, em linha de comandos.

O modo WSPR utiliza uma largura de banda de 6Hz numa transmissão durante 110,6s. A duração de cada tom é de 0,6827s com um desvio máximo de 1Hz. Permite assim a escuta de sinais até -30dB!
Esta técnica pode ser utilizada também em testes de comunicação EME sem grandes antenas ou recursos especiais…

Depois de ter construído o kit da qrp-labs Ultimate3S para o envio de beacons em “whisper” fiquei com a sensação de não estar a contribuir para a comunidade também com a recepção e registo de spots na http://wsprnet.org

Para isso era necessário uma solução que se revelasse barata, sem a necessidade de um receptor por cada banda, ou a utilização de equipamento caro e redundante aos rádios de HF que por cá tenho. Teria de ser um sistema autónomo!

Finalmente encontrei algumas páginas a falarem sobre o tema e experimentei. Apesar de só ouvir sinais fortes, fica a ideia… Pode ser que alguns de vós façam algumas experiências e consigamos este projecto, do qual me limitei a traduzir do nosso colega VK6FLAB, Onno Benschop, e testar.

Não me vou perder em detalhes, de como instalar o sistema operativo, configurar acessos por SSH ou a rede wireless, fi-lo noutros posts mais antigos e há muita documentação online.

Não demora mais que 15 minutos a configurar tudo…

Instalar o software WSPR

Segue o conjunto de instruções que deve executar,

$ cd ~
$ sudo apt-get -y install build-essential cmake libfftw3-dev curl libcurl4-gnutls-dev ntp libusb-1.0-0-dev librtlsdr-dev git
$ git clone https://github.com/Guenael/rtlsdr-wsprd
$ cd rtlsdr-wsprd/
$ make
$ sudo cp rtlsdr_wsprd /usr/local/bin

Configurar o dongle RTL-SDR

Se já tiver ligado o dongle ao raspberry, desligue-o e aguarde uns 10s.
Execute as seguintes instruções na linha de comandos,

$ cd ~
$ cat > blacklist-rtl.con
blacklist rtl8192cu
blacklist rtl8xxxu
blacklist dvb_usb_rtl28xxu
blacklist rtl2832
blacklist rtl2830
<CTRL+D>
$ sudo mv blacklist-rtl.conf /etc/modprobe.d/

Ligue agora o seu dongle RTL-SDR…

Primeiros testes

Para reduzir consumos desnecessários, supondo que tem acesso ao raspberry por SSH, desligue o port HDMI, evita também algum ruído fundamental eliminar na escuta de sinais fracos,

$ /opt/vc/bin/tvservice -o

Execute a aplicação rtlsdr-wsprd substituindo na expressão seguinte o seu indicativo e o QRA locator com 4 ou 6 digitos,

$ rtlsdr_wsprd -f 14.0956M -c [indicativo] -l [locator] -d 2 -S

Os parametros possíveis são,

-f dial frequency [(,k,M) Hz], check http://wsprnet.org/ for freq.
-c your callsign (12 chars max)
-l your locator grid (6 chars max)

Receiver extra options:
-g gain [0-49] (default: 29)
-a auto gain (default: off)
-o frequency offset (default: 0)
-p crystal correction factor (ppm) (default: 0)
-u upconverter (default: 0, example: 125M)
-d direct dampling [0,1,2] (default: 0, 1 for I input, 2 for Q input)
-n max iterations (default: 0 = infinite loop)
-i device index (in case of multiple receivers, default: 0)

Decoder extra options:
-H use the hash table (could caught signal 11 on RPi)
-Q quick mode, doesn't dig deep for weak signals
-S single pass mode, no subtraction (same as original wsprd)

Nota final: é muito importante que o seu raspberry pi tenha a data e hora rigorosamente certas, pois o protocolo WSPR começa ao minuto exacto e prolonga-se por cerca de 2 minutos mais.

Se pretender pode automatizar o processo. Onno criou 3 simples scripts para o fazer. Se fizer login com o user “pi” devem ser guardados nas directorias indicadas no nome de cada um deles.

Cada frequência é lida aleatoriamente e escutada por 15 minutos. Pode eliminar frequências para as quais não tem antena, ou utilizar uma antena activa de banda larga.

/home/pi/bin/start-wsprd

#!/bin/bash

# If you're running this somewhere else and logging it, knowing the time is helpful
date -R

callsign=«your_callsign»
location=«your_locator»

# set a default frequency if we don't specify one, 20m WSPR

if [ $# -eq 0 ] ; then
  freq=14.0956
else
  freq=$1
fi

# bash does not have floating point math, this if statement checks to see if
# our frequency is less than 28.8 MHz, so we have to use the "Q" stream, otherwise
# we can use the default for anything above 28.8 MHz
if [ "${freq}" = "$(echo -e "${freq}\n28.8" | sort -g | head -1)" ] ; then
  stream=2
else
  stream=0
fi
rtlsdr_wsprd -f ${freq}M -c ${callsign} -l ${location} -S -a 1 -d ${stream}
/home/pi/bin/monitor-wspr

#!/bin/bash
duration=15m
killsignal=SIGINT

while true ; do
  sudo /usr/bin/sntp -s ntp02.oal.ul.pt
  shuf /home/pi/frequencies | while read freq ; do
  timeout -s ${killsignal} ${duration} /home/pi/bin/start-wsprd ${freq}
  done
done
/home/pi/frequencies

0.136
0.4742
1.8366
3.5686
5.2872
5.3647
7.0386
10.1387
14.0956
18.1046
21.0946
24.9246
28.1246
50.293
70.091
144.489
432.3
1296.5

Referências:
https://projects.vk6flab.com/projects/rtl-sdr-projects/wspr-monitoring-node
https://lms.onnocenter.or.id/wiki/index.php/WSPR:_pakai_raspberrypi_dan_RTL2832U
https://libraries.io/github/Guenael/rtlsdr-wsprd
http://wsprnet.org/drupal/node/6215

Solução de problemas com a placa de som CM108

Por vezes não é fácil atribuir o(s) parametros “plughw:x,0” às placas de som, sobretudo se tiver mais do que uma…

Para identificar cada uma das placas, faça o seguinte,
insira a primeira no port USB e digite,

$ aplay -l ; "L" minúsculo

e deve obter como resposta,

**** List of PLAYBACK Hardware Devices ****
card 0: Device [USB Audio Device], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0

Insira a segunda e escreva de novo,

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Device [USB Audio Device], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 1: Device_1 [USB Audio Device], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0

…e por aí em diante.

Ao escrever o parametro “ADEVICE plughw:x,y” no ficheiro de configuração do direwolf, deve substituir x e y de acordo com a identificação das placas no sistema, por exemplo,

x - card 0
y - device 0

Ficará então “ADEVICE plughw:0,0” para a primeira placa. E,

x - card 1
y - device 0

“ADEVICE plughw:1,0” para a segunda placa.

Para testar cada placa substitua x e y na expressão,

$ speaker-test -c2 -D plughw:1,0 ; x,y

CTRL + C para parar o test.

Referências
https://learn.adafruit.com/usb-audio-cards-with-a-raspberry-pi/testing-audio

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