Linux

Lançar uma aplicação após o boot, no Linux Debian 11 (bullseye)

Imaginemos um script escrito em Python, chamado o_meu_script.py e guardado na pasta /home/utilizador/scripts.
Imaginemos agora que pretendemos que este script seja lançado automaticamente, após o arranque do computador (Linux Debian 11). Para tal, pode-se recorrer ao gestor de serviços ‘systemd‘ da seguinte forma (no Terminal):

Ir para a pasta onde se encontra o ficheiro ‘o_meu_programa.py’:
utilizador@hostname:~$ cd scripts

Tornar o ficheiro executável:
utilizador@hostname:~/scripts$ chmod +x o_meu_programa.py

Criar um ficheiro de serviço para o gestor ‘systemd’, com o mesmo nome que o do script, usado um editor de texto (e.g., ‘nano’ ou ‘vim’):
utilizador@hostname:~/scripts$ sudo nano /etc/systemd/system/o_meu_programa.service

Inserir o código abaixo, alterando os parâmetros necessários, de acordo com a sua realidade.

[unit]
Description=Descrição do meu script

[Service]
ExecStart=/usr/bin/python3 /home/utilizador/scripts/o_meu_programa.py
WorkingDirectory=/home/utilizador/scripts
Restart=always
User=utilizador

[Install]
WantedBy=multi-user.target

Após guardar o ficheiro de serviço, carregar o novo ficheiro de serviço, no gestor de serviços ‘systemd’:
utilizador@hostname:~/scripts$ sudo systemctl daemon-reload

Permitir que o ficheiro de serviço seja executado após o boot do computador:
utilizador@hostname:~/scripts$ sudo systemctl enable o_meu_programa.service

Lançar o serviço:
utilizador@hostname:~/scripts$ sudo systemctl start o_meu_programa.service

Verificar que o serviço foi lançado e encontra-se a correr normalmente:
utilizador@hostname:~/scripts$ sudo systemctl status o_meu_programa.service

Et voilà le travail! 🙂

MSK144, FT8… using an IC-9700 and WSJT-X

It’s Perseids time! Let’s try some Meteor Scatter contacts, but first, let’s configure the latest version of WSJT-X (2.4.0) on a Linux computer along with an ICOM IC-9700 transceiver…

The IC-9700 is connected to the computer via its USB (Universal Serial Bus, not Upper Side Band, OK?) port, using a regular USB-A/B cable (printer-like). I recommend some cable that has ferrites on each end of it, for eventual EMI reduction.

Assuming that the transceiver has its factory default settings or has been recently resetted
(MENU > SET > Others > Reset > Partial Reset), the following instructions prepare the transceiver for remote control through the computer:

  • [MENU]
    • [SET]
      • [Connectors]
          • [MOD Input]
            • USB MOD Level: 35%
            • DATA MOD: USB
          • [CI-V]
            • CI-V Baud Rate: 19200
            • CI-V USB Port: Link to [REMOTE]
            • CI-V DATA Baud Rate: 19200

On the computer, once the WSJT-X software has been succesfully installed, follow the screenshots below tha illustrate the configurations used in the Radio and Audio tabs of the Settings… configuration tool, available under the menu File.

The Serial Port and the Sound Card settings on your system may be different than the ones shown here… The  system used here runs under Debian 10 Buster.

Once the system is ready to operate and in my case, having pointed the antenna to North-Earth at an elevation of about 45 degrees, after about 24 hours of operation, the results are nice to see on the map of the website pskreporter.info, as shown below (operating in MSK144 from Locator IN51).

As a final note, once the system is completely configured as above, it works also for any digital mode available on WSJT-X…

73 de CT7AFR.

Resolvendo um problema de áudio no GNU Radio

Estava a preparar um trabalho com GNU Radio e um dongle RTL-SDR (antes, tinha tentado com um ADALM-Pluto), implementando um popularíssimo esquema (abaixo) para desmodular estações de rádio comercial (FM), e o áudio à saída do meu sistema estava aos soluços…

RTL-SDR_FM-RX

Ainda pensei tratar-se de um erro de cálculo na parametrização das diversas operações de Interpolação e Decimação pela meio da cadeia, mas não era isto. Pensei também tratar-se de uma limitação na frequência de amostragem da minha placa de som; porém alterando o valor desta e procedendo aos devidos ajustes no resto da cadeia, o problema mantinha-se.

Foi então que notei que na janela de Terminal do GNU Radio, dependendo de alguns parâmetros (decimação/interpolação), apareciam sequências de caracteres OOOOO ou aUaUaUaUaU… Uma pesquisa pela Internet induziu-me no sentido de procurar o erro na relação entre o GNU Radio e a placa de som. Os aU referem-se a “audio Underrun“. Portanto, o problema tinha um cheiro a buffer com falta de dados…

Parti então para uma busca minuciosa pelos ficheiros do GNU Radio até descobrir um em particular e com o qual consegui resolver o problema: gr-audio-alsa.conf. No meu sistema (Debian 10 – buster), este ficheiro encontra-se em /etc/gnuradio/conf.d/.

[audio_alsa]
default_input_device = default
default_output_device = default
# period time in seconds
period_time = 0.050
# total buffering = period_time * nperiods
nperiods = 8
verbose = false

Neste ficheiro, após duas iterações de tentativa-erro, resolvi o problema, aumentando o valor das variáveis period_time e nperiods (originalmente estavam iguais a 0.010 e 4, respectivamente).

