🛠 Affichage numérique : kiosk double HDMI 4Kp60 sur CM4
Objetivos
La CM4 es la placa Pi con más interfaces de visualización: doble HDMI 2.0 hasta 4Kp60, 2 × MIPI DSI, 2 × CSI y DPI paralelo. Este tutorial construye un verdadero cliente de señalización digital (digital signage): dos pantallas en modo kiosco, reproducción de vídeo 4K acelerada (decodificación HEVC 4Kp60 por hardware del BCM2711), sesión que se reinicia sola — el caso de uso al que apuntaba el artículo de lanzamiento (« over half of the seven million Raspberry Pi units we sell each year go into industrial and commercial applications »).
Hardware
- 1 × CM4 de 4 u 8 GB sobre IO Board (la RAM es importante para dos flujos 4K)
- 2 × pantallas HDMI 2.0 + cables certificados Ultra High Speed (un cable dudoso retrocede a 1080p60)
- Fuente de alimentación de 12 V en el conector de barril de la IO Board; se recomienda refrigeración pasiva o activa (el módulo se calienta más que un Pi 4B a igual carga, limitación térmica a 85 °C)
- Raspberry Pi OS de 64 bits (Bookworm, Wayland/labwc por defecto)
Código completo
# 1) Forcer 4Kp60 sur les deux sorties (config.txt)
sudo tee -a /boot/firmware/config.txt >/dev/null <<'EOF'
hdmi_force_hotplug:0=1
hdmi_force_hotplug:1=1
hdmi_group:0=1
hdmi_mode:0=97
hdmi_group:1=1
hdmi_mode:1=97
EOF
sudo reboot
# 2) Kiosque double écran sous labwc (Wayland)
sudo apt install -y labwc chromium cage
mkdir -p ~/.config/labwc
cat > ~/.config/labwc/autostart <<'EOF'
chromium --kiosk --noerrdialogs --disable-session-crashed-bubble \
--window-position=0,0 --window-size=3840,2160 http://signage.local/ &
EOF
# 3) Session systemd qui relance le kiosque et l'écran de veille vidéo
sudo systemctl --user enable --now labwc
# 4) Test de décodage matériel 4K
mpv --hwdec=vaapi --loop http://tests.local/uhd_2160p_4k_hevc_10bit.mp4
Verificación esperada
wlr-randr (o xrandr --query bajo X11) muestra HDMI-0 y HDMI-1 conectados a 3840×2160 a 60 Hz; la página del kiosco ocupa las dos pantallas; durante el vídeo 4K, vcgencmd measure_temp sube pero vcgencmd get_throttled permanece en 0x0 con un disipador; tras kill de un chromium, el kiosco vuelve solo.
Errores frecuentes
- Cables HDMI no certificados: la negociación retrocede a 4Kp30 o 1080p; probar intercambiando los dos cables.
- Limitación térmica en caja cerrada: el módulo « may run warmer than the Raspberry Pi 4 Model B » (menos cobre, sin carcasas disipadoras) — prever un disipador.
- Forzar hotplug sin pantalla al arrancar: útil en campo, pero oculta un cable realmente desconectado durante el diagnóstico.
- Olvidar
vcgencmd get_throttleden la monitorización: el bit de subvoltaje aparece antes de los fallos visibles.
Otros tutoriales para esta placa
- Premier démarrage d'un CM4 Lite depuis la microSD de l'IO Board
- GPIO du CM4 : comprendre les banks 1,8 V / 3,3 V avant de câbler
- Basculer le Wi-Fi du CM4 sur l'antenne externe U.FL (dtparam=ant2)
- Bootloader EEPROM du CM4 : maîtriser BOOT_ORDER via usbboot
- Ajouter une RTC au CM4 (PCF8523 sur I2C1 via dt-blob)
- Son sur CM4 : DAC I2S/PCM (PCM5102) sans prise jack
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash