Un Debian Linux minimale per SDR

Una SDR su un micro-PC: il Dell Wyse-3040

Il Dell Wyse-3040 ed i suoi accessori

Recentemente, grazie alla donazione di un collega OM della sezione ARI di Lecce, ho avuto modo di usare il piccolo PC prodotto da Dell.

Si tratta di un PC completo, su architettura ATOM di Intel e dotato di tutto quanto serve ma di pochissimo più grande della ben famosa (ed ormai introvabile...) Raspberry PI. Su di esso, già installato, c'era una mini distribuzione Linux: la Antix che funziona discretamente bene.

Il PC è provvisto di 4 Gb di RAM, diverse porte USB tra cui due USB 3.0, due Display Port ma solo 8 Gb di memoria disco... Davvero pochini per installare una distribuzione completa: pertanto, ho deciso di installare il minimo possibile e solo il software necessario per attivare GNU Radio e GQRX, i programmi che trasformeranno questo PC in una sofisticata SDR, Software Defined Radio. Voglio precisare che tutto il software esiste per qualsiasi sistema Linux e che è possibile usare un PC come centro multimediale per ricevere la radio in FM, il DAB, il digitale terrestre, registrare audio e video, modificare e rimontare i video, modificare audio in diversi formati: quindi niente di particolarmente speciale se non le dimensioni lillipuziane del Wyse-3040 e della sua ridotta capacità disco.

Il codino con la conversione da Display Port a VGA

Quindi, non potendo contare sulla possibilità di compilare i programmi necessari e le tantissime dipendenze (ed anche per ridurre il tempo necessario...) ho pensato di far ricorso a Debian 11 Bullseye e il notevole parco software già pronto, installandolo su uno strato minimo di software indispensabile per il funzionamento del sistema di base.

Purtroppo, negli ultimi tempi, anche Linux è diventato "ciccione" ed un sistema desktop completo ha bisogno di oltre 7 Gb, cui si aggiungerebbero un altre centinaia di mega di librerie per GNU Radio... sugli 8 Gb di cui è provvisto il PC in mio possesso, comincerebbero a stare davvero stretti e ad... esondare.

In questa pagina fornisco i passi necessari per installare un sistema Debian minimale (appena 1.6 Gb, compreso l'ambiente desktop "FluxBox") cui aggiungerò un altro Giga e mezzo per il sistema GQRX: in pratica, tutto sta in meno di 3.2 Gb!

In effetti, la comodità di disporre di un piccolissimo PC che faccia da radioricevitore da tenere in stazione, affiancando le radio "vere" e da accendere alla bisogna, magari con il minimo indispensabile dei dispositivi di input (ad esempio tastiera e mouse integrati e di piccole dimensioni) ed un piccolo monitor (anche da 8 o 10 pollici...) potrebbe davvero essere impagabile...

Il Dell Wyse-3040 e le connessioni sul retro

Installazione ridotta all'osso

Ho scaricato l'immagine ISO del cosiddetto "NetInst": debian-11.7.0-amd64-netinst.iso.

Ho proceduto normalmente, sino alla scelta dell'ambiente desktop, che non ho installato.

Al momento della scelta dell'ambiente, infatti, bisogna lasciare spuntato solo "utilità di sistema standard" e non spuntare neanche "server SSH" (in pratica togliere le prime due spunte che l'installatore mette di default): in questo modo saranno aggiunti solo 119 nuovi pacchetti software.

All'avvio, viene mostrato il prompt. Il sistema, a questo punto, è di circa 1.400 mega.

Dopo l'avvio, dalla shell di Linux, installare xorg, fluxbox, pulseaudio e gqrx:

  # apt install xorg
  # apt install fluxbox
  # apt install pulseaudio
  # apt install gqrx-srd

Installare anche il mixer "pavucontrol" che usa pulseudio e permette di verificare che la parte audio sia funzionante:

  # apt install pavucontrol

Il comando precedente può anche essere impartito su un unico rigo:

  # apt install xorg fluxbox pulseaudio gqrx-srd pavucontrol

A questo punto, saranno scaricati 376 Mb di pacchetti software con una ulteriore occupazione di spazio disco di 1.603 Megabytes

Dopo il completamento dell'installazione dei pacchetti, avviare X in ambiente utente con il comando:

  $ startx

Mentre, come Root, lanciare lo start di Pulseaudio:

  # /usr/bin/start-pulseaudio-x11

