Troubleshooting iGPU Intel HD 2000
Problèmes courants et solutions pour le passthrough iGPU Intel vers LXC et Jellyfin.
Problème 1 : Devices DRI Absents dans LXC
Symptôme
Diagnostic
# 1. Vérifier config appliquée
cat /etc/pve/lxc/100.conf | grep -A4 "GPU"
# 2. Vérifier devices sur host
ls -la /dev/dri/
# 3. Logs conteneur
journalctl -u pve-container@100 | grep -i dri | tail -20
Solutions
Solution 1 : Vérifier syntaxe configuration
# Éditer config (attention espaces)
nano /etc/pve/lxc/100.conf
# Lignes doivent être exactement :
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri/card0 dev/dri/card0 none bind,optional,create=file
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
Solution 2 : Forcer arrêt/démarrage
# Pas juste reboot, mais stop/start
pct stop 100
sleep 5
pct start 100
# Vérifier
pct exec 100 -- ls -la /dev/dri/
Solution 3 : Vérifier permissions host
# Sur host Proxmox
ls -la /dev/dri/
chmod 660 /dev/dri/card0
chmod 660 /dev/dri/renderD128
# Vérifier groupes
ls -l /dev/dri/
Solution 4 : Créer devices manuellement
# Si mount.entry ne crée pas devices
pct exec 100 -- mkdir -p /dev/dri
pct exec 100 -- mknod /dev/dri/card0 c 226 0
pct exec 100 -- mknod /dev/dri/renderD128 c 226 128
pct exec 100 -- chown root:video /dev/dri/card0
pct exec 100 -- chown root:render /dev/dri/renderD128
pct exec 100 -- chmod 660 /dev/dri/*
Problème 2 : VA-API Driver Non Trouvé
Symptôme
vainfo --display drm --device /dev/dri/renderD128
libva error: vaGetDriverNameByIndex() failed with unknown libva error
vaInitialize failed with error code -1 (unknown libva error),exit
Diagnostic
# Vérifier paquets installés
dpkg -l | grep -E "i965|intel-media|vainfo"
# Vérifier librairies
ldconfig -p | grep va
# Vérifier device accessible
ls -la /dev/dri/renderD128
Solutions
Solution 1 : Installer tous drivers Intel
# Dans LXC 100
apt update
apt install -y \
intel-media-va-driver \
i965-va-driver \
intel-media-va-driver-non-free \
vainfo \
mesa-va-drivers \
libva2 \
libva-drm2
# Forcer rechargement librairies
ldconfig
# Tester
vainfo --display drm --device /dev/dri/renderD128
Solution 2 : Forcer driver i965
# Définir variable environnement
export LIBVA_DRIVER_NAME=i965
# Tester
vainfo --display drm --device /dev/dri/renderD128
# Si fonctionne, ajouter à docker-compose.yml
# environment:
# - LIBVA_DRIVER_NAME=i965
Solution 3 : Vérifier permissions device
# User doit avoir accès au device
groups # Doit inclure video et/ou render
# Ajouter user aux groupes
usermod -aG video,render $USER
# Ou tester en root
sudo vainfo --display drm --device /dev/dri/renderD128
Problème 3 : Jellyfin Ne Détecte Pas iGPU
Symptôme
Jellyfin Dashboard → Playback → Hardware acceleration: "No devices found"
Diagnostic
# 1. Vérifier devices dans conteneur Jellyfin
docker exec jellyfin ls -la /dev/dri/
# 2. Vérifier permissions user
docker exec jellyfin id jellyfin
docker exec jellyfin groups jellyfin
# 3. Logs Jellyfin
docker logs jellyfin 2>&1 | grep -i "hardware\|vaapi\|render" | tail -20
Solutions
Solution 1 : Vérifier docker-compose.yml
cd /opt/docker
cat docker-compose.yml | grep -A15 jellyfin
# Doit contenir :
# devices:
# - /dev/dri/renderD128:/dev/dri/renderD128
# - /dev/dri/card0:/dev/dri/card0
# group_add:
# - "104" # GID render
Solution 2 : Adapter GID render
# Vérifier GID render dans LXC
stat -c "%g" /dev/dri/renderD128
# Modifier docker-compose.yml avec bon GID
nano docker-compose.yml
# group_add:
# - "105" # Si GID différent
# Recréer conteneur
docker compose up -d --force-recreate jellyfin
Solution 3 : Vérifier user Jellyfin
# User doit faire partie groupe render dans conteneur
docker exec jellyfin groups jellyfin
# Si pas présent, vérifier group_add
# Ou ajouter manuellement
docker exec jellyfin usermod -aG render jellyfin
# Redémarrer
docker compose restart jellyfin
Solution 4 : Tester VA-API dans conteneur
# Installer vainfo dans conteneur
docker exec jellyfin apt update
docker exec jellyfin apt install -y vainfo
# Tester détection
docker exec jellyfin vainfo --display drm --device /dev/dri/renderD128
Problème 4 : Transcoding Retombe sur CPU
Symptôme
Jellyfin Activity montre transcoding sans "(hw)", charge CPU 80%+
Diagnostic
# 1. Logs Jellyfin temps réel
docker logs -f jellyfin 2>&1 | grep -E "transcode|hardware|vaapi"
# 2. Vérifier codec source
# Dashboard → Activity → détails vidéo
# 3. Chercher erreurs
docker logs jellyfin 2>&1 | grep -i error | tail -20
Causes Fréquentes
| Cause | Détection | Solution |
|---|---|---|
| Codec non supporté | Source HEVC/VP9/AV1 | Normal, iGPU incompatible |
| Résolution >1080p | Source 4K | Limiter à 1080p ou CPU |
| Profil H.264 10-bit | Hi10P anime | Normal, CPU fallback |
| Config Jellyfin incorrecte | Pas "(hw)" sur H.264 1080p | Vérifier paramètres |
| Driver crash | Logs erreur VA-API | Redémarrer Jellyfin |
Solutions
Solution 1 : Vérifier configuration Jellyfin
Dashboard → Playback → Hardware acceleration:
- Device :
/dev/dri/renderD128 - Enable hardware decoding : ✅ H.264, MPEG-2, VC-1
- Enable hardware encoding : ✅ H.264 uniquement
- Enable HEVC encoding : ❌ Désactivé
Solution 2 : Tester avec vidéo compatible
# Télécharger sample H.264 1080p 8-bit
cd /tmp
wget https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/1080/Big_Buck_Bunny_1080_10s_1MB.mp4
# Copier dans media Jellyfin
cp Big_Buck_Bunny_1080_10s_1MB.mp4 /mnt/storage/media/test/
# Scanner bibliothèque, tester transcoding
Solution 3 : Forcer transcoding via client
- Paramètres lecture → Qualité
- Limiter à 720p 4Mbps
- Vérifier Activity pour "(hw)"
Solution 4 : Vérifier logs spécifiques
# Chercher raison fallback CPU
docker logs jellyfin 2>&1 | grep -B5 -A5 "software"
# Messages typiques :
# "Codec not supported by hardware" → Normal si HEVC
# "Resolution exceeds capability" → Normal si >1080p
# "Failed to initialize VA-API" → Problème driver
Problème 5 : Performance Dégradée (<2x)
Symptôme
Transcoding avec "(hw)" mais speed 1.5-2x seulement (vs 3-4x attendu)
Diagnostic
# 1. Vérifier fréquence GPU
cat /sys/kernel/debug/dri/0/i915_frequency_info | grep -E "cur|min|max"
# 2. Vérifier throttling thermique
dmesg | grep -i "thermal\|throttl"
# 3. Charge système
top -bn1
# 4. I/O disque
iostat -x 1 5
Solutions
Solution 1 : Vérifier throttling CPU/GPU
# Installer lm-sensors
apt install lm-sensors
sensors
# Températures normales :
# CPU : <75°C
# Si >85°C : nettoyer ventilateurs, renouveler pâte thermique
Solution 2 : Vérifier RAM disponible
Solution 3 : Vérifier I/O disque
Solution 4 : Augmenter ressources LXC temporairement
# Tester avec plus de CPU
pct set 100 --cores 6
# Tester transcoding
# Si amélioration, ajuster allocation
Solution 5 : Réduire simultaneous transcodes
Dashboard → Playback : - Max simultaneous transcodes : 1 (au lieu de 2) - Throttle transcodes : Activé
Problème 6 : Kernel Panic / System Freeze
Symptôme
Système se fige lors de transcoding iGPU, nécessite hard reboot
Diagnostic
# Après reboot, vérifier logs
journalctl -k -b -1 | grep -E "i915|gpu|drm"
# Chercher :
# - "GPU hang"
# - "Kernel panic"
# - "reset engine"
Solutions
Solution 1 : Désactiver power management iGPU
# Éditer options module i915
nano /etc/modprobe.d/i915.conf
# Ajouter
options i915 enable_rc6=0 enable_dc=0
# Régénérer initramfs
update-initramfs -u
# Reboot
reboot
Solution 2 : Downgrade kernel Proxmox
# Lister kernels disponibles
dpkg -l | grep pve-kernel
# Boot sur ancien kernel stable
# Grub : Advanced options → kernel 6.5 ou inférieur
# Tester stabilité
Solution 3 : Limiter fréquence GPU
# Forcer fréquence minimale
echo 850 > /sys/kernel/debug/dri/0/i915_max_freq
# Si stable, rendre permanent via script init
Solution 4 : Revenir à transcoding CPU
# Désactiver passthrough iGPU
nano /etc/pve/lxc/100.conf
# Commenter lignes GPU
pct reboot 100
# Jellyfin : Hardware acceleration = None
Vérifications Préventives
Script santé iGPU quotidien :
cat > /usr/local/bin/igpu-health-check << 'EOF'
#!/bin/bash
LOG="/var/log/igpu-health.log"
echo "=== $(date) ===" >> $LOG
# 1. Device accessible
if ! ls /dev/dri/renderD128 &>/dev/null; then
echo "ERROR: renderD128 missing" >> $LOG
exit 1
fi
# 2. Module i915 chargé
if ! lsmod | grep -q i915; then
echo "ERROR: i915 module not loaded" >> $LOG
exit 1
fi
# 3. GPU fréquence
FREQ=$(cat /sys/kernel/debug/dri/0/i915_frequency_info | grep "cur freq" | awk '{print $3}')
echo "GPU freq: $FREQ MHz" >> $LOG
# 4. LXC devices
if ! pct exec 100 -- test -e /dev/dri/renderD128; then
echo "ERROR: iGPU not in LXC 100" >> $LOG
exit 1
fi
echo "OK: All checks passed" >> $LOG
exit 0
EOF
chmod +x /usr/local/bin/igpu-health-check
# Cron quotidien
echo "0 6 * * * /usr/local/bin/igpu-health-check || logger -t igpu 'Health check failed'" | crontab -
Ressources
- Jellyfin Intel QuickSync Guide
- Intel i915 Kernel Documentation
- VA-API Troubleshooting
- Proxmox Forum : iGPU Passthrough
Dernière mise à jour : 27 janvier 2026