Hetzner - Using iGPU for Hardware Acceleration
Preface
This is loosely based off a reddit comment, with some changes to work with Ubuntu 18.04.
EDIT - December 21st, 2021: I've also followed my own guide for Debian 11, with an i7-8700k (on Hetzner). So it should work for Ubuntu 20.04 and Debian 10 as well. You might need to install some Intel drivers from apt, but I'm not entirely sure.
Grub
Remove hetzner's default grub config "nomodeset" which blocks loading of video card drivers. Open /etc/default/grub.d/hetzner.cfg, and comment out #GRUB_CMDLINE_LINUX_DEFAULT="nomodeset"
This file doesn't exist on Hetzner's Ubuntu 18.04 minimal image, so here are the correct steps.
-
sudo nano /etc/default/grub - Remove
nomodesetfromGRUB_CMDLINE_LINUX_DEFAULT- I don't recommend commenting the whole line out, since there might be other options supplied there. If there aren't, it should be safe to comment I guess.
-
sudo update-grubto update the bootloader.- Don't reboot yet.
Enabling drivers
Pretty much follow this as written:
Comment all line referencing i915 in this file.
sudo nano /etc/modprobe.d/blacklist-hetzner.conf
- Open
sudo nano /etc/modprobe.d/blacklist-hetzner.conf - Comment
blacklist i915andblacklist i915_bdwby adding a#in front:-
#blacklist i915 -
#blacklist i915_bdw
-
- Here's how my file looks like:
### Hetzner Online GmbH - installimage
### silence any onboard speaker
blacklist pcspkr
blacklist snd_pcsp
### i915 driver blacklisted due to various bugs
### especially in combination with nomodeset
#blacklist i915
#blacklist i915_bdw
### mei driver blacklisted due to serious bugs
blacklist mei
blacklist mei-me
blacklist sm750fb
Allowing Plex to use iGPU (non-Docker)
Add user emby (or plex) to the video group:
sudo usermod -a -G video emby
Doing it for Plex is practically the same.
-
sudo adduser plex videoorsudo usermod -aG video plex- You only need to use one of them.
Allowing Plex to use iGPU (Docker)
I recommend using LinuxServer's Docker image. Though with that said, I don't have any experience with it lol.
Docker Compose
With a docker-compose.yml file, add a devices: to your container config:
devices:
- "/dev/dri:/dev/dri"
Here's an example config file with devices specified:
---
version: "2"
services:
plex:
image: linuxserver/plex
container_name: plex
network_mode: host
devices:
- "/dev/dri:/dev/dri"
environment:
- PUID=1000
- PGID=1000
- VERSION=docker
volumes:
- ./config:/config
- /data/PlexMedia:/data/PlexMedia
restart: unless-stopped
docker run (not recommended)
If you're running your Docker image manually (why?) then add --device=/dev/dri:/dev/dri as documented on LinuxServer's GitHub