Se GQRX non si avvia e lamenta che non si connette a pulseaudio, startare, come utente, pulseaudio con il seguente comando (-D demonizza l'istanza):

  $ pulseaudio -D

verificare che il collegamento col server audio sia attivo, lanciando "pavucontrol":

  $ pavucontrol

a questo punto, avviare "gqrx":

  $ gqrx

che mostrerà la finestra di avvio per trovare il dispositivo USB per la ricezione.

Con questi pacchetti software e le loro dipendenze, il sistema occuperà 3.2 Gb di dati Ammicco

Modifichiamo il menu di FluxBox

FluxBox, il gestore del desktop leggerissimo che ho scelto per non appesantire con inutili orpelli il sistema, è, ovviamente, configurabile per ogni utente.

I file di configurazione risiedono, nella home directory dei singoli utenti in una dir nascosta ".fluxbox"; in essa, ci sono alcuni file: quello delegato alle voci del menu è ".fluxbox/menu" che, però, contiene il riferimento al file pricipale che, a questo punto, varrà per ogni utente:

$ cat .fluxbox/menu
[begin] (fluxbox)
[include] (/etc/X11/fluxbox/fluixbox-menu)
[end]

Ho preferito, quindi, copiare in locale il file "/etc/X11/fluxbox/fluixbox-menu" ed aggiungere le due voci che mi interessavano (gqrx e pavucontrol) in due sezioni apposite del menu; ho, quindi, acceduto ad una shell, copiato il file al posto di "menu" modificandolo come segue:

$ cd .fluxbox
$ cp /etc/X11/fluxbox/fluixbox-menu ./menu
$ vi ./menu

[submenu] (Radio) {}
   [exec] (gqrx) {gqrx} <>
[end]
[submenu] (Audio) {}
   [exec] (pavucontrol) {pavucontrol} <>
[end]

Le voci vanno aggiunte nel punto che più aggrada; il risultato sarà quello che segue:

Il menu modificato di FluxBox

Rammento che il menu è raggiungibile cliccando con il pulsante destro del mouse sul desktop.

Qualche nota sulla sintassi di questo menu

Il menu principale deve iniziare con un tag [begin] e terminare con un tag [end], e ogni tag deve essere su un solo rigo. Ogni riga di menu prevede quattro campi posti su un solo rigo. Essi sono:

  [tag] (label) {command} <'icon'>

Il campo <'icon'> è sempre facoltativo. Se specificato, l'icona sarà ridimensionata e visualizzata nel menu accanto all'etichetta di testo dell'elemento. Ogni icona deve essere nel formato grafico ".xpm" o ".png". Molte icone sono disponibili in /usr/share/icon...

Inoltre, qualsiasi riga che inizia con # o ! è considerato un commento ed è quindi ignorato da Fluxbox.

Un editor di testi leggerissimo

Per le modifiche al file è sempre disponibile il buon ed immancabile "vi". Tuttavia, il suo uso può essere piuttosto ostico, pertanto una buona soluzione può essere quella di installare un editor di testi alternativo che sia, però, facile da usare e leggero. Anzi, leggerissimo...

La scelta è caduta su Featherpad, un editor testuale davvero facile da usare e che richiede meno di 5 mega di spazio (in effetti usa le librerie QT, molte delle quali sono già installate al seguito di gqrx); si può procedere all'installazione con il solito:

  # apt install featherpad

Da aggiungere nel menu come appena illustrato, magari al posto del semplicissimo e spartano "Xedit" fornito di default.

Problemi con il Dell Wyse 3040

Ovviamente, quanto descritto sinora sono i test di installazione fatti in macchina virtuale: riportare tutto questo sul piccolo Dell Wise-3040 mi ha fatto sperimentare alcuni problemi non da poco... Ma andiamo con ordine.

Driver proprietari

Il piccolo sistema PC comprende hardware che necessita di driver proprietari e non installati di default da Debian: il primo, notificato in fase di installazione, è l'interfaccia di rete: ad un certo punto dell'installazione, infatti, viene richiesto il file "rtl8168h-2.fw" come driver della sua ethernet.

Il file è compreso nel pacchetto "firmware-realtek_20210315-3_all.deb": ho salvato il file ed il driver (estratto dal .deb) nella root di una chiavetta USB ed è stato caricato senza problemi... In realtà non so se abbia usato il file ".deb" o preso quello da me estratto: comunque, metterli entrambi (li ho salvati sulla mia Ventoy...) non è un problema e mi restano per future installazioni.

Problemi audio

Dopo aver Installato tutto quanto serve al sistema, GQRX parte ma non si sente nulla dall'uscita cuffia (l'unica uscita audio, in realtà...)

Anche in questo caso bisogna installare i driver proprietari di INTEL che sono compresi in un pacchetto da installare con il solito:

   # apt install firmware-intel-sound

poi basta un riavvio e l'audio funziona senza problemi.

Problema al primo avvio del sistema

Ma il problema più grave è certamente l'avvio del sistema dal suo piccolo disco interno: nonostante i vari tentativi non c'è proprio stato verso di fargli capire che Linux era installato e che avrebbe potuto usarlo per partire... Unico modo per avviare, usare un disco di boot...

Infatti ho usatto per avviarlo una immagine ISO di Slackware (ho usato una minimal qualsiasi che avevo sul mio Ventoy USB) che trova il disco con installato Debian e lo avvia senza problemi.

