Raspberry Pi 4 + DietPi: no /dev/video* with dtoverlay=rpivid-v4l2 on 6.12.62+rpt kernel (Moonlight HW decode)

  • DietPi version | DietPi v10.0.1
  • Distro version | trixie
  • Kernel version | Linux DockerPi 6.12.62+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.12.62-1+rpt1 (2025-12-18) aarch64 GNU/Linux
  • Architecture | arm64
  • SBC model | RPi4
  • Power supply used | RPi PSU
  • SD card used | SSD

Raspberry Pi 4 + DietPi: no /dev/video* with dtoverlay=rpivid-v4l2 on 6.12.62+rpt kernel (Moonlight HW decode)

Hi all,

I’m trying to get V4L2 hardware video decoding working on a Raspberry Pi 4 running DietPi so I can use Moonlight with hardware decode. Moonlight itself is fine, but the system has no V4L2 decoder devices at all, so there’s nothing for Moonlight (or FFmpeg) to use.

Environment

  • Device: Raspberry Pi 4 (4GB)

  • OS: DietPi (64‑bit, aarch64)

  • Kernel:

uname -a
Linux DockerPi 6.12.62+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.12.62-1+rpt1 (2025-12-18) aarch64 GNU/Linux

Current boot config

Relevant part of my /boot/config.txt:

#-------GPU memory splits-------
gpu_mem=256

arm_64bit=1
dtoverlay=disable-wifi
dtoverlay=vc4-kms-v3d
dtoverlay=rpivid-v4l2

# HDMI
hdmi_group=1
hdmi_mode=16      # 1080p60 CEA
disable_overscan=1

Same dtoverlay=rpivid-v4l2 line appears in /boot/firmware/config.txt as well.

Symptoms

Despite the above:

bash

ls -l /dev/video*
ls: cannot access '/dev/video*': No such file or directory

dmesg | grep -Ei 'rpivid|bcm2835-codec|v4l2'
# (no output)

v4l2-ctl --list-devices
# (no output)

Trying to inspect the expected decoder nodes fails as there are none:

bash

v4l2-ctl -d /dev/video10 --all
Cannot open device /dev/video10, exiting.

v4l2-ctl -d /dev/video11 --all
Cannot open device /dev/video11, exiting.

Moonlight is being launched directly from a TTY via a system service (not inside Docker), so this isn’t a container device‑mapping issue.

What I’ve checked

Kernel config and overlays:

bash

zgrep RPIVID /proc/config.gz 2>/dev/null || echo "no RPIVID options in kernel config"
no RPIVID options in kernel config

ls /boot/firmware/overlays/rpivid*
ls: cannot access '/boot/firmware/overlays/rpivid*': No such file or directory

So it looks like:

  • The current 6.12.62+rpt-rpi-v8 kernel has no RPivid options built in.

  • The firmware set does not ship rpivid-v4l2.dtbo either.

That would explain why dtoverlay=rpivid-v4l2 is effectively a no‑op and why no /dev/video* devices appear.

Questions

  1. On current DietPi for Raspberry Pi, is RPivid/V4L2 hardware decoding intentionally removed from the 6.12.x +rpt kernels?

  2. What is the recommended way (on DietPi) to get a kernel/firmware combo that does provide RPivid and the corresponding overlay?

I’d like to keep the rest of this DietPi install as‑is and just use whatever kernel/firmware path you recommend to get /dev/video10/11/12 back for V4L2 hardware decoding.

Happy to provide any additional logs or try test kernels if needed. I used AI to help draft this post and it seems accurate, but apologies for any errors. Thanks!

We from DietPi team don’t maintain the kernel. It’s the original one from RPi foundation.

Did you activate RPI-codecs with dietpi-config?
On my RPi4 I get

root@RPi4:~# uname -a
Linux RPi4 6.12.62+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.12.62-1+rpt1 (2025-12-18) aarch64 GNU/Linux

root@RPi4:~# ls -l /dev/video*
crw-rw---- 1 root video 81, 1 17. Jan 23:00 /dev/video10
crw-rw---- 1 root video 81, 2 17. Jan 23:00 /dev/video11
crw-rw---- 1 root video 81, 3 17. Jan 23:00 /dev/video12
crw-rw---- 1 root video 81, 4 17. Jan 23:00 /dev/video18
crw-rw---- 1 root video 81, 0 17. Jan 23:00 /dev/video19
crw-rw---- 1 root video 81, 5 17. Jan 23:00 /dev/video31

root@RPi4:~# dmesg | grep -Ei 'rpivid|bcm2835-codec|v4l2'
[    4.907422] bcm2835-codec bcm2835-codec: Device registered as /dev/video10
[    4.907452] bcm2835-codec bcm2835-codec: Loaded V4L2 decode
[    4.912592] bcm2835-codec bcm2835-codec: Device registered as /dev/video11
[    4.912618] bcm2835-codec bcm2835-codec: Loaded V4L2 encode
[    4.915395] bcm2835-codec bcm2835-codec: Device registered as /dev/video12
[    4.915422] bcm2835-codec bcm2835-codec: Loaded V4L2 isp
[    4.917129] bcm2835-codec bcm2835-codec: Device registered as /dev/video18
[    4.917154] bcm2835-codec bcm2835-codec: Loaded V4L2 image_fx
[    4.919334] bcm2835-codec bcm2835-codec: Device registered as /dev/video31
[    4.919361] bcm2835-codec bcm2835-codec: Loaded V4L2 encode_image

root@RPi4:~# v4l2-ctl --list-devices
bcm2835-codec-decode (platform:bcm2835-codec):
        /dev/video10
        /dev/video11
        /dev/video12
        /dev/video18
        /dev/video31

rpi-hevc-dec (platform:rpi-hevc-dec):
        /dev/video19
        /dev/media0

bcm2835-codec (vchiq:bcm2835-codec):
        /dev/media1

I don’t use rpivid-v4l2 nor vc4-kms-v3d tho, you don’t need it for decoding support

root@RPi4:~# grep dtoverlay /boot/config.txt
dtoverlay=disable-wifi
dtoverlay=argonone

For moonlight /dev/video10 (comes from bcm2835-codec) should be enough

edit:

I just found out rpivid-v4l2 is deprecated, bcm2835-codec + rpi-hevc-dec stack is the way to go.