🛠 Serveur multimédia HDMI et GPU Mali
Objetivos
Transformar el ODROID-XU4 en un centro multimedia HDMI: salida HDMI 1.4a Tipo-A hasta 1080p con CEC, y audio ÚNICAMENTE por HDMI (el conector jack de 3,5 mm del XU3 ha sido eliminado — de lo contrario, usar un módulo de sonido USB). La GPU ARM Mali-T628 MP6 ofrece OpenGL ES 3.0 y OpenCL 1.2 bajo la imagen del fabricante — con una particularidad: se enumera como DOS dispositivos OpenCL (4 núcleos + 2 núcleos).
Hardware
- ODROID-XU4 + imagen del fabricante Ubuntu Hardkernel (blobs Mali/OpenCL) o Armbian desktop
- Televisor/pantalla HDMI, cable HDMI; SSD o llave USB 3.0 para la biblioteca multimedia
- Opcional: carcasa CloudShell para un NAS multimedia
Código completo
/* 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;
}
Reproducción de vídeo de prueba: mpv --vo=gpu /media/film.mkv ; sonido: verificar la tarjeta samsung,odroid-xu3-audio (salida HDMI) con pactl list short sinks.
Verificación esperada
./mali_devices muestra dos dispositivos «Mali-T628 (OpenCL 1.2)». El vídeo 1080p se muestra en el televisor con el sonido a través del mismo cable HDMI; el CEC permite apagar la TV desde la placa.
Errores frecuentes
- Buscar una toma de auriculares de 3,5 mm: no existe en el XU4, únicamente HDMI (o S/PDIF mediante módulo USB).
- Escribir código OpenCL que asuma una sola GPU: gestionar la división de 4+2 núcleos del T628 MP6.
- Esperar una aceleración GPU completa bajo mainline: los blobs GLES/OpenCL están en la imagen del fabricante; el estado de Panfrost para el T628 no está confirmado.
- Imágenes 4K: la salida HDMI del XU4 se detiene en 1080p.
- Los antiguos drivers del fabricante 3.10/4.4 tenían errores de GPU (pantalla negra al salir de pantalla completa): mantenerse en las imágenes recientes.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash