Compilare MorseRunner in Linux
MorseRunner under Linux!
Ovvero, come compilare il programma MorseRunner con Lazarus in Linux!
Di cosa si tratta
MorseRunner è un software famoso: è un vero e proprio sistema di training che simula l'attività in frequenza durante i contest...
Descritto in questo modo, asettico e senza enfasi, non ci dice nulla di più: in realtà si tratta di un sistema portentoso in grado di simulare, a seconda delle preferenze dell'utente, il rumore della frequenza e gli effetti propagativi (QRN, QRM e QSB) ed il comportamento degli utenti (ad esempio la presenza dei «LIDs» cioè quegli individui in grado di creare disturbo agli operatori e bestemmie da parte di questi che, probabilmente, faranno assaporar loro il caldo dell'inferno...)
Insomma un sistema talmente perfetto che, dopo averlo usato, ti chiedi se i nominativi collegati devi metterli a log o meno...
La mancanza di un MorseRunner per il sistema operativo Linux mi ha portato, in questi anni, a realizzare un sistema mio mediante Perl ed i programmi della shell di Linux disponibile per fare esercizio sotto Linux (cw, per intenderci).
Un grazie a Marco, IZ3GME
Qualche giorno fa, ho avuto modo di conoscere Marco IZ3GME in un incontro su Google Meet. Chiacchierando, ci siamo resi conto di essere entrambi appassionati di Linux e, il giorno seguente, mi ha postato in Telegram il link verso il sorgente di MorseRunner da compilare mediante Lazarus, l'IDE open source compatibile con il famoso «Delphi» di Borland.
Non mi son lasciato scappare l'occasione e, dopo una compilazione veloce sul portatile (assolutamente non funzionante per la mancanza di alcuni accorgimenti) mi son ripromesso di compilarlo sul PC desktop e verificare i passi in modo da poter ripetere anche altrove e senza difficoltà l'esperienza.
Prima operazione: installare Lazarus
Lazarus è, come detto, un ambiente di sviluppo libero ed open-source per compilare, in ambiente visuale, i programmi scritti in Pascal: tutte le distribuzioni ne rendono disponibili i pacchetti, compresa Debian.
Usando Q4OS, una distribuzione basata proprio su Debian, Lazarus è immediatamente disponibile col il solito comando «sudo apt install...». Tuttavia, non è la strada migliore, non fosse altro che il software installato è alla versione 2.0 mentre, in rete, il software è già alla versione 3.0.
Pertanto, l'ambiente «stock» della mia distribuzione, già in partenza forniva alcune «avvertenze» che era meglio non avere: ho proceduto alla sua definitiva disinstallazione ed installato quello più aggiornato scaricato da SourceForce.
Installare un IDE Lazarus perfettamente funzionante
Per installare un ambiente di Lazarus, in grado di compilare MorseRunner, procedere come di seguito spiegato.
Prima di tutto, se abbiamo installato Lazarus dai repository della nostra distribuzione ed, al suo avvio, abbiamo degli avvisi o, peggio, degli errori, rimuoverlo con i seguenti comandi:
sudo apt remove lazarus sudo apt autoremove
Il secondo comando «apt autoremove» elimina tutte le directory ed i pacchetti non più necessari in maniera automatica.
Successivamente, scaricare i tre file dell'installazione per la nostra distribuzione dal link di questo indirizzo.
I tre file, fpc, fpc-src e lazarus, in formato ".deb" vanno installati sul sistema ma solo dopo aver installato le necessarie dipendenze; nel mio caso, mancava solo la "libgtk2.0-dev" installata con il comando:
sudo apt install libgtk2.0-dev
e, successivamente:
sudo dpkg -i lazarus-project_3.0.0-0_amd64.deb fpc-laz_3.2.2-210709_amd64.deb fpc-src_3.2.2-210709_amd64.deb
Se dovessero mancare altre librerie, l'installazione non viene portata a termine; pertanto, installare ciò che manca e sistemare le dipendenze mancanti con il comando:
sudo apt --fix-broken install
A questo punto, Lazarus dovrebbe funzionare senza problemi: è possibile lanciare l'ambiente e verificare che non ci siano errori o strani avvisi.
Tuttavia, per compilare il nostro MorseRunner, è necessaria una ulteriore libreria che installeremo al volo prima di aprire il progetto:
sudo apt install portaudio19-dev
In caso di mancata installazione, all'avvio della compilazione questa si sarebbe bloccata con l'errore della mancanza della libreria "-lportaudio". Per sicurezza, lanciamo di nuovo Lazarus e verifichiamo l'assenza di avvisi o errori.
Clonare il sorgente di MorseRunner
MorseRunner è un programma open-source e freeware realizzato da Alex, VE3NEA; il programma è funzionante solo in ambiente windows ma esiste un porting in GitHub al seguente indirizzo:
https://github.com/fritzsche/MorseRunner
Il porting è opera di Tom, DJ1TF, anche lui appassionato telegrafista; è da questo indirizzo che cloneremo il sorgente usando il comando «git»;
git clone https://github.com/fritzsche/MorseRunner.git
Adesso, nella directory dove abbiamo lanciato il comando, abbiano una sub-directory chiamata "MorseRunner"; al suo interno ci sono tutti i file necessari per la compilazione.
Dopo aver avviato l'IDE di Lazarus, aprire il file del progetto, identificato dal suffisso «.lci»; quindi da "File - apri" carichiamo il file "MorseRunner.lpi".
A questo punto con "F9" o cliccando il comando della freccina in verde, avviamo il programma che sarà eseguito nell'ambiente di sviluppo.
Tuttavia, non funzionerà, in quanto fornirà la seguente eccezione:
"Il progetto MorseRunner ha sollevato un'eccezione di classe 'RunError(216)' con messaggio 'General Protection fault' nel file 'VCL/Custom.pas' alla riga 102"
Il problema potrebbe risiedere nel fatto che il programma gradisce un accesso a basso livello sul dispositivo audio... Una soluzione veloce che permette di eseguire il software senza accordare particolari permessi è fermare il servizio pulseaudio.
PulseAudio è un server audio multipiattaforma, open source, che fornisce una serie di funzionalità oltre all'interfaccia audio di basso livello ALSA, come, ad esempio, supporto di rete (modalità P2P e server) ed i controlli del volume per applicazione: purtroppo, fermando il servizio, non si ha il controllo del volume dell'audio generato.
Compiliamo, comunque, il software, usando il comando "Compila" disponibile nel menu "Esegui" o pigiare il tasto "Control+F9"; il programma sarà compilato nella sotto-directory "./lib/x86_64-linux/MorseRunner"; se prima non c'era, la dir viene creata.
In questa nuova directory c'è tutto il necessario per far partire il programma, ad eccezione del file di icona (utile per creare una voce nel menu KDE) e del file dei nominativi (il file "Master.dta"): copieremo questi file dalla dir principale di MorseRunner.
Fermare PulseAudio
Come anticipato, se non si ferma il servizio «pulseaudio» MorseRunner non funziona; gentilmente, Marco IZ3GME, mi ha fornito un file script che ferma il servizio, lancia MorseRunner e, al termine, riavvia il server audio; ecco il contenuto del file, da salvare nella dir del programma compilato e da usare per lanciarlo:
#!/usr/bin/bash systemctl --user stop pulseaudio.service pulseaudio.socket ./MorseRunner systemctl --user start pulseaudio.service pulseaudio.socket
A questo punto, possiamo chiudere l'ambiente di sviluppo, portarci nella dir del programma compilato e, dopo aver reso eseguibile il file di start (chiamato, ad esempio, «morserunner.sh»), lanciarlo con:
./morserunner.sh
Ora tutto dovrebbe funzionare, visualizzando la finestra del nostro programma testé compilato sotto Linux
Ho anche provato a spostare la directory in altri PC che sono sprovvisti dell'ambiente di sviluppo, ma con lo stesso sistema operativo a bordo (Q4OS Gemini): tutto funziona senza problemi, garantendo anche una certa «portabilità» del software.
Il file dei nominativi
Se dimentichiamo di copiare il file Master.dta, sarà usata una configurazione di default che prevede un solo nominativo: DJ1TF.
Per risolvere il problema, tornare alla directory del sorgente e copiare il file nella directory del programma compilato.
Il Master.dta è un file binario che contiene i nominativi radioamatoriali che saranno ascoltati durante il training; non ho trovato dettagli su come sia stato realizzato ma esiste una utility, medit.exe, che permette di crearlo partendo da una propria lista di call, importabili da file ADIF, Cabrillo o semplici TXT (un call per rigo, in questo caso).
Purtroppo, questa utility, è solo per sistemi windows e non ho trovato nulla per Linux.
Si tratta, comunque, di un file di appena 500 Kb, che si può far funzionare anche in una qualsiasi macchina virtuale windows: io avevo un'immagine di un vecchio «windows 2000» per VirtualBox che mi ha permesso di generare un nuovo file Master.dta di ben 100.000 nominativi partendo da una estrazione «ponderata» da un vecchio file callbook. «Ponderata» significa che ho cercato di popolare in maniera equa e casualmente il file in modo da evitare la prevalenza di nominativi di USA, Russia ed altri paesi in cui questo hobby è molto più diffuso che in altri...
Risolvere il problema del volume audio
Fermando il servizio «pulseaudio» si incorre in un inconveniente: non è possibile agire sul volume di MorseRunner, con rischi per il proprio udito, specie se si ascolta in cuffia. Inoltre, per non arrecare disturbo, è bene anche staccare le casse del PC... ma questo attacca/stacca e la mancanza della regolazione del volume audio non mi convinceva.
Alcuni anni fa, per altre esigenze, acquistai un preamplificatore per cuffie della Behringer: un ingresso e ben 4 uscite in un dispositivo piccolo e di solido metallo, alimentato a 12 volts; ho pensato di usarlo per pilotare le casse del PC ed almeno un paio di cuffie durante gli esercizi.
La soluzione ha funzionato alla grande: non solo posso regolare il volume a mio piacimento ma il piccolo preamplificatore migliora anche la resa audio della scheda sonora del mio PC di stazione.
Per evitare «fili passanti» l'ho incollato sul retro del monitor dello Shack con due pezzi di nastro biadesivo...
In conclusione
Il software «MorseRunner» è uno dei programmi che non possono mancare nella stazione di un appassionato di telegrafia e rappresenta il necessario esercizio se si desidera partecipare alle gare di «radiosport» come contest o stazioni attivatrici di diplomi.
La simulazione è perfetta e non manca nulla: pile-up, disturbi, stazioni che chiamano, QSB, QRM e QRN... insomma, sembra di essere realmente alle prese con una gara a volte anche molto affollata.
Inoltre, nella textarea centrale, viene riepilogato il log delle stazioni collegate in formato «Cabrillo» con una segnalazione se tutto è stato copiato correttamente: un riepilogo del punteggio raggiunto è la giusta «ciliegina sulla torta».
Fare 10/15 minuti al giorno di questo esercizio, magari alternando con altro training, diventa una incredibile esperienza formativa che consente un miglioramento delle proprie capacità di operatore radio.