Quantcast
Channel: Raspberry Pi Forums
Viewing all articles
Browse latest Browse all 7503

Compute Module • CM5: Creating Two Framebuffers (fb0, fb1) under DRM/KMS for Two Monitors with Different Resolutions

$
0
0
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`):

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=2

cmdline.txt:

`

Code:

... video=HDMI-A-1:1024x600M@60 video=HDMI-A-2:1920x1080M@60
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!

Statistics: Posted by SokolovJek — Wed Jan 28, 2026 2:36 pm — Replies 1 — Views 41



Viewing all articles
Browse latest Browse all 7503

Trending Articles