Skip to content

Enabling hardware transcoding on OVH

The required system-level changes are performed automatically on Hetzner machines; OVH requires some manual effort.

  1. Make sure it actually has one of the motherboards that can use the iGPU (that isn't the case always)
  2. manually tweak the nomodeset in grub.

Verify motherboard capabilities

Verification method TBD

Symptom: display shows as UNCLAIMED:

sudo lshw -c video
  *-display UNCLAIMED
       description: Display controller
       product: HD Graphics 630
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 04
       width: 64 bits
       clock: 33MHz
       capabilities: pciexpress msi pm bus_master cap_list
       configuration: latency=0
       resources: memory:a1000000-a1ffffff memory:90000000-9fffffff ioport:5000(size=64)
  *-display UNCLAIMED
       description: VGA compatible controller
       product: MGA G200e [Pilot] ServerEngines (SEP1)
       vendor: Matrox Electronics Systems Ltd.
       physical id: 0
       bus info: pci@0000:04:00.0
       version: 05
       width: 32 bits
       clock: 33MHz
       capabilities: pm pciexpress msi vga_controller bus_master cap_list
       configuration: latency=0
       resources: memory:a0000000-a0ffffff memory:a2800000-a2803fff memory:a2000000-a27fffff memory:a2810000-a281ffff
  *-graphics
       product: EFI VGA
       physical id: 2
       logical name: /dev/fb0
       capabilities: fb
       configuration: depth=32 resolution=1024,768

lsmod | grep i915
i915                 3104768  0
ttm                    86016  1 i915
drm_kms_helper        311296  1 i915
cec                    61440  2 drm_kms_helper,i915
drm                   622592  3 drm_kms_helper,i915,ttm
i2c_algo_bit           16384  2 igb,i915
video                  65536  1 i915

tweak the nomodeset in grub

OVH's default grub config looks like this:

> cat /etc/default/grub

# This file is based on /usr/share/grub/default/grub, some settings 
# have been changed by OVHcloud.
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=lsb_release -i -s 2> /dev/null || echo Debian
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="nomodeset iommu=pt console=tty0 console=ttyS0,115200n8"

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

Change this line:

GRUB_CMDLINE_LINUX="nomodeset iommu=pt console=tty0 console=ttyS0,115200n8"

to:

GRUB_CMDLINE_LINUX=""

Save the file and run:

sudo update-grub

then reboot:

sudo reboot

After doing this, the display controller should no longer appear as UNCLAIMED:

$ sudo lshw -c video
  *-display
       description: Display controller
       product: HD Graphics 630
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 04
       width: 64 bits
       clock: 33MHz
       capabilities: pciexpress msi pm bus_master cap_list
       configuration: driver=i915 latency=0
       resources: irq:158 memory:a1000000-a1ffffff memory:90000000-9fffffff ioport:5000(size=64)
  *-display
       description: VGA compatible controller
       product: MGA G200e [Pilot] ServerEngines (SEP1)
       vendor: Matrox Electronics Systems Ltd.
       physical id: 0
       bus info: pci@0000:04:00.0
       logical name: /dev/fb0
       version: 05
       width: 32 bits
       clock: 33MHz
       capabilities: pm pciexpress msi vga_controller bus_master cap_list rom fb
       configuration: depth=32 driver=mgag200 latency=0 resolution=1024,768
       resources: irq:17 memory:a0000000-a0ffffff memory:a2800000-a2803fff memory:a2000000-a27fffff memory:a2810000-a281ffff

And once you rerun the plex tag with intel enabled, HW transcoding should be available.