Hello everyone!
We've transitioned from Raspberry Pi CM4 to CM5 and encountered an issue with graphical output. Our application is designed to work with two independent framebuffers (`/dev/fb0`, `/dev/fb1`), each outputting to a separate physical monitor:
fb0: `1024x600`
fb1: `1920x1080`
On CM4 with the `bcm2708_fb` driver, this setup worked perfectly. However, the CM5 defaults to using the full DRM/KMS stack (the `vc4-kms-v3d` driver), which does not create the familiar `/dev/fb*` framebuffer devices for each output.
What we have tried and the core problem:
1. A working but unsuitable option: If we comment out `dtoverlay=vc4-kms-v3d` in `config.txt`, the system does create two framebuffers (`fb0`, `fb1`). However, both have an incorrect, low resolution (seemingly `640x480`), which cannot be changed using standard `hdmi_cvt` parameters or the `video=` directive in `cmdline.txt`. This breaks our application's logic.
2. The target option that doesn't work: With `dtoverlay=vc4-kms-v3d` enabled, both monitors are correctly detected and operate at their specified resolutions, but **only `/dev/fb0` exists in the system**. The second framebuffer is not created. Our application, which expects `fb1`, fails to start.
Configuration (`/boot/firmware/config.txt`):
cmdline.txt:
`Questions for the experts:
1. Is it possible on the CM5 under DRM/KMS to force the system to create two classic framebuffers (`/dev/fb0`, `/dev/fb1`) for backward compatibility with our legacy code?
2. We are looking at the `kmsxx` library but are unsure of the correct approach for us.
3. Is there an equivalent to the legacy parameter `max_framebuffers=2` in the new stack?
Our goal is to minimize changes to the application code. Ideally, we would get two `/dev/fbX` devices.
Thank you in advance for any ideas, documentation links, or shared experiences!
We've transitioned from Raspberry Pi CM4 to CM5 and encountered an issue with graphical output. Our application is designed to work with two independent framebuffers (`/dev/fb0`, `/dev/fb1`), each outputting to a separate physical monitor:
fb0: `1024x600`
fb1: `1920x1080`
On CM4 with the `bcm2708_fb` driver, this setup worked perfectly. However, the CM5 defaults to using the full DRM/KMS stack (the `vc4-kms-v3d` driver), which does not create the familiar `/dev/fb*` framebuffer devices for each output.
What we have tried and the core problem:
1. A working but unsuitable option: If we comment out `dtoverlay=vc4-kms-v3d` in `config.txt`, the system does create two framebuffers (`fb0`, `fb1`). However, both have an incorrect, low resolution (seemingly `640x480`), which cannot be changed using standard `hdmi_cvt` parameters or the `video=` directive in `cmdline.txt`. This breaks our application's logic.
2. The target option that doesn't work: With `dtoverlay=vc4-kms-v3d` enabled, both monitors are correctly detected and operate at their specified resolutions, but **only `/dev/fb0` exists in the system**. The second framebuffer is not created. Our application, which expects `fb1`, fails to start.
Configuration (`/boot/firmware/config.txt`):
Code:
# don't try to read HDMI eepromhdmi_blanking=2hdmi_ignore_edid=0xa5000080hdmi_ignore_cec_init=1hdmi_ignore_cec=1hdmi_group:0=2hdmi_mode:0=87hdmi_cvt:0=1024 600 60 6 0 0 0hdmi_force_hotplug:1=1hdmi_group:1=2hdmi_mode:1=87hdmi_cvt:1 1024 600 60 6 0 0 0# Enable DRM VC4 V3D driverdtoverlay=vc4-kms-v3dmax_framebuffers=2cmdline.txt:
`
Code:
... video=HDMI-A-1:1024x600M@60 video=HDMI-A-2:1920x1080M@601. Is it possible on the CM5 under DRM/KMS to force the system to create two classic framebuffers (`/dev/fb0`, `/dev/fb1`) for backward compatibility with our legacy code?
2. We are looking at the `kmsxx` library but are unsure of the correct approach for us.
3. Is there an equivalent to the legacy parameter `max_framebuffers=2` in the new stack?
Our goal is to minimize changes to the application code. Ideally, we would get two `/dev/fbX` devices.
Thank you in advance for any ideas, documentation links, or shared experiences!
Statistics: Posted by SokolovJek — Wed Jan 28, 2026 2:36 pm — Replies 1 — Views 41