🛠 Serveur multimédia : Kodi, décodage 4K et accès GPU en conteneur
Objectifs
Transformer le Pi 4B en media center : le VideoCore VI a 500 MHz decode le H.265 4Kp60 et le H.264 1080p60, la sortie double micro-HDMI affiche jusqu'en 4K, et le pilote open source Mesa V3D (Vulkan 1.2 conforme depuis 2022) permet aussi d'exposer le GPU a des conteneurs. Vous installerez Kodi et lancerez un conteneur avec acces GPU.
Materiel
- Raspberry Pi 4B (4 GB ou plus recommande), alimentation 5.1 V 3 A
- Television avec micro-HDMI ou adaptateur HDMI de qualite (6 Gbps requis pour 4Kp60)
- Disque USB 3.0 pour la bibliotheque ; sudo apt install docker.io
Code complet
# Option A - media center dedie : flasher LibreELEC (Kodi) avec Raspberry Pi Imager
# Verification : Lecture 4K HEVC fluide, menu en 60 i/s sur les deux ports micro-HDMI.
# Option B - Kodi/Docker avec GPU sur Raspberry Pi OS Bookworm :
sudo usermod -aG video "$USER"
ls -l /dev/dri # rendre visible card0 (V3D)
docker run -d --name kodi --restart unless-stopped \
--privileged --net host \
-v /dev:/dev -v /mnt/media:/data \
linuxserver/kodi
# Controles :
vcgencmd version # firmware à jour
vcgencmd measure_temp # < 70 degres en lecture 4K
Verification attendue
En lecture d'un fichier 4K H.265, le CPU reste sous 30 % (tout est decompile par le GPU), l'affichage sort en 3840x2160 60 Hz sur un port, le second peut afficher le bureau en 1080p. Dans le conteneur, ls /dev/dri montre card0 : le GPU est visible.
Erreurs frequentes
- Adaptateur micro-HDMI bas de gamme : le cas classique du pas d'image, il faut du 6 Gbps certifie.
- Oublier /dev/dri dans le conteneur ou le groupe video : le GPU reste invisible.
- Surchauffe en lecture 4K prolongee : ventiler, la limite est 85 degres.
- Budget USB depasse : 1.2 A max pour les peripheriques, disque 2.5 pouce alimente requis.
- Attendre le 4Kp60 sur les DEUX ports : le double affichage se limite a 4Kp30 chacun.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython