Raspberry PI 4: come attivare l’accelerazione hardware su Chromium
Accellerazione hardware su Raspberry PI 4 con Chromium
Raspberry Pi. Questa piccola schedina ha avuto un’evoluzione davvero incredibile e ne ha fatta davvero tanta di strada da quando era un ambizioso progetto per aiutare e avvicinare al mondo dell’infomratica i bambini meno fortunati. L’ultima versione è “equipaggiata” con il sistema operativo rinnovato (Raspberry OS, ex Raspbian), un processore quad-core da 1.5 Ghz e, a scelta, dotato di RAM daDDR3 da 1GB, 4GB e 8GB. Ma veniamo a noi. In questo articolo:

Introduzione
Come dicevamo, Raspberry PI ha fatto passi da gigante: le vendite, le performance e l’apprezzamento generale complessivo per questo mini computer sono state e sono in costante crescita ovunque.
Insieme al suo cugino prossimo, Arduino, Raspberry PI ha dato vita a “orde di makers” intraprendenti, curiosi e fantasiosi, spesso molto social e pronti a testare e condividere di tutto: idee, codici, tutorial…impressionante e positivo vedere che tutto questo spesso non ha niente a che vedere con l’onnipresente mercificazione ad ogni costo e il desiderio di monetizzare. Certo nei vari gruppi e nei vari forum non mancano gli avvoltoi, gli opportunisti, i maleducati e gli arroganti, ma forse di questo parleremo un’altra volta. Adesso concentriamoci su come e perché conviene abilitare l’accelerazione video.
Perchè abilitare l'accelerazione hardware
Con il diffondersi di piattaforme di streaming come Netflix, Amazon prime, Disney+ e con la didattica a distanza (#DAD) introdotta a causa dell’emergenza COVID in ogni famiglia è cresciuta l’esigenza di computer ad uso non solo “casalingo” ma quasi personale: ogni membro della famiglia, infatti, necessità di un PC per esigenze ludiche, scolastiche e/o lavorative; non si parla più solo di consultazione posta elettronica e scrittura di documenti: la multimedialità è ovunque e reclama a gran voce risorse e potenza di calcolo!
In questo contesto il raspberry pi è probabilmente il compromesso migliore, la soluzione che, tra le disponibilità del mercato, offre risparmio e funzionalità.
Inoltre che acquista un raspberry pi può contare un gran numero di disponibili appassionati e su un’ottima assistenza on-line, soprattutto nei forum e nei gruppi facebook. Ma perchè abilitare l’accelerazione hardware?
L’accelerazione hardware non è attiva di default nel raspberry 4 e i processori in dotazione, seppur performanti nel loro specifico ambito di applicazione, fanno i conti con un carico di lavoro un po’ troppo elevato e non sempre sono adeguatamente raffreddati (anche perchè sono pensati e progettati per lavorare senza ventole).
Quindi, se la destinazione d’uso prevede video-chat, video-conferenze o media streaming, è bene non affidarsi solo alla CPU e spostare il carico di lavoro sull’unità di elaborazione grafica (GPU): un piccolo grande aiuto che migliorerà la fluidità dei video sullo schermo, ridurrà i lag (LAtency Gap), abbasserà la temperatura del processore e garantirà (almeno nominalmente) una maggiore durata della scheda.
Installare le librerire GL (Fake KMS) OpenGL
Vediamo allora come installare le librerie GL, necessarie per abilitare l’accelerazione hardware video su raspberry pi 4B usando il browser di default: Chromium.
Innanzitutto la prima operazione da eseguire è l’aggiornamento del sistema:
$sudo apt update && sudo apt upgrade
successivamente diamo il comando per l’installazione dei pacchetti delle librerie richieste: libgles2-mesa, libgles2-mesa-dev, xorg-dev
sudo apt install libgles2-mesa libgles2-mesa-dev xorg-dev
A questo punto non ci resta che abilitarle e attivarle.
Abilitare e attivare l'accelerazione 3D Video
Per abilitare e attivare l’accelerazione hardware e migliorare lo streaming video su raspberry pi dobbiamo innanzitutto abilitare i driver 3D video (detti Fake KMS) e settare la memoria dedicata a 128 MB (o verificare che sia impostata a questo valore). Sempre dalla shell, digitiamo:
sudo raspi-config
e nella schermata che si apre nel nostro terminale seguiamo questi step:
- Advanced Options > GL Driver
- GL (Fake KMS) OpenGL desktop driver with fake KMS
- Performance Options > Memory Split > GPU Memory (…selezionare e impostare a 128)
I vari “Invio”, <ok>, <finish> sulle varie opzioni e infine reboot!
una volta riavviato possiamo testare il successo delle operazioni appena svolte:
$cat /proc/device-tree/soc/firmwarekms@7e600000/status
e
$cat /proc/device-tree/v3dbus/v3d@7ec04000/status
che, se tutto è andato bene, restituiranno un bel “okay”.
Ci siamo quasi:
per abilitare le operazioni appena svolte su Chromium, procediamo così:
- Apriamo il browser di default (click in alto a sinistra sull’icona del “mondo stilizzato”)
- digitiamo nella barra degli indirizzi chrome://flags e modifichiamo e impostiamo le seguenti 3 voci su “Enabled”
Override software rendering list
GPU rasterization
Out of process rasterization
- possiamo vedere le modifiche a queste impostazioni all’indirizzo chrome://gpu
- …e possiamo verificare se i video sono ora decodificati usando l’hardware all’indirizzo chrome://media-internals durante la riproduzione
(MmalVideoDecoder è la libreria predefinita di Broadcom utilizzata per la decodifica hardware H.264 su Raspberry PI)
Disabilitare xcompmgr composition manager
Occasionalmente potreste notare ancora qualche “strappo” sullo schermo: è un problema noto con il nome di “screen tearing” e ho dovuto indagare un po’ per capire come risolvere il problema. La soluzione è arrivata, come spesso succede, da un post in questo forum sul sito raspberry.org:
$sudo mv /etc/xdg/autostart/xcompmgr.desktop /home/pi/backup.xcompmgr.desktop
$sudo reboot
oppure, in alternativa:
$sudo raspi-config
- Advanced Options > Compositor > xcompmgr composition manager (selezionare “No“)
Riavviare il sistema con
$sudo reboot
La maggior parte dei problemi dovrebbero essere risolti e dopo quest’operazione gli strappi dovrebbero scomparire del tutto o diminuire drasticamente.
Tip: possibili problemi con HD Camera - ENOSPC error
Dopo aver attivato l’accelerazione hardware in Chromium può capitare di utilizzare il comando raspistill mentre si guarda un video su youtube
$raspistill -o /tmp/schermo.jpg
e ricevere quest'errore:
mmal: mmal_vc_component_enable: failed to enable component: ENOSPC
mmal: camera component couldn't be enabled
mmal: main: Failed to create camera component
mmal: Failed to run camera app. Please check for firmware updates
per risolvere questo problema basta modificare la memoria GPU precedentemente impostata a 128 MB e portarla a 144 MB:
$sudo raspi-config
Advanced Options > A3 Memory Split
Click su <Ok> ed è fatta!

