🛠 Serveur multimédia HDMI et GPU Mali
Objectifs
Transformer l'ODROID-XU4 en média-center HDMI : sortie HDMI 1.4a Type-A jusqu'en 1080p avec CEC, et audio UNIQUEMENT par HDMI (le jack 3,5 mm de l'XU3 a été supprimé — sinon module son USB). Le GPU ARM Mali-T628 MP6 apporte OpenGL ES 3.0 et OpenCL 1,2 sous image vendor — avec une particularité : il s'énumère comme DEUX périphériques OpenCL (4 cœurs + 2 cœurs).
Matériel
- ODROID-XU4 + image vendor Ubuntu Hardkernel (blobs Mali/OpenCL) ou Armbian desktop
- Téléviseur/écran HDMI, câble HDMI ; SSD ou clé USB 3.0 pour la médiathèque
- Optionnel : boîtier CloudShell pour un NAS multimédia
Code complet
/* mali_devices.c — enumerer les GPU Mali (image vendor XU4)
* Build : gcc mali_devices.c -lOpenCL -o mali_devices */
#define CL_USE_DEPRECATED_OPENCL_1_2_APIS
#include <CL/cl.h>
#include <stdio.h>
int main(void) {
cl_platform_id p[8]; cl_uint np;
clGetPlatformIDs(8, p, &np);
for (cl_uint i = 0; i < np; i++) {
cl_device_id d[8]; cl_uint nd;
clGetDeviceIDs(p[i], CL_DEVICE_TYPE_ALL, 8, d, &nd);
for (cl_uint j = 0; j < nd; j++) {
char name[64], ver[64];
clGetDeviceInfo(d[j], CL_DEVICE_NAME, sizeof name, name, 0);
clGetDeviceInfo(d[j], CL_DEVICE_VERSION, sizeof ver, ver, 0);
printf("plateforme %u / periph. %u: %s (%s)\n", i, j, name, ver);
/* Attendu : « Mali-T628 (OpenCL 1.2) » deux fois (4+2 cœurs) */
}
}
return 0;
}
Lecture vidéo de test : mpv --vo=gpu /media/film.mkv ; son : vérifier la carte samsung,odroid-xu3-audio (sortie HDMI) avec pactl list short sinks.
Vérification attendue
./mali_devices affiche deux périphériques « Mali-T628 (OpenCL 1.2) ». La vidéo 1080p sort sur le téléviseur avec le son par le même câble HDMI ; le CEC permet d'éteindre la TV depuis la carte.
Erreurs fréquentes
- Chercher une prise casque 3,5 mm : elle n'existe pas sur le XU4, uniquement HDMI (ou S/PDIF via module USB).
- Écrire du code OpenCL qui suppose un seul GPU : gérer la scission 4+2 cœurs du T628 MP6.
- Attendre une accélération GPU complète sous mainline : les blobs GLES/OpenCL sont sur l'image vendor ; l'état de Panfrost pour le T628 n'est pas confirmé.
- Images 4K : la sortie HDMI du XU4 s'arrête à 1080p.
- Les anciens drivers vendor 3.10/4.4 avaient des bugs GPU (écran noir en quittant le plein écran) : rester sur les images récentes.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash