🛠 Affichage numérique : kiosk double HDMI 4Kp60 sur CM4
Objectifs
Le CM4 est la carte Pi avec le plus d'interfaces d'affichage : double HDMI 2.0 jusqu'à 4Kp60, 2 × MIPI DSI, 2 × CSI et DPI parallèle. Ce tuto construit un vrai client d'affichage numérique (digital signage) : deux écrans en mode kiosque, lecture vidéo 4K accélérée (décodage HEVC 4Kp60 matériel du BCM2711), session qui redémarre toute seule — le cas d'usage que l'article de lancement visait (« over half of the seven million Raspberry Pi units we sell each year go into industrial and commercial applications »).
Matériel
- 1 × CM4 4 ou 8 Go sur IO Board (la RAM compte pour deux flux 4K)
- 2 × écrans HDMI 2.0 + câbles certifiés Ultra High Speed (un câble douteux retombe en 1080p60)
- Alim 12 V sur le barillet de l'IO Board ; refroidissement passif ou actif conseillé (le module chauffe plus qu'un Pi 4B à charge égale, throttle à 85 °C)
- Raspberry Pi OS 64 bits (Bookworm, Wayland/labwc par défaut)
Code complet
# 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
Vérification attendue
wlr-randr (ou xrandr --query sous X11) montre HDMI-0 et HDMI-1 connectés en 3840×2160 à 60 Hz ; la page kiosque occupe les deux écrans ; pendant la vidéo 4K, vcgencmd measure_temp monte mais vcgencmd get_throttled reste à 0x0 avec un dissipateur ; après kill d'un chromium, le kiosque revient tout seul.
Erreurs fréquentes
- Câbles HDMI non certifiés : négociation retombée en 4Kp30 ou 1080p ; tester en permutant les deux câbles.
- Thermal throttling en boîte fermée : le module « may run warmer than the Raspberry Pi 4 Model B » (moins de cuivre, pas de coques dissipatrices) — prévoir un refroidisseur.
- Forcer hotplug sans écran au boot : utile en parc, mais masque un vrai câble débranché au diagnostic.
- Oublier
vcgencmd get_throttleddans le monitoring : le bit de sous-tension apparaît avant les plantages visibles.
Autres tutoriels pour cette carte
- 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
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash