Jellyfin LXC GPU Passthrough & Hardware Acceleration#
What Was Established#
Successfully configured Intel UHD Graphics 630 GPU passthrough to a Jellyfin LXC container on Proxmox for hardware-accelerated transcoding via Intel QuickSync (QSV).
Key Decisions#
- GPU Passthrough Method: LXC container-level GPU device mapping (not full VM passthrough)
- Hardware Acceleration: Intel QuickSync (QSV) selected over VAAPI for Jellyfin’s native support
- Monitoring Constraints: Accepted that LXC container restrictions prevent full GPU monitoring tools (dmesg, intel_gpu_top) from functioning; validated functionality through actual transcoding tests instead
Current Configuration#
Host GPU Details#
- GPU: Intel Corporation CoffeeLake-S GT2 [UHD Graphics 630]
- PCI Address: 00:02.0
- Driver: i915 (loaded)
- Related Modules: drm_buddy, ttm, drm_display_helper, cec, i2c_algo_bit, video
LXC Container GPU Devices#
/dev/dri/card0— character special (major 226, minor 0)/dev/dri/renderD128— character special (major 226, minor 128)- Permissions:
crw-rw---- root:video(226/0 and 226/128)
Jellyfin Configuration#
- User Group Assignment:
jellyfinuser added tovideogroup (usermod -a -G video jellyfin) - Dashboard → Playback Settings:
- Hardware Acceleration:
Intel QuickSync (QSV) - Enable hardware encoding:
Yes - Enable hardware decoding:
Yes - Enable tone mapping:
Yes - Allow encoding in HEVC:
Yes - Allow encoding in AV1:
Yes(if supported)
- Hardware Acceleration:
Validation Commands#
# Verify GPU device accessibility
ls -la /dev/dri/
# Check if processes are using GPU during playback
lsof /dev/dri/renderD128
# Monitor Jellyfin logs for hardware acceleration
sudo journalctl -u jellyfin -f | grep -i "hardware\|qsv\|quicksync\|vaapi"
# Check active transcoding sessions in Jellyfin UI
# Dashboard → Active Devices → look for (HW) indicatorHistorical Notes#
- dmesg restriction:
dmesg: read kernel buffer failed: Operation not permitted— expected in LXC containers without full device access - intel_gpu_top limitation: GPU monitoring tools that require kernel debugfs access will not work inside the LXC; validated via actual transcoding performance and log inspection instead
- i915 driver loaded: Confirmed via
lsmod | grep i915showing 3,928,064 bytes loaded - No GPU debug info:
/sys/kernel/debug/drinot available in container — accepted limitation
Open Questions#
- Does AV1 hardware encoding actually work on Coffee Lake-S (Gen 9.5) — typically limited to H.264/H.265
- Performance baseline: what CPU load reduction is observed with QSV vs software transcoding?
- Can GPU passthrough be extended to other LXC containers (e.g., Plex, if migrated)
Related Pages#
- Plex Transcoding LXC — similar GPU passthrough patterns for Plex
- Proxmox LXC Configuration — LXC container setup patterns
- Servarr - Media Automation Stack — media server ecosystem
Servarr Stack - Gluetun VPN Troubleshooting
Sources#
- DeepSeek conversation: Jellyfin LXC GPU passthrough troubleshooting (2024–2025)