Resolvido este assunto, deixo aqui o meu apotnmento para a eventualidade de dar jeito a alguém que esteja a passar pelo mesmo azar.

VirtualBox sobre Debian 10 (buster) não encontra dispositivos USB

Linux sobre Uindouze sobre Linux

Sou adepto do Linux desde os tempos do Red Hat 7.1… Mais tarde, adoptei o Debian e nunca mais quis outra coisa. Despedi-me definitivamente do Uindouze na versão 8.1 (e já era tarde quando a Mocosoft abandonou o suporte ao XP).

Coisas da vida profissional, para ensinar a usar GCC a uma turma de adeptos do Uindouze, tive de escrever um pequeno Guia Prático de instalação do Cygwin. Para redigir este Guia com conhecimento de causa, precisei de recorrer ao Uindouze. E para evitar conspurcar o meu querido PC com tal “sistema operativo” (cof cof…), instalei a versão 10 desta coisa, numa máquina virtual, criada para o efeito, recorrendo ao Oracle VirtualBox.

Correu tudo bem (até a instalação do Uindouze), mas quando precisei de ler uns ficheiros de uma pendrive USB, esta não aparecia no Uindouze… Não aparecia porque o Debian não deixava o VirtualBox aceder à referida pen. Mesmo depois de ter instalado o VirtualBox Extension Pack e activado o Controlador USB (neste caso, o controlador USB 2.0 OHCI+EHCI). Sem este Extension Pack, o VirtualBox apenas vê os portos USB como sendo USB 1.1 (OHCI).

Para resolver tal problema, foi necessário adicionar o utilizador ao grupo vboxusers. Para tal e como SuperUser (root):

$ usermod -aG vboxusers emmanuel

Obviamente, no comando acima, substitua-se ‘emmanuel’ pelo nome do utilizador que pretende usar o VirtualBox e aceder aos portos USB.

Finalmente, foi necessário reiniciar o computador para que as alterações produzissem efeito. Bem ao jeito do Uindouze, quem diria? 🙂

Falta de som no Morse Runner em Linux?

Morse Runner é uma excelente aplicação freeware para o treino de escuta/descodificação de telegrafia/CW. É da autoria do colega radioamador Alex Shovkoplyas (VE3NEA) e está disponível para download em http://www.dxatlas.com/MorseRunner/.

Esta aplicação foi desenvolvida para “Uindouze”… No entanto, é possível executá-la em Linux, recorrendo ao emulador Wine (WineHQ). Ainda assim, quem quiser, poderá portar o código fonte desta aplicação para Linux, já que o mesmo está disponível no GitHub.

Lançar o Morse Runner em Linux, com recurso ao Wine, pode levantar um problema (foi o que me aconteceu e não fui o único): o Morse Runner não tem ou fica sem som… Acontece que o som do Wine é “pescado” no pulseaudio que costuma ser a opção de “default” do Wine, quando este é instalado.

O objectivo deste artigo é alterar a confuração do Wine, para que em vez de usar o pulseaudio, passe a usar o Alsa. Para tal, comece por abrir uma janela do Terminal e execute o comando winetricks.

$ winetricks

Em seguida, siga os passos, tal como aparecem nas imagens abaixo:

Depois de clicar em OK na janela ilustrada na imagem acima, sair do winetricks, lançar o Morse Runner e começar a treinar! 🙂

Antes de fechar este artigo, fica a referência de que o conteúdo deste artigo foi baseado no Linux Debian 10 (buster) com o wine-4.0 (Debian 4.0-2) e o Morse Runner 1.67.

73 de CT7AFR.

Touchpad tapping, em Debian Buster (10)

HP Folio 9470m

O portátil é um velhinho HP EliteBook Folio 9470m, recondicionado mas 100% operacional e eficiente. Um dia, ao substituir a versão 9 do Debian pela versão 10, o touchpad deixou de reconhecer os cliques através de tapping (ou double-tapping). Uma busca na Internet, rapidamente retornou a informação necessária para reactivar esta útil funcionalidade.

Curiosamente, descobri na ‘net, muitos relatos que afirmam que o driver libinput funciona melhor que o da Synaptics. Não me dei ao trabalho de fazer um benchmark para confirmar; tinha alguma urgência em repor o touchpad a funcionar como deve ser, para quando não me dá jeito usar um rato externo (e.g. durante viagens).

Assez parlé! Ao trabalho!

Primeiro, deve-se assegurar que o driver da Synaptics (xserver-xorg-input-synaptics) já não se encontra no sistema. Para o remover (através do Terminal):

$ apt remove xserver-xorg-input-synaptics

Instalar (se já não está instalado) o driver libinput:

$ apt install xserver-xorg-input-libput

Criar o directório xorg.conf.d em /etc/X11

$ mkdir /etc/X11/xorg.conf.d

Criar o ficheiro 40-libinput.conf no directório recém criado:

$ nano /etc/X11/xorg.conf.d/40-libinput.conf

Neste ficheiro, inserir o seguinte script:

Section “InputClass”
Identifier “libinput touchpad catchall”
MatchIsTouchpad “on”
MatchDevicePath “/dev/input/event*”
Driver “libinput”
Option “Tapping” “on”
EndSection

CTRL+X e Yes para gravar e sair do editor de texto

O último passo: Reiniciar o Display Manager (no meu caso, o lightdm):

$ systemctl restart lightdm

Et voilà!