La recente scheda Raspberry Pi 5 è la prima in assoluto della serie a supportare l’interfaccia PCIe (PCI Express). In un altro articolo abbiamo visto come avviare Raspberry Pi da un’unità SSD PCIe NVMe. Anziché ricorrere alla classica scheda SD, impostando un SSD PCIe come unità di avvio, si può godere di prestazioni notevolmente migliorate.
La domanda a questo punto è la seguente: si possono collegare al single-board computer Raspberry Pi 5 altre tipologie di schede di espansione PCIe? Se sì, quali sono le alternative sulle quali si può fare affidamento?
L’ottimo Jeff Geerling ha sviluppato un sito Web che funge da raccolta ragionata per le schede PCIe che gli utenti possessori di Raspberry Pi possono eventualmente collegare e utilizzare: nella lista si trovano schede grafiche, schede USB, schede di rete Ethernet e adattatori WiFi, dispositivi multimediali e audio, supporti SATA e soluzioni per lo storage dei dati, switch di vario genere, oltre ai già citati moduli M.2 NVMe.
Come base si può utilizzare sempre un adattatore come Geekworm X1001 in accoppiata con una scheda di espansione come questa. Inserendo quest’ultima nello slot M.2 di X1001, si ha a disposizione una porta PCIe x4, utile per collegare altri dispositivi alla Raspberry Pi 5.
Alcuni dispositivi PCIe (ad esempio le schede di espansione USB) sono riconosciuti, senza necessità di particolari modifiche. Alcune di esse necessitano semplicemente di una fonte di alimentazione ausiliaria. Ciò significa che è necessario collegare la scheda PCIe con una presa elettrica a muro. Digitando il comando lspci
nella finestra del terminale della Raspberry Pi, è possibile verificare che il dispositivo PCIe sia correttamente rilevato e riconosciuto.
Per quanto riguarda le schede grafiche, il nostro consiglio è dare un’occhiata alla sezione GPU sul sito di Geerling e seguire le indicazioni riportate. In alcuni casi, le schede semplicemente funzionano, in altri è necessario ricompilare il kernel Linux e installare il driver corretto.
Compilazione del kernel per le schede PCIe che lo richiedono
Non tutte le schede PCIe esterne, dicevamo, sono direttamente riconosciute dalla Raspberry Pi 5. In questi casi la procedura da seguire per la compilazione del kernel è riportata nella documentazione “Building the kernel locally“. Riassumiamo di seguito i comandi da usare, ad esempio per configurare una scheda LAN:
sudo apt install git bc bison flex libssl-dev make
git clone --depth=1 https://github.com/raspberrypi/linux
cd linux
KERNEL=kernel_2712
make bcm2712_defconfig
Gli ultimi tre comandi si riferiscono appunto alle schede Raspberry Pi 5 a 64 bit. Infine, il comando make menuconfig
avvia un’interfaccia testuale per la configurazione avanzata del kernel. Questo passo consente all’utente di personalizzare le opzioni del kernel in base alle proprie esigenze.
Il passo seguente consiste nell’individuare e abilitare i moduli kernel relativi alla scheda PCIe che si desidera utilizzate con la propria Raspberry Pi 5.
Digitando infine sudo nano .config
, si deve andare alla ricerca della variabile CONFIG_LOCALVERSION
aggiungendo una stringa identificativa al nome già presente (esempio: CONFIG_LOCALVERSION="-v8-16k-ilsoftware"
).
Il comando seguente permette di compilare e installare il nuovo kernel:
make -j4 Image.gz modules dtbs
sudo make modules_install
I comandi successivi sono parte del processo di installazione del kernel personalizzato. Essi assicurano che i file necessari siano posizionati correttamente nella directory di avvio del firmware per consentire all’hardware di eseguire il kernel personalizzato al successivo riavvio del sistema:
sudo cp arch/arm64/boot/dts/broadcom/*.dtb /boot/firmware/
sudo cp arch/arm64/boot/dts/overlays/*.dtb* /boot/firmware/overlays/
sudo cp arch/arm64/boot/dts/overlays/README /boot/firmware/overlays/
sudo cp arch/arm64/boot/Image.gz /boot/firmware/$KERNEL.img
A questo punto, si può riavviare la scheda Raspberry Pi (sudo reboot
) quindi controllare che il nome del kernel sia quello personalizzato (esempio: "-v8-16k-ilsoftware"
), impartendo il comando uname -a
.
Inserendo nell’apposito slot la scheda PCIe appena configurata, questa dovrebbe funzionare senza problemi.
Se, quando si ha a che fare con le schede di più grandi dimensioni, l’installazione su una piccola Raspberry Pi possa sembrare un po’ un “accrocchio“, la possibilità di abilitare il supporto di potenti schede PCIe esterne apre a infinite possibilità, per chi ha la pazienza, l’interesse e la volontà di coglierle.
Le immagini pubblicate nell’articolo sono tratte dal sito ufficiale di Raspberry Pi.