Ho anche provato a modificare il BIOS (le impostazioni di sistema sono di solito bloccate con la password di default: Fireport) ma, stranamente, le impostazioni non vengono salvate e ritornano al path di default (un path tutto in maiuscolo che rappresenta il "Fallback"). Comportamento molto strano, in verità.

Fortunatamente, cercando su internet, il problema è noto e si può risolvere: basta crere una copia del file di avvio di Grub nel path di fallback (quello che viene salvato quando il sistema non trova il file di partenza, che, comunque, parrebbe non essere modificabile...).

Nel mio caso è bastato creare il path:

   /boot/efi/EFI/EFI/BOOT

ma, per evitare problemi, ho creato anche:

   /boot/efi/EFI/BOOT

e qui copiare tutto il contenuto di /boot/efi/EFI/ (creata in fase di installazione), avendo cura di copiare il file "grubx64.efi" come "BOOTX64.EFI":

    mkdir -p /boot/efi/EFI/EFI/BOOT
    cd /boot/efi/EFI/EFI/BOOT
    cp /boot/efi/EFI/debian .
    cp grubx64.efi BOOTX64.EFI

Ma quale è il file di avvio di Linux?

Il dubbio che potrebbe venire è: "Ma quale file copiare in /EFI/BOOT/BOOTX64.EFI?" Potrebbero, infatti, esserci due file: bootx64.efi e shimx64.efi... che differenze ci sono tra i due? Sorpresa

In genere, EFI/ubuntu/grubx64.efi su EFI System Partition (ESP) è il binario GRUB e EFI/ubuntu/shimx64.efi è il binario per shim.

shim, un bootloader UEFI di prima fase, cioè una semplice applicazione EFI che, quando viene eseguita, tenta di aprire ed eseguire un'altra applicazione. Inizialmente tenterà di eseguire questa operazione tramite le chiamate standard EFI LoadImage() e StartImage().

Pertanto, shimx64.efi è programma relativamente semplice che fornisce un modo per avviare i computer che hanno Secure Boot attivo.

Su un computer di questo tipo, infatti, una versione non firmata di GRUB non può essere avviata ed usare la firma di GRUB con le chiavi di Microsoft è impossibile: quindi shim colma questa mancanza e aggiunge i propri strumenti di sicurezza paralleli a quelli di Secure Boot.

In pratica, shim si registra con il firmware e poi lancia il programma chiamato grubx64.efi nella directory da cui è stato lanciato, quindi su un computer senza Secure Boot (come un Mac), lanciare shimx64.efi è come lanciare grubx64.efi. Su un computer con Secure Boot attivo, l'avvio di shimx64.efi dovrebbe comportare l'avvio di GRUB, mentre l'avvio diretto di grubx64.efi probabilmente non sarebbe in grado di funzionare.

E se volessi aggiornare il software installato?

Su Debianm spesso usata come desktop, gli aggiornamenti sono automatici e segnalato da un apposito programma che avvisa l'utente della disponibilità di aggiornamenti ed esegue la loro installazione.

Con una realease minimale tutto questo non avviene ma è possibile ugualmente, da shell di Linux, procedere all'aggiornamewnto.

Pertanto, basta collegarsi al prompt come "root" ed eseguire il seguente comando che provvederà ad eseguire eventuali aggiornamenti:

  # apt upgrade -y

il "-y" fa in modo che il programma non chieda alcuna conferma.

Mangiando vien l'appetito...

E se ci installassi un sistema per ricevere il DAB (Digital Audio Broadcasting)? Ammicco

Non vi nascondo che l'idea mi balenava in mente da qualche tempo, anche a causa della scarsa disponibilità di ricevutori decenti ad un prezzo... decente.

Da una rapida ricerca in rete ho potuto scoprire il programma che mi serviva: welle-io.

Si tratta di un bel progetto di Radio DAB e DAB+ per Linux che si appoggia, ovviamente, alla USB Dongle che uso io. Ho installato in pochi secondi con il solito:

   # apt install welle-io

poi ho lanciato da console il comando "welle-io" e, dopo qualche minuto necessario alla scansione degli slot digitali disponibili, ho avuto la lista delle stazioni, tra cui Radio Skylab, la radio con cui collaboro.

Insomma, ho messo su un ottimo ricevitore radio analogico / digitale usando un piccolissimo PC ed una recente distribuzione ridotta davvero all'osso...

Il video del risultato ottenuto

Non potendo dedicare un intero video alla totale installazione (che potrebbe essere oggetto di un filmato successivo...), ho registrato un breve video del risultato ottentuo, che ho pubblicato sul mio canale YouTube:


Buona visione e... fatemi sapere che ne pensate Sorriso

Sudo o non sudo, questo e` il problema... Valid XHTML 1.0 Transitional