framebuffer not working
the framebuffer node in start;s fdt is not tied to the video output HDMI. I can't do anything with it from u-boot. Guessing I need some vc4 magic to make it actually work ? The rainbow screen works, but I can't write my own data for a splash screen. What can I do ?
You'll have to provide a bit more information with regard your system and what you're attempting to do.
If there is no DT alias for display0, and /soc/fb doesn't exist or isn't enabled (happens if vc4-kms-v3d of vc4-fkms-v3d are enabled), then the firmware creates a simple-framebuffer node as /chosen/framebuffer@XXXX with the appropriate geometry, format, and address parameters for the buffer that is on the primary HDMI display (whichever monitor if only one is connected, or HDMI-0 if both are connected on a Pi4).
If those conditions are not met, then /soc/fb is a "brcm,bcm2708_fb" node, and that driver is expected to set up the framebuffer(s) as desired.
Yes I have a fdt /chosen/framebuffer@XXXXXX but when I write anything to its memory, it is not updated on the HDMI output as I (novice) would expect. All it does is show the rainbow square until later on linux starts the vc/v3d modules in an init script or udev I forget which. I would like to know if there is anyway to draw to it as if it were a simple-video device ?
edit: to provid more information
CM4S buildroot. rpi kernel 6.1 but that all works great, no issues. u-boot is rpi_4_32b defconfig with the following as fragment
CONFIG_BMP_24BPP=y
CONFIG_BMP_32BPP=y
CONFIG_BMP=y
CONFIG_BOOTDELAY=3
CONFIG_CMD_BMP=y
CONFIG_CMD_BSP=y
CONFIG_CMD_CACHE=y
CONFIG_CMD_ECHO=y
CONFIG_CMD_HASH=y
CONFIG_CMD_VIDEO=y
CONFIG_CONSOLE_NORMAL=y
CONFIG_DISPLAY=y
CONFIG_DM_VIDEO=y
CONFIG_DT_VIDEO=y
CONFIG_ENV_IS_IN_FAT=n
CONFIG_ENV_IS_NOWHERE=y
CONFIG_I2C_EDID=y
CONFIG_PREBOOT_DEFINED=y
CONFIG_PREBOOT="fdt addr 2600000"
CONFIG_SHA256_LEGACY=y
CONFIG_SHA256=y
CONFIG_SIMPLE_FRAMEBUFFER=y
CONFIG_SPLASH_SCREEN_ALIGN=y
CONFIG_SPLASH_SCREEN=y
CONFIG_SPLASH_SOURCE=y
CONFIG_SYS_STDIO_DEREGISTER=y
CONFIG_VIDCONSOLE=y
CONFIG_VIDEO_ANSI=y
CONFIG_VIDEO_BMP_GZIP=y
CONFIG_VIDEO_BMP_RLE8=y
CONFIG_VIDEO_BPP32=y
CONFIG_VIDEO_BRIDGE=y
CONFIG_VIDEO_DT_SIMPLEFB=y
CONFIG_VIDEO_FONT_8X16=y
CONFIG_VIDEO_MIPI_DSI=y
CONFIG_VIDEO_SIMPLE=y
CONFIG_VIDEO=y
standard fatload and bmp display in boot script. It all works as expected, except drawing to the fb provided by start elf
config.txt relevant part
start_file=start4.elf
fixup_file=fixup4.dat
device_tree=bcm2711-rpi-cm4s.dtb
kernel=u-boot.bin
uart_2ndstage=1
#disable_overscan=1
gpu_mem=128
dtoverlay=vc4-kms-v3d-pi4
max_framebuffers=2
#disable_splash=1
#framebuffer_priority=1
# force 800x600 60Hz
hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=9
framebuffer_width=800
framebuffer_height=600
enable_dpi_lcd=1
display_lcd_rotate=0
cmdline.txt (i dont know if start elf looks at this to determine how to init all the blocks..)
root=/dev/mmcblk0p2 rootwait console=tty1 fbcon=map:0 console=ttyAMA0,115200 cma=256M splash loglevel=3
also I made a thread on the forum re this
https://forums.raspberrypi.com/viewtopic.php?p=2320704
I know nothing about how u-boot would be handling this. At one point I believe it used the bcm2708_fb mailbox calls, and those would potentially trash what had been set up for the simple-framebuffer.
Pi4 Raspberry Pi OS Lite.
Created /etc/modprobe.d/blacklist-vc4.conf containing blacklist vc4 to stop the module loading and hence simple-framebuffer to persist.
ls /proc/device-tree/chosen/ gives me framebuffer@3e194000.
sudo memtool mw 0x3e194000 0xffffffff gives me a white dot in the top left. Increase the offset and the white dot is further across the image.
Do remember that these are physical addresses.
Forum thread locked with a link to here to avoid duplicated discussions.
U-Boot> fdt list /chosen
chosen {
user-warnings = [64 74 65 72 72 6f 72 3a 20 20 20 6f 76 65 72 72 69 64 65 20 69 32 63 5f 62 75 73 3a 20 64 61 74 61 20 69 73 20 74 72 75 6e 63 61 74 65 64 20 6f 72 20 6d 61 6e 67 6c 65 64 0a 64 74 65 72 72 6f 72 3a 20 63 61 6e 27 74 20 66 69 6e 64 20 73 79 6d 62 6f 6c 20 27 62 74 27 0a 46 61 69 6c 65 64 20 74 6f 20 72 65 73 6f 6c 76 65 20 6f 76 65 72 6c 61 79 20 27 6d 69 6e 69 75 61 72 74 2d 62 74 27 0a];
ranges;
#size-cells = <0x00000001>;
#address-cells = <0x00000001>;
compatible = "simple_bus";
rng-seed = <0x547d27a1 0x3ef588b9 0x3e6e5025 0xccf8d252 0xae7c2a84 0x046927e1 0x371962d0 0x7d018f3b 0x91ba0b2c 0xfe76ca13 0xfb3426af 0xd3630c66 0xb61b8efd 0xfd22a6c6 0x25d204a3 0xe838ad22>;
kaslr-seed = <0xaf27e83b 0x11469e62>;
os_prefix = [00];
overlay_prefix = "overlays/";
rpi-boardrev-ext = <0x40000000>;
log = <0x3ff80000 0x0007ffe0>;
stdout-path = "serial0:115200n8";
bootargs = "coherent_pool=1M snd_bcm2835.enable_headphones=0 snd_bcm2835.enable_hdmi=0 8250.nr_uarts=1 video=HDMI-A-1:800x600M@60D smsc95xx.macaddr=B8:27:EB:DC:74:21 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 root=/dev/mmcblk0p2 rootwait console=tty1 fbcon=map:0 console=ttyAMA0,115200 cma=256M splash loglevel=3";
phandle = <0x00000046>;
framebuffer@3e9ea000 {
};
bootloader {
};
};
U-Boot> fdt list /chosen/framebuffer@3e9ea000
framebuffer@3e9ea000 {
status = "okay";
compatible = "simple-framebuffer";
format = "a8r8g8b8";
stride = <0x00000c80>;
height = <0x00000258>;
width = <0x00000320>;
reg = <0x3e9ea000 0x001db000>;
};
U-Boot> mw.l 0x3e9ea000 0xffffffff 0x1000
U-Boot> mw.l 0x3e9ea000 0xffffffff 0x10000
U-Boot> mw.l 0x3e9ea000 0xffffffff 0x100000
U-Boot>
no visual change, except the last command made the rainbow turn into a gradient of only black and blue, and then uboot crashed. Must have overwritten something, which proves the mw.l command is working. Am I doing something wrong, am I being thick ? Please tell me if I am
Sorry, I have no idea how u-boot has set things up.
You shouldn't have a rainbow screen on the primary monitor at that point though, as the simple framebuffer should be on display.
Whilst unlikely to be significant here, please note that the 6.1 and 6.6 kernels are no longer being updated. 6.12 is the actively developed branch.
Would you mind posting the rest of config.txt, or at least the dtoverlay/dtparam lines? There are some interesting messages encoded in your fdt:
dterror: override i2c_bus: data is truncated or mangled
dterror: can't find symbol 'bt'
Failed to resolve overlay 'miniuart-bt'
Would you mind posting the rest of config.txt, or at least the dtoverlay/dtparam lines? There are some interesting messages encoded in your fdt:
dterror: override i2c_bus: data is truncated or mangled dterror: can't find symbol 'bt' Failed to resolve overlay 'miniuart-bt'
serial dump of boot
0.52 RPi: BOOTSYS release VERSION:69471177 DATE: 2025/05/08 TIME: 16:21:35
0.52 BOOTMODE: 0x06 partition 0 build-ts BUILD_TIMESTAMP=1746717695 serial 4cdc7421 boardrev a03150 stc 528159
0.53 PM_RSTS 00001000
0.54 POWER_OFF_ON_HALT: 1 WAIT_FOR_POWER_BUTTON 0 power-on-reset 1
0.54 part 00000000 reset_info 00000000
0.54 uSD voltage 3.3V
0.57 Initialising SDRAM rank 1 total-size: 8 Gbit 3200 (0x07 0x00)
0.57 DDR 3200 0 0 8 152 BL:3
1.53 OTP boardrev a03150 bootrom c8b0 c8b0
1.53 Customer key hash 3c26a85c347c623373c9a66d3cd572f79b3f8daa22208f84562260a5c57c411f
1.54 VC-JTAG unlocked
1.57 bootconf.sig
1.57 hash: b503f8ad7f8aea93a272a5ba5248cc5222d0c55af28a4345d0a496bdba9d16bf
1.57 rsa2048: 6bd18f209d06f4dc391b25493debf0c4dc8a63cb2a3c65ba4bffa5f7b016a73cac477c00e39d6ba2dc06d21b15cf7bb1c912d11cc34e7ef04ee0388e4b9f497a8c38d262bfe3792a3c8af33cff4b44b81653e6b57ec366f3016d206120691b5e8b5563fbc116313c5a1b0dcbda3ed07f0c0862386c138cbabcdd1217d927596e4213d0967639e10775495a78c5b35c2cfef9673251a61945c4350fd3877a19808446e5d0a62b4ae585a27508d6217370c4406d40b70e11f06169dabdb10cf71bf5043a2d0ee15828898adbbf5ba13d1d78e3f01302da157311fd2c3b934b609c54898b2433904e0347ec95e9a6104307094227961964e2c26da9ae6274c51c10
1.62 RSA verify
1.39 rsa-verify pass (0x0)
1.88 RPi: BOOTLOADER release VERSION:69471177 DATE: 2025/05/08 TIME: 16:21:35
1.88 BOOTMODE: 0x06 partition 0 build-ts BUILD_TIMESTAMP=1746717695 serial 4cdc7421 boardrev a03150 stc 1887687
1.97 Unsupported boot order 4
1.17 Unsupported boot order 6
1.20 Unsupported boot order 2
1.28 Boot mode: SD (01) order f5
2.07 SD HOST: 200000000 CTL0: 0x00800000 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276
2.08 SD HOST: 200000000 CTL0: 0x00800f00 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276
2.19 EMMC
2.29 SD retry 1 oc 0
2.32 SD HOST: 200000000 CTL0: 0x00800000 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276
2.33 OCR c0ff8080 [0]
CID: 00150100384754463452061493ba5d6a
2.35 SD HOST: 200000000 CTL0: 0x00800f04 BUS: 25000000 Hz actual: 25000000 HZ div: 8 (4) status: 0x1fff0000 delay: 4
2.36 SD HOST: 200000000 CTL0: 0x00800f04 BUS: 50000000 Hz actual: 50000000 HZ div: 4 (2) status: 0x1fff0000 delay: 2
2.37 MBR: 0x00000001, 262144 type: 0x0c
2.37 MBR: 0x00040001, 2048 type: 0x0c
2.37 MBR: 0x00040801, 2048 type: 0x0c
2.38 MBR: 0x00041001,13778949 type: 0x0f
2.85 Trying partition: 0
2.99 type: 16 lba: 1 'mkfs.fat' ' V ^ ' clusters 65399 (4)
2.40 rsc 4 fat-sectors 256 root dir cluster 1 sectors 32 entries 512
2.40 FAT16 clusters 65399
2.41 [sdcard] autoboot.txt not found
2.41 Select partition rsts 0 C(boot_partition) 0 EEPROM config 0 result 1
2.21 Trying partition: 1
2.24 type: 16 lba: 1 'mkfs.fat' ' V ^ ' clusters 65399 (4)
2.43 rsc 4 fat-sectors 256 root dir cluster 1 sectors 32 entries 512
2.43 FAT16 clusters 65399
2.38 secure-boot
2.40 Loading boot.img ...
2.44 boot.sig
2.44 hash: 6bae94c5315de6158fe2c37e94eb25d655474c39e5c7e62ee560fdd47a7e9e81
2.45 ts: 1750167487
2.45 rsa2048: 152a1c37faaa04d780da6d8908ec60b1cd1a35d717f9755afb34f9b38b5886244e1d5fb60ac9b22789440b5891085948e84aa69f117fee160305621239dd4cf4daf814e1951f474cb3da7ed349a9594a6bab92f8ddd5582b64dde781b499ad34ede08233769fa145e2a7395348a4c5a80bf964baffa6a3047d43d298463080101696db57b119cd889e935818a5c6c3994098e640ceebc184f25ebe1dfb496747576e4cb90116a8c3c4f0c8eb496ea3408980398d41736c9be595b6db7aafb07a92e359df962b7046c0198a74ef5e07a2e88890656c9ec5b759ec0b81dbae71c43832a82722ddcaba72ca09ed06e727817c5c57578ee22f5155fe0b68210a752d
3.13 Verifying
3.99 RSA verify
4.07 rsa-verify pass (0x0)
4.03 MBR: 0x00000000, 0 type: 0x00
4.03 MBR: 0x00000000, 0 type: 0x00
4.04 MBR: 0x00000000, 0 type: 0x00
4.04 MBR: 0x00000000, 0 type: 0x00
4.49 Trying partition: 0
4.51 type: 16 lba: 0 'mkfs.fat' ' V ^ ' clusters 4589 (4)
4.05 rsc 4 fat-sectors 20 root dir cluster 1 sectors 32 entries 512
4.06 FAT16 clusters 4589
4.67 Read config.txt bytes 816 hnd 0x7b8
4.07 [ramdisk] recover4.elf not found
4.07 [ramdisk] recovery.elf not found
4.96 Read start4.elf bytes 2256800 hnd 0x369
4.98 Read fixup4.dat bytes 5436 hnd 0x7bc
4.02 0x00a03150 0x00000000 0x00001fff
4.05 MEM GPU: 128 ARM: 896 TOTAL: 1024
4.88 Firmware: 86ccc427f35fdc604edc511881cdf579df945fb4 Apr 17 2024 17:27:09
4.21 Starting start4.elf @ 0xfec00200 partition 0
4.24 PCI0 reset
4.29 +
MESS:00:00:04.390835:0: brfs: File read: /mfs/sd/config.txt
MESS:00:00:04.393974:0: brfs: File read: 816 bytes
MESS:00:00:04.418066:0: HDMI0:EDID error reading EDID block 0 attempt 0
MESS:00:00:04.422574:0: HDMI0:EDID giving up on reading EDID block 0
MESS:00:00:04.427928:0: brfs: File read: /mfs/sd/config.txt
MESS:00:00:04.433587:0: gpioman: gpioman_get_pin_num: pin DISPLAY_SDA not defined
MESS:00:00:04.440155:0: gpioman: gpioman_get_pin_num: pin LEDS_PWR_OK not defined
MESS:00:00:04.776784:0: gpioman: gpioman_get_pin_num: pin LEDS_PWR_OK not defined
MESS:00:00:04.781190:0: *** Restart logging
MESS:00:00:04.785072:0: brfs: File read: 816 bytes
MESS:00:00:04.794722:0: hdmi: HDMI0:EDID error reading EDID block 0 attempt 0
MESS:00:00:04.799751:0: hdmi: HDMI0:EDID giving up on reading EDID block 0
MESS:00:00:04.810378:0: hdmi: HDMI0:EDID error reading EDID block 0 attempt 0
MESS:00:00:04.815401:0: hdmi: HDMI0:EDID giving up on reading EDID block 0
MESS:00:00:04.827889:0: HDMI0: hdmi_pixel_encoding: 300000000
MESS:00:00:04.831766:0: brfs: File read: /mfs/sd/bcm2711-rpi-cm4s.dtb
MESS:00:00:04.836692:0: Loaded 'bcm2711-rpi-cm4s.dtb' to 0x2600000 size 0xce28
MESS:00:00:04.856654:0: brfs: File read: 52776 bytes
MESS:00:00:04.860456:0: brfs: File read: /mfs/sd/overlays/overlay_map.dtb
MESS:00:00:04.883415:0: brfs: File read: 5195 bytes
MESS:00:00:04.885301:0: brfs: File read: /mfs/sd/config.txt
MESS:00:00:04.891545:0: brfs: File read: 816 bytes
MESS:00:00:04.898199:0: brfs: File read: /mfs/sd/overlays/vc4-kms-v3d-pi4.dtbo
MESS:00:00:04.964899:0: Loaded overlay 'vc4-kms-v3d-pi4'
MESS:00:00:04.967197:0: dtparam: i2c1=on
MESS:00:00:05.303028:0: brfs: File read: 3913 bytes
MESS:00:00:05.307607:0: brfs: File read: /mfs/sd/overlays/m41t80.dtbo
MESS:00:00:05.325054:0: Loaded overlay 'm41t80'
MESS:00:00:05.326504:0: dtparam: i2c_bus=1
MESS:00:00:05.330439:0: dterror: override i2c_bus: data is truncated or mangled
MESS:00:00:05.359946:0: brfs: File read: 433 bytes
MESS:00:00:05.365488:0: brfs: File read: /mfs/sd/overlays/pwm.dtbo
MESS:00:00:05.384983:0: Loaded overlay 'pwm'
MESS:00:00:05.425663:0: brfs: File read: 948 bytes
MESS:00:00:05.431250:0: brfs: File read: /mfs/sd/overlays/pwmtest.dtbo
MESS:00:00:05.451206:0: Loaded overlay 'pwmtest'
MESS:00:00:05.452772:0: dtparam: spi=on
MESS:00:00:05.527126:0: brfs: File read: 495 bytes
MESS:00:00:05.531759:0: brfs: File read: /mfs/sd/overlays/mcp2515-can1.dtbo
MESS:00:00:05.559733:0: Loaded overlay 'mcp2515-can1'
MESS:00:00:05.561710:0: dtparam: oscillator=20000000
MESS:00:00:05.567278:0: dtparam: interrupt=25
MESS:00:00:05.571996:0: dtparam: spimaxfrequency=500000
MESS:00:00:05.684406:0: brfs: File read: 1793 bytes
MESS:00:00:05.686589:0: brfs: File read: /mfs/sd/overlays/ads7846.dtbo
MESS:00:00:05.723720:0: Loaded overlay 'ads7846'
MESS:00:00:05.725255:0: dtparam: cs=0
MESS:00:00:05.729871:0: dtparam: penirq=26
MESS:00:00:05.734944:0: dtparam: xohms=600
MESS:00:00:05.737555:0: dtparam: settle=5
MESS:00:00:05.747672:0: Unknown dtparam 'settle' - ignored
MESS:00:00:05.750078:0: dtparam: speed=100000
MESS:00:00:05.869894:0: brfs: File read: 2402 bytes
MESS:00:00:05.874984:0: brfs: File read: /mfs/sd/overlays/miniuart-bt.dtbo
MESS:00:00:05.900921:0: dterror: can't find symbol 'bt'
MESS:00:00:05.903066:0: Failed to resolve overlay 'miniuart-bt'
MESS:00:00:05.910808:0: brfs: File read: 1566 bytes
MESS:00:00:05.918464:0: brfs: File read: /mfs/sd/overlays/uart1.dtbo
MESS:00:00:05.938693:0: Loaded overlay 'uart1'
MESS:00:00:05.940062:0: dtparam: txd1_pin=32
MESS:00:00:05.944600:0: dtparam: rxd1_pin=33
MESS:00:00:06.030992:0: brfs: File read: 988 bytes
MESS:00:00:06.032896:0: brfs: File read: /mfs/sd/cmdline.txt
MESS:00:00:06.038140:0: Read command line from file 'cmdline.txt':
MESS:00:00:06.043996:0: 'root=/dev/mmcblk0p2 rootwait console=tty1 fbcon=map:0 console=ttyAMA0,115200 cma=256M splash loglevel=3'
MESS:00:00:06.115161:0: CMA size reduced to 256MB (total_mem 1024MB, gpu_mem 128MB)
MESS:00:00:06.210941:0: brfs: File read: 104 bytes
MESS:00:00:06.217816:0: brfs: File read: /mfs/sd/u-boot.bin
MESS:00:00:06.220285:0: Loaded 'u-boot.bin' to 0x8000 size 0x9a03c
MESS:00:00:06.226200:0: Device tree loaded to 0x2600000 (size 0xd8f8)
MESS:00:00:06.234053:0: uart: Set PL011 baud rate to 103448.300000 Hz
MESS:00:00:06.241420:0: uart: Baud rate change done...
MESS:00:00:06.243443:0: uart: Baud rate change done...
U-Boot 2025.01 (Jun 17 2025 - 14:37:53 +0100)
DRAM: 896 MiB
RPI: Board rev 0x15 unknown
RPI Unknown model (0xa03150)
Core: 211 devices, 15 uclasses, devicetree: board
MMC: mmc@7e340000: 0
Loading Environment from nowhere... OK
entire config.txt
start_file=start4.elf
fixup_file=fixup4.dat
device_tree=bcm2711-rpi-cm4s.dtb
kernel=u-boot.bin
uart_2ndstage=1
#disable_overscan=1
gpu_mem=128
dtoverlay=vc4-kms-v3d-pi4
max_framebuffers=2
#disable_splash=1
#framebuffer_priority=1
# force 800x600 60Hz
hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=9
framebuffer_width=800
framebuffer_height=600
enable_dpi_lcd=1
display_lcd_rotate=0
dtparam=i2c1=on
dtoverlay=m41t80,i2c_bus=1
dtoverlay=pwm
dtoverlay=pwmtest
dtparam=spi=on
dtoverlay=mcp2515-can1,oscillator=20000000,interrupt=25,spimaxfrequency=500000
dtoverlay=ads7846,cs=0,penirq=26,xohms=600,settle=5,speed=100000
# Enable UART0 for serial console on ttyAMA0
dtoverlay=miniuart-bt
dtoverlay=uart1,txd1_pin=32,rxd1_pin=33
Thanks for having a look. I really appreciate it
Thanks. Let's go through those errors:
dterror: override i2c_bus: data is truncated or mangled
I can now see that that message is triggered by the m41t80 overlay, which isn't one of ours. The message is saying that there is a kind of syntax error in the overlay, but it might not be enough to stop it working for you. I'm curious about where it came from, but it's not important.
dterror: can't find symbol 'bt'
Failed to resolve overlay 'miniuart-bt'
This is to be expected: the CM4S does not have on-board Bluetooth, hence the error, but because of that UART0 is already available for use on GPIOs 14 & 15 - you just need enable_uart=1. I presume from the use of the uart1 overlay that you have something connected to the UART on GPIOs 32 & 33. If it's a Bluetooth modem, is it working for you? The CM4S DTB file is missing some of the infrastructure required to make it Bluetooth-capable in the modern way.
GP32-33 is just a plain uart for modbus. I should clean up this file a little.
$ cat m41t80-overlay.dts
/dts-v1/;
/plugin/;
/ {
compatible = "brcm,bcm2711";
fragment@0 {
target = <&i2c_arm>;
__overlay__ {
#address-cells = <1>;
#size-cells = <0>;
rtc@68 {
compatible = "st,m41t80";
reg = <0x68>;
};
};
};
__overrides__ {
i2c_bus = <&i2c_arm>,"";
};
};
It does work in linux ! Thanks
I see - that i2c_bus parameter declaration is completely broken, but the default is I2C1 (a.k.a. i2c_arm) so using i2c_bus=1 does nothing but cause an error message. You could just delete the whole __overrides__ node and drop the parameter use.
What I've done is add m41t80 to the standard i2c-rtc overlay, since the driver is already enabled in our builds. See https://github.com/raspberrypi/linux/commit/a5f5dc5ab7ff5ee0c9348f4fb4efacc6a1e5d203.
Any idea what's going wrong? does start.elf lock the memory or prevent the buf from being written to/updated or is this entire process so complex that it's hard to describe?
The VPU (and hence start.elf) has no way to prevent the ARM cores from accessing regions of memory, so that can't be the cause of what you are seeing.
The VPU (and hence start.elf) has no way to prevent the ARM cores from accessing regions of memory, so that can't be the cause of what you are seeing.
Have we still got the VPU cache alias stuff going on with 2711 and need to account for it on the ARM? Address in DT is 0x3e9ea000, but I did check the HVS dlist which had 0xfe9ea000 as it wants the VPU direct cache alias.
The VPU (and hence start.elf) has no way to prevent the ARM cores from accessing regions of memory, so that can't be the cause of what you are seeing.
Have we still got the VPU cache alias stuff going on with 2711 and need to account for it on the ARM? Address in DT is 0x3e9ea000, but I did check the HVS dlist which had 0xfe9ea000 as it wants the VPU direct cache alias.
is the actual fb memory somewhere else and it only exposes an alias region ? how to find this?
U-boot runs on the ARM cores, so gets the ARM's view of the world. Only the peripherals should need remapping.
okay. do the vc/v3d drivers do any fiddling with the gpu to be able to write to the fdt-provided fb or does it just work, if you happen to know?
okay. do the vc/v3d drivers do any fiddling with the gpu to be able to write to the fdt-provided fb or does it just work, if you happen to know?
vc4/v3d take over full control from the dt simple-framebuffer, so that is irrelevant.
simple-framebuffer renders to the address provided, as I've already demonstrated with memtool from Linux.
Boot your Linux system via u-boot but do NOT load vc4, and check you can scribble over the framebuffer via memtool from there. If not then something has messed it up. vcgencmd dispmanx_list would list the planes that the firmware believes are on the display.
The cache alias thing is relevant to Pi0-3. The 1GB physical memory space is aliased for caching modes on the VPU, so 0x00000000 is equivalent to 0x40000000, 0x80000000, and 0xc0000000, but with different L1 and L2 cache behaviours. pelwell is the man who always knows which alias is meant to be used in which scenarios, so I'll take his word as gospel.
I think the problem is that although U-boot will create or update a simple-framebuffer node in the FDT, it won't make use of any framebuffer passed in that way. Instead it uses the mailbox API to get the firmware to create a new framebuffer with its chosen dimensions: https://github.com/u-boot/u-boot/blob/master/arch/arm/mach-bcm283x/msg.c#L159
Note that U-boot does seem to have the ability to use the provided framebuffer (it needs the simple_video driver, enabled with CONFIG_VIDEO_DT_SIMPLEFB), but the bcm2835_video driver is probably getting in the way.
$ cat /etc/modprobe.d/blacklist-vc4.conf
blacklist vc4
blacklist v3d
dmesg
Populating /dev using udev: [ 4.347940] udevd[141]: starting version 3.2.14
[ 4.380809] udevd[143]: starting eudev-3.2.14
[ 4.571718] vc_sm_cma: module is from the staging directory, the quality is unknown, you hav
e been warned.
[ 4.603599] mc: Linux media interface: v0.10
[ 4.603859] rpi-gpiomem fe200000.gpiomem: window base 0xfe200000 size 0x00001000
[ 4.604422] bcm2835_vc_sm_cma_probe: Videocore shared memory driver
[ 4.604437] [vc_sm_connected_init]: start
[ 4.631429] [vc_sm_connected_init]: installed successfully
[ 4.658807] rpi-gpiomem fe200000.gpiomem: initialised 1 regions as /dev/gpiomem
[ 4.662196] CAN device driver interface
[ 4.706621] rtc-m41t80 1-0068: registered as rtc0
[ 4.721977] rtc-m41t80 1-0068: setting system clock to 2025-06-19T08:49:54 UTC (1750322994)
[ 4.731994] videodev: Linux video capture interface: v2.00
[ 4.732221] brcmstb-i2c fef04500.i2c: @97500hz registered in polling mode
[ 4.775217] mcp251x spi0.1 can0: MCP2515 successfully initialized.
[ 4.794392] dwc2 fe980000.usb: supply vusb_d not found, using dummy regulator
[ 4.803964] dwc2 fe980000.usb: supply vusb_a not found, using dummy regulator
[ 4.824394] bcm2835_mmal_vchiq: module is from the staging directory, the quality is unknown
, you have been warned.
[ 4.829382] snd_bcm2835: module is from the staging directory, the quality is unknown, you h
ave been warned.
[ 4.863205] bcm2835_isp: module is from the staging directory, the quality is unknown, you h
ave been warned.
[ 4.868595] rpivid_hevc: module is from the staging directory, the quality is unknown, you h
ave been warned.
[ 4.884419] bcm2835_v4l2: module is from the staging directory, the quality is unknown, you
have been warned.
[ 4.894950] bcm2835-isp bcm2835-isp: Device node output[0] registered as /dev/video13
[ 4.905072] bcm2835_codec: module is from the staging directory, the quality is unknown, you
have been warned.
[ 4.910737] bcm2835-isp bcm2835-isp: Device node capture[0] registered as /dev/video14
[ 4.929379] rpivid feb10000.codec: Device registered as /dev/video19
[ 4.936130] bcm2835-codec bcm2835-codec: Device registered as /dev/video10
[ 4.940452] bcm2835-isp bcm2835-isp: Device node capture[1] registered as /dev/video15
[ 4.946350] bcm2835-codec bcm2835-codec: Loaded V4L2 decode
[ 4.953971] bcm2835-isp bcm2835-isp: Device node stats[2] registered as /dev/video16
[ 4.976634] bcm2835-isp bcm2835-isp: Register output node 0 with media controller
[ 4.985871] bcm2835-isp bcm2835-isp: Register capture node 1 with media controller
[ 4.996123] bcm2835-isp bcm2835-isp: Register capture node 2 with media controller
[ 4.997132] bcm2835-codec bcm2835-codec: Device registered as /dev/video11
[ 5.003785] bcm2835-isp bcm2835-isp: Register capture node 3 with media controller
[ 5.013847] bcm2835-codec bcm2835-codec: Loaded V4L2 encode
[ 5.026498] bcm2835-isp bcm2835-isp: Device node output[0] registered as /dev/video20
[ 5.033923] dwc2 fe980000.usb: EPs: 8, dedicated fifos, 4080 entries in SPRAM
[ 5.035441] bcm2835-isp bcm2835-isp: Device node capture[0] registered as /dev/video21
[ 5.058430] bcm2835-isp bcm2835-isp: Device node capture[1] registered as /dev/video22
[ 5.068473] bcm2835-isp bcm2835-isp: Device node stats[2] registered as /dev/video23
[ 5.068743] dwc2 fe980000.usb: DWC OTG Controller
[ 5.076320] bcm2835-isp bcm2835-isp: Register output node 0 with media controller
[ 5.081182] bcm2835-codec bcm2835-codec: Device registered as /dev/video12
[ 5.083814] dwc2 fe980000.usb: new USB bus registered, assigned bus number 1
[ 5.083855] dwc2 fe980000.usb: irq 53, io mem 0xfe980000
[ 5.084051] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.06
[ 5.084066] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 5.084078] usb usb1: Product: DWC OTG Controller
[ 5.084086] usb usb1: Manufacturer: Linux 6.6.28-v7l dwc2_hsotg
[ 5.084095] usb usb1: SerialNumber: fe980000.usb
[ 5.084671] hub 1-0:1.0: USB hub found
[ 5.084714] hub 1-0:1.0: 1 port detected
[ 5.088573] bcm2835-isp bcm2835-isp: Register capture node 1 with media controller
[ 5.095935] bcm2835-codec bcm2835-codec: Loaded V4L2 isp
[ 5.102481] bcm2835-isp bcm2835-isp: Register capture node 2 with media controller
[ 5.140447] bcm2835-codec bcm2835-codec: Device registered as /dev/video18
[ 5.144749] bcm2835-isp bcm2835-isp: Register capture node 3 with media controller
[ 5.148569] bcm2835-codec bcm2835-codec: Loaded V4L2 image_fx
[ 5.152593] bcm2835-isp bcm2835-isp: Loaded V4L2 bcm2835-isp
[ 5.207109] bcm2835-codec bcm2835-codec: Device registered as /dev/video31
[ 5.238586] bcm2835-codec bcm2835-codec: Loaded V4L2 encode_image
[ 5.443690] usb 1-1: new high-speed USB device number 2 using dwc2
[ 5.693895] usb 1-1: New USB device found, idVendor=0424, idProduct=9512, bcdDevice= 2.00
[ 5.703318] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 5.712239] hub 1-1:1.0: USB hub found
[ 5.717278] hub 1-1:1.0: 3 ports detected
done
screen is black until I login over tty1 serial and I get the rainbow.
buildroot login: root
# ls /proc/device-tree/chosen
#address-cells kaslr-seed ranges
#size-cells log rpi-boardrev-ext
bootargs name stdout-path
bootloader os_prefix u-boot,version
compatible overlay_prefix user-warnings
framebuffer@3e9ea000 phandle
# ls /proc/device-tree/chosen/framebuffer@3e9ea000
compatible height reg stride
format name status width
# ./memtool mw 0xe39ea000 0xffffffff
# ./memtool mw 0xe39ea001 0xffffffff
# ./memtool mw 0xe39ea002 0xffffffff
# ./memtool mw 0xe39ea003 0xffffffff
# ./memtool mw 0xe39ea004 0xffffffff
# ./memtool mw 0xe39ea005 0xffffffff
# chvt 1
# chvt 7
# ./vcgencmd dispmanx_list
display:0 format:XRGB8888 transform:0 layer:-127 800x600 src:0,0,800,600 dst:0,0,640,480 cost:7
42 lbm:10240
display:2 format:RGB565 transform:0 layer:-127 2x2 src:0,0,2,2 dst:100,0,600,600 cost:453 lbm:1
024
# echo $?
0
#
the memtool calls had no visible effect.
any ideas? Thanks for your time
edit: no X running and
# fbset
mode "800x600"
geometry 800 600 800 600 32
timings 0 0 0 0 0 0 0
rgba 8/16,8/8,8/0,8/24
endmode
# dd if=/dev/zero of=/dev/fb0 bs=1M count=1
1+0 records in
1+0 records out
#
had no effect on the rainbow
Note: The rainbow is not displayed in the framebuffer. It is a simple 2x2 pixel test pattern scaled up.
If you are seeing the rainbow then you'll have no ability to alter the pixels by poking memory indicated by /chosen/framebuffer.
The normal procedure is for the rainbow to be replaced with that framebuffer before the kernel is launched, but that is not happening with your configuration for some reason.
Note: The rainbow is not displayed in the framebuffer. It is a simple 2x2 pixel test pattern scaled up.
If you are seeing the rainbow then you'll have no ability to alter the pixels by poking memory indicated by
/chosen/framebuffer. The normal procedure is for the rainbow to be replaced with that framebuffer before the kernel is launched, but that is not happening with your configuration for some reason.
I used db variety of start and fixup (4) files. Maybe this boot log has any useful info ?
0.52 RPi: BOOTSYS release VERSION:69471177 DATE: 2025/05/08 TIME: 16:21:35
0.52 BOOTMODE: 0x06 partition 0 build-ts BUILD_TIMESTAMP=1746717695 serial 4cdc7421 boardrev a03150 stc 528159
0.53 PM_RSTS 00000020
0.54 POWER_OFF_ON_HALT: 1 WAIT_FOR_POWER_BUTTON 0 power-on-reset 0
0.54 part 00000000 reset_info 00000000
0.54 uSD voltage 3.3V
0.57 Initialising SDRAM rank 1 total-size: 8 Gbit 3200 (0x07 0x00)
0.57 DDR 3200 0 0 8 152 BL:3
1.53 OTP boardrev a03150 bootrom c8b0 c8b0
1.53 Customer key hash 3c26a85c347c623373c9a66d3cd572f79b3f8daa22208f84562260a5c57c411f
1.54 VC-JTAG unlocked
1.57 bootconf.sig
1.57 hash: b503f8ad7f8aea93a272a5ba5248cc5222d0c55af28a4345d0a496bdba9d16bf
1.57 rsa2048: 6bd18f209d06f4dc391b25493debf0c4dc8a63cb2a3c65ba4bffa5f7b016a73cac477c00e39d6ba2dc06d21b15cf7bb1c912d11cc34e7ef04ee0388e4b9f497a8c38d262bfe3792a3c8af33cff4b44b81653e6b57ec366f3016d206120691b5e8b5563fbc116313c5a1b0dcbda3ed07f0c0862386c138cbabcdd1217d927596e4213d0967639e10775495a78c5b35c2cfef9673251a61945c4350fd3877a19808446e5d0a62b4ae585a27508d6217370c4406d40b70e11f06169dabdb10cf71bf5043a2d0ee15828898adbbf5ba13d1d78e3f01302da157311fd2c3b934b609c54898b2433904e0347ec95e9a6104307094227961964e2c26da9ae6274c51c10
1.62 RSA verify
1.39 rsa-verify pass (0x0)
1.88 RPi: BOOTLOADER release VERSION:69471177 DATE: 2025/05/08 TIME: 16:21:35
1.88 BOOTMODE: 0x06 partition 0 build-ts BUILD_TIMESTAMP=1746717695 serial 4cdc7421 boardrev a03150 stc 1888124
1.98 Unsupported boot order 4
1.17 Unsupported boot order 6
1.20 Unsupported boot order 2
1.28 Boot mode: SD (01) order f5
2.07 SD HOST: 200000000 CTL0: 0x00800000 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276
2.08 SD HOST: 200000000 CTL0: 0x00800f00 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276
2.19 EMMC
2.29 SD retry 1 oc 0
2.32 SD HOST: 200000000 CTL0: 0x00800000 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276
2.33 OCR c0ff8080 [0]
CID: 00150100384754463452061493ba5d6a
2.35 SD HOST: 200000000 CTL0: 0x00800f04 BUS: 25000000 Hz actual: 25000000 HZ div: 8 (4) status: 0x1fff0000 delay: 4
2.36 SD HOST: 200000000 CTL0: 0x00800f04 BUS: 50000000 Hz actual: 50000000 HZ div: 4 (2) status: 0x1fff0000 delay: 2
2.37 MBR: 0x00000001, 262144 type: 0x0c
2.37 MBR: 0x00040001, 2048 type: 0x0c
2.37 MBR: 0x00040801, 2048 type: 0x0c
2.38 MBR: 0x00041001,13778949 type: 0x0f
2.86 Trying partition: 0
2.00 type: 16 lba: 1 'mkfs.fat' ' V ^ ' clusters 65399 (4)
2.40 rsc 4 fat-sectors 256 root dir cluster 1 sectors 32 entries 512
2.40 FAT16 clusters 65399
2.41 [sdcard] autoboot.txt not found
2.41 Select partition rsts 0 C(boot_partition) 0 EEPROM config 0 result 1
2.22 Trying partition: 1
2.24 type: 16 lba: 1 'mkfs.fat' ' V ^ ' clusters 65399 (4)
2.43 rsc 4 fat-sectors 256 root dir cluster 1 sectors 32 entries 512
2.43 FAT16 clusters 65399
2.39 secure-boot
2.41 Loading boot.img ...
2.44 boot.sig
2.44 hash: 8ff84416629136f3d22e62101416306fa671a492324a69b3efe56135f4464139
2.45 ts: 1750327846
2.45 rsa2048: a90225f2c857e6013983a4a1afac329c88fdaf6a224fab247db3d9759dad727481d78de33930a91e7cbf91756952ae568925bee925fcbd0944b518dcd22bfa10a72efacf934f4afe47c6e27a3d07239126a88667f819b4d8ee27ed85a203549c8c92eabe1dad0486f9d9a734e6d1fb6c459881c9a2e64aab986f43d465ba6e5ac539de7c5bf76181ee029cdddbbc4122ddb2eeaf0aabf797a227c05a9b74b1e153c667519b7e70fb40abd46081a43fc96ea94b27b94e6f7d65a0e6857e45db791dafe10f4728652fbbaed01cc7d9164d995e764b1b1528ce685fd2b178eabb30b3d6d5ffafea5c556a330ab525527f3486acde241e2967f48d8f8829832add53
3.13 Verifying
3.99 RSA verify
4.08 rsa-verify pass (0x0)
4.03 MBR: 0x00000000, 0 type: 0x00
4.03 MBR: 0x00000000, 0 type: 0x00
4.04 MBR: 0x00000000, 0 type: 0x00
4.04 MBR: 0x00000000, 0 type: 0x00
4.49 Trying partition: 0
4.52 type: 16 lba: 0 'mkfs.fat' ' V ^ ' clusters 4589 (4)
4.05 rsc 4 fat-sectors 20 root dir cluster 1 sectors 32 entries 512
4.06 FAT16 clusters 4589
4.68 Read config.txt bytes 833 hnd 0xedd
4.07 [ramdisk] recover4.elf not found
4.07 [ramdisk] recovery.elf not found
4.09 Read start4db.elf bytes 3762440 hnd 0x358
4.11 Read fixup4db.dat bytes 8447 hnd 0xed7
4.15 0x00a03150 0x00000000 0x00001fff
4.19 MEM GPU: 64 ARM: 960 TOTAL: 1024
4.34 Firmware: 17084b403fb60475b8ee2641c26049a7d54bf153 May 14 2025 12:24:03
4.88 Starting start4db.elf @ 0xfec00200 partition 0
4.30 PCI0 reset
4.35 +
MESS:00:00:04.463632:0: brfs: File read: /mfs/sd/config.txt
MESS:00:00:04.466808:0: brfs: File read: 833 bytes
MESS:00:00:04.492107:0: HDMI0:EDID error reading EDID block 0 attempt 0
MESS:00:00:04.496616:0: HDMI0:EDID giving up on reading EDID block 0
MESS:00:00:04.502014:0: brfs: File read: /mfs/sd/config.txt
MESS:00:00:04.507633:0: gpioman: gpioman_get_pin_num: pin DISPLAY_SDA not defined
MESS:00:00:04.514196:0: gpioman: gpioman_get_pin_num: pin LEDS_PWR_OK not defined
ASRT:00:00:04.806779:0: ../../../../../vcfw/drivers/chip/vciv/2708/power.c::power_set_voltage!3455: uV >= platform_get_min_core_voltage() * 1000 && uV <= platform_get_max_core_voltage() * 1000 + (BCM2836 ? 12500:0)
ASRT:00:00:04.823791:0: ../../../../../vcfw/drivers/chip/vciv/2708/power.c::power_set_voltage!3455: uV >= platform_get_min_core_voltage() * 1000 && uV <= platform_get_max_core_voltage() * 1000 + (BCM2836 ? 12500:0)
MESS:00:00:04.886044:0: gpioman: gpioman_get_pin_num: pin LEDS_PWR_OK not defined
MESS:00:00:04.890598:0: *** Restart logging
MESS:00:00:04.894334:0: brfs: File read: 833 bytes
MESS:00:00:04.904002:0: hdmi: HDMI0:EDID error reading EDID block 0 attempt 0
MESS:00:00:04.909032:0: hdmi: HDMI0:EDID giving up on reading EDID block 0
MESS:00:00:04.919657:0: hdmi: HDMI0:EDID error reading EDID block 0 attempt 0
MESS:00:00:04.924681:0: hdmi: HDMI0:EDID giving up on reading EDID block 0
MESS:00:00:04.937539:0: HDMI0: hdmi_pixel_encoding: 300000000
ASRT:00:00:04.941030:0: ../../../../../vcfw/drivers/chip/vciv/2708/i2c.c::i2c_open!461: (open->periph_setup->port == I2C_PORT_0 && (open->periph_setup->sda_pin == 0 || open->periph_setup->sda_pin == 28 || open->periph_setup->sda_pin == 44 || open->periph_s
MESS:00:00:05.112592:0: I2C bus 0 stalled - SCL stuck?
ASRT:00:00:05.452238:0: ../../../../../vcfw/drivers/chip/vciv/2708/i2c.c::i2c_open!461: (open->periph_setup->port == I2C_PORT_0 && (open->periph_setup->sda_pin == 0 || open->periph_setup->sda_pin == 28 || open->periph_setup->sda_pin == 44 || open->periph_s
ASRT:00:00:05.859482:0: ../../../../../vcfw/drivers/chip/vciv/2708/i2c.c::i2c_open!461: (open->periph_setup->port == I2C_PORT_0 && (open->periph_setup->sda_pin == 0 || open->periph_setup->sda_pin == 28 || open->periph_setup->sda_pin == 44 || open->periph_s
ASRT:00:00:06.266730:0: ../../../../../vcfw/drivers/chip/vciv/2708/i2c.c::i2c_open!461: (open->periph_setup->port == I2C_PORT_0 && (open->periph_setup->sda_pin == 0 || open->periph_setup->sda_pin == 28 || open->periph_setup->sda_pin == 44 || open->periph_s
MESS:00:00:06.674465:0: brfs: File read: /mfs/sd/bcm2711-rpi-cm4s.dtb
MESS:00:00:06.677798:0: Loaded 'bcm2711-rpi-cm4s.dtb' to 0x2600000 size 0xce28
MESS:00:00:06.697807:0: brfs: File read: 52776 bytes
MESS:00:00:06.701628:0: brfs: File read: /mfs/sd/overlays/overlay_map.dtb
MESS:00:00:06.726561:0: brfs: File read: 5195 bytes
MESS:00:00:06.728469:0: brfs: File read: /mfs/sd/config.txt
MESS:00:00:06.738672:0: brfs: File read: 833 bytes
MESS:00:00:06.743907:0: brfs: File read: /mfs/sd/overlays/disable-bt.dtbo
MESS:00:00:06.776227:0: dterror: can't find symbol 'bt'
MESS:00:00:06.778387:0: dterror: Failed to resolve overlay 'disable-bt'
MESS:00:00:06.785037:0: brfs: File read: 1073 bytes
MESS:00:00:06.790516:0: brfs: File read: /mfs/sd/overlays/disable-wifi.dtbo
MESS:00:00:06.817418:0: Loaded overlay 'disable-wifi'
MESS:00:00:06.854310:0: brfs: File read: 387 bytes
MESS:00:00:06.861877:0: brfs: File read: /mfs/sd/overlays/vc4-kms-v3d-pi4.dtbo
MESS:00:00:07.020407:0: Loaded overlay 'vc4-kms-v3d-pi4'
MESS:00:00:07.022842:0: dtparam: i2c1=on
MESS:00:00:07.420458:0: brfs: File read: 3913 bytes
MESS:00:00:07.425112:0: brfs: File read: /mfs/sd/overlays/m41t80.dtbo
MESS:00:00:07.442721:0: Loaded overlay 'm41t80'
MESS:00:00:07.444176:0: dtparam: i2c_bus=1
MESS:00:00:07.448112:0: dterror: override i2c_bus: data is truncated or mangled
MESS:00:00:07.477781:0: brfs: File read: 433 bytes
MESS:00:00:07.483368:0: brfs: File read: /mfs/sd/overlays/pwm.dtbo
MESS:00:00:07.502898:0: Loaded overlay 'pwm'
MESS:00:00:07.543829:0: brfs: File read: 948 bytes
MESS:00:00:07.549423:0: brfs: File read: /mfs/sd/overlays/pwmtest.dtbo
MESS:00:00:07.569358:0: Loaded overlay 'pwmtest'
MESS:00:00:07.570926:0: dtparam: spi=on
MESS:00:00:07.645683:0: brfs: File read: 495 bytes
MESS:00:00:07.650349:0: brfs: File read: /mfs/sd/overlays/mcp2515-can1.dtbo
MESS:00:00:07.678422:0: Loaded overlay 'mcp2515-can1'
MESS:00:00:07.680399:0: dtparam: oscillator=20000000
MESS:00:00:07.685966:0: dtparam: interrupt=25
MESS:00:00:07.690725:0: dtparam: spimaxfrequency=500000
MESS:00:00:07.803808:0: brfs: File read: 1793 bytes
MESS:00:00:07.806019:0: brfs: File read: /mfs/sd/overlays/ads7846.dtbo
MESS:00:00:07.843323:0: Loaded overlay 'ads7846'
MESS:00:00:07.844862:0: dtparam: cs=0
MESS:00:00:07.849465:0: dtparam: penirq=26
MESS:00:00:07.854571:0: dtparam: xohms=600
MESS:00:00:07.857176:0: dtparam: settle=5
MESS:00:00:07.867303:0: Unknown dtparam 'settle' - ignored
MESS:00:00:07.869708:0: dtparam: speed=100000
MESS:00:00:07.990969:0: brfs: File read: 2402 bytes
MESS:00:00:07.997865:0: brfs: File read: /mfs/sd/overlays/uart1.dtbo
MESS:00:00:08.018016:0: Loaded overlay 'uart1'
MESS:00:00:08.019384:0: dtparam: txd1_pin=32
MESS:00:00:08.023930:0: dtparam: rxd1_pin=33
MESS:00:00:08.110350:0: brfs: File read: 988 bytes
MESS:00:00:08.112274:0: brfs: File read: /mfs/sd/cmdline.txt
MESS:00:00:08.117474:0: Read command line from file 'cmdline.txt':
MESS:00:00:08.123346:0: 'rootwait console=tty1 fbcon=map:0 console=ttyAMA0,115200 cma=256M'
MESS:00:00:08.191931:0: CMA size reduced to 256MB (total_mem 1024MB, gpu_mem 64MB)
MESS:00:00:08.288561:0: brfs: File read: 66 bytes
MESS:00:00:08.295001:0: brfs: File read: /mfs/sd/u-boot.bin
MESS:00:00:08.297468:0: Loaded 'u-boot.bin' to 0x8000 size 0x91eb4
MESS:00:00:08.303385:0: Device tree loaded to 0x2600000 (size 0xd961)
MESS:00:00:08.311648:0: uart: Set PL011 baud rate to 103448.300000 Hz
MESS:00:00:08.318607:0: uart: Baud rate change done...
MESS:00:00:08.320626:0: uart: Baud rate change done...
The normal procedure is for the rainbow to be replaced with that framebuffer before the kernel is launched, but that is not happening with your configuration for some reason.
does this happen automagically by the loader or does it require an initramfs script ?
# ./vcgencmd dispmanx_list
display:0 format:XRGB8888 transform:0 layer:-127 800x600 src:0,0,800,600 dst:0,0,640,480 cost:742 lbm:10240
display:2 format:RGB565 transform:0 layer:-127 2x2 src:0,0,2,2 dst:100,0,600,600 cost:453 lbm:1024
You have 2 displays configured. From your config.txt
# force 800x600 60Hz
hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=9
framebuffer_width=800
framebuffer_height=600
enable_dpi_lcd=1
display_lcd_rotate=0
display 0 is the DPI output and has an 800x600 plane on it. display 2 is HDMI and still has the rainbow screen on it (it should have magenta in the top left as it is the secondary screen). The simple-framebuffer is only ever routed to one display. Are you looking at the wrong screen?
There is only one screen. DPI -> TFP401-> LVDS driver-> display
There is only one screen. DPI -> TFP401-> LVDS driver-> display
Then you've misconfigured the firmware.
dpi_group=2
dpi_mode=9
framebuffer_width=800
framebuffer_height=600
enable_dpi_lcd=1
Do NOT set hdmi_force_hotplug=1 as you're telling the firmware that HDMI is there regardless of hotplug signal.
I've just tested that, and with no HDMI display connected I have
display:0 format:XRGB8888 transform:0 layer:-127 800x600 src:0,0,800,600 dst:0,0,640,480 cost:742 lbm:10240
and no display:2 list entry.
It may have no influence, but it cleans things up.
Thinking further, I'm not sure how you're expecting the DPI display to work when vc4 does take over - you appear to have no configuration that tells it to enable DPI. I'd expect a dtoverlay=vc4-kms-dpi-generic,<timings> or similar.
There is only one screen. DPI -> TFP401-> LVDS driver-> display
Then you've misconfigured the firmware.
dpi_group=2 dpi_mode=9 framebuffer_width=800 framebuffer_height=600 enable_dpi_lcd=1Do NOT set
hdmi_force_hotplug=1as you're telling the firmware that HDMI is there regardless of hotplug signal. I've just tested that, and with no HDMI display connected I havedisplay:0 format:XRGB8888 transform:0 layer:-127 800x600 src:0,0,800,600 dst:0,0,640,480 cost:742 lbm:10240and no display:2 list entry.
It may have no influence, but it cleans things up.
U-Boot>
U-Boot> reset
resetting ...
�
0.52 RPi: BOOTSYS release VERSION:69471177 DATE: 2025/05/08 TIME: 16:21:35
0.52 BOOTMODE: 0x06 partition 0 build-ts BUILD_TIMESTAMP=1746717695 serial 4cdc7421 boardrev a03150 stc 528159
0.53 PM_RSTS 00000020
0.54 POWER_OFF_ON_HALT: 1 WAIT_FOR_POWER_BUTTON 0 power-on-reset 0
0.54 part 00000000 reset_info 00000000
0.54 uSD voltage 3.3V
0.57 Initialising SDRAM rank 1 total-size: 8 Gbit 3200 (0x07 0x00)
0.57 DDR 3200 0 0 8 152 BL:3
1.53 OTP boardrev a03150 bootrom c8b0 c8b0
1.53 Customer key hash 3c26a85c347c623373c9a66d3cd572f79b3f8daa22208f84562260a5c57c411f
1.54 VC-JTAG unlocked
1.56 bootconf.sig
1.56 hash: b503f8ad7f8aea93a272a5ba5248cc5222d0c55af28a4345d0a496bdba9d16bf
1.57 rsa2048: 6bd18f209d06f4dc391b25493debf0c4dc8a63cb2a3c65ba4bffa5f7b016a73cac477c00e39d6ba2dc06d21b15cf7bb1c912d11cc34e7ef04ee0388e4b9f497a8c38d262bfe3792a3c8af33cff4b44b81653e6b57ec366f3016d206120691b5e8b5563fbc116313c5a1b0dcbda3ed07f0c0862386c138cbabcdd1217d927596e4213d0967639e10775495a78c5b35c2cfef9673251a61945c4350fd3877a19808446e5d0a62b4ae585a27508d6217370c4406d40b70e11f06169dabdb10cf71bf5043a2d0ee15828898adbbf5ba13d1d78e3f01302da157311fd2c3b934b609c54898b2433904e0347ec95e9a6104307094227961964e2c26da9ae6274c51c10
1.62 RSA verify
1.38 rsa-verify pass (0x0)
1.88 RPi: BOOTLOADER release VERSION:69471177 DATE: 2025/05/08 TIME: 16:21:35
1.88 BOOTMODE: 0x06 partition 0 build-ts BUILD_TIMESTAMP=1746717695 serial 4cdc7421 boardrev a03150 stc 1887200
1.97 Unsupported boot order 4
1.16 Unsupported boot order 6
1.19 Unsupported boot order 2
1.27 Boot mode: SD (01) order f5
2.07 SD HOST: 200000000 CTL0: 0x00800000 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276
2.08 SD HOST: 200000000 CTL0: 0x00800f00 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276
2.19 EMMC
2.29 SD retry 1 oc 0
2.32 SD HOST: 200000000 CTL0: 0x00800000 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276
2.33 OCR c0ff8080 [0]
CID: 00150100384754463452061493ba5d6a
2.35 SD HOST: 200000000 CTL0: 0x00800f04 BUS: 25000000 Hz actual: 25000000 HZ div: 8 (4) status: 0x1fff0000 delay: 4
2.36 SD HOST: 200000000 CTL0: 0x00800f04 BUS: 50000000 Hz actual: 50000000 HZ div: 4 (2) status: 0x1fff0000 delay: 2
2.37 MBR: 0x00000001, 262144 type: 0x0c
2.37 MBR: 0x00040001, 2048 type: 0x0c
2.37 MBR: 0x00040801, 2048 type: 0x0c
2.38 MBR: 0x00041001,13778949 type: 0x0f
2.85 Trying partition: 0
2.99 type: 16 lba: 1 'mkfs.fat' ' V ^ ' clusters 65399 (4)
2.40 rsc 4 fat-sectors 256 root dir cluster 1 sectors 32 entries 512
2.40 FAT16 clusters 65399
2.41 [sdcard] autoboot.txt not found
2.41 Select partition rsts 0 C(boot_partition) 0 EEPROM config 0 result 1
2.21 Trying partition: 1
2.23 type: 16 lba: 1 'mkfs.fat' ' V ^ ' clusters 65399 (4)
2.42 rsc 4 fat-sectors 256 root dir cluster 1 sectors 32 entries 512
2.43 FAT16 clusters 65399
2.38 secure-boot
2.40 Loading boot.img ...
2.44 boot.sig
2.44 hash: ea3acb331e57dc549c900c09a4838d09ce4fee531e74d49ed9293908603b42ae
2.45 ts: 1750339082
2.45 rsa2048: 1c95f5b305cf0442e168a5fd694ae10822dae8324e724a3e3ff02590ecac5fb3f0f409d78d178b3e28256317462363421294614a1cac43e01bdfbbab10c1758838aef7853b36f0755b77945250f9cc36dfa5bb2778b764e4a63ffafc26a5f1125993fcffa5a2265a088d372ad638fccd3a5ddea7d9a684e8d5bd6cf722ff4c501356b7f688086947ba4a8c6602ac27a47d863b6e4b2f3415c31f3625389d381bf0c7379b1361aff7e93bcf3d9a91699c1541f5d0c99616770dc5ff50ba62354c7c2fb58e27d008a08d916dcaa45572fd0f560cdbe8857ef0c5bc5438a1df9c65559e692cae581c9dc2fc40d1e49e0b608e967cf7c0fe4faa6b2ab2bd89d557de
3.44 Verifying
4.98 RSA verify
4.93 rsa-verify pass (0x0)
5.02 MBR: 0x00000000, 0 type: 0x00
5.02 MBR: 0x00000000, 0 type: 0x00
5.02 MBR: 0x00000000, 0 type: 0x00
5.03 MBR: 0x00000000, 0 type: 0x00
5.35 Trying partition: 0
5.37 type: 16 lba: 0 'mkfs.fat' ' V ^ ' clusters 7655 (4)
5.04 rsc 4 fat-sectors 32 root dir cluster 1 sectors 32 entries 512
5.04 FAT16 clusters 7655
5.53 Read config.txt bytes 904 hnd 0x148f
5.05 [ramdisk] recover4.elf not found
5.06 [ramdisk] recovery.elf not found
5.97 Read start4db.elf bytes 3756808 hnd 0x358
5.99 Read fixup4db.dat bytes 8450 hnd 0x1485
5.03 0x00a03150 0x00000000 0x00001fff
5.06 MEM GPU: 64 ARM: 960 TOTAL: 1024
5.21 Firmware: 2808975b80149bbfe86844655fe45c7de66fc078 Aug 30 2024 19:18:03
5.75 Starting start4db.elf @ 0xfec00200 partition 0
5.29 PCI0 reset
5.34 +
MESS:00:00:05.451506:0: brfs: File read: /mfs/sd/config.txt
MESS:00:00:05.454671:0: brfs: File read: 904 bytes
MESS:00:00:05.478949:0: HDMI0:EDID error reading EDID block 0 attempt 0
MESS:00:00:05.483457:0: HDMI0:EDID giving up on reading EDID block 0
MESS:00:00:05.488874:0: brfs: File read: /mfs/sd/config.txt
MESS:00:00:05.494475:0: gpioman: gpioman_get_pin_num: pin DISPLAY_SDA not defined
MESS:00:00:05.501038:0: gpioman: gpioman_get_pin_num: pin LEDS_PWR_OK not defined
ASRT:00:00:05.793026:0: ../../../../../vcfw/drivers/chip/vciv/2708/power.c::power_set_voltage!3455: uV >= platform_get_min_core_voltage() * 1000 && uV <= platform_get_max_core_voltage() * 1000 + (BCM2836 ? 12500:0)
ASRT:00:00:05.810033:0: ../../../../../vcfw/drivers/chip/vciv/2708/power.c::power_set_voltage!3455: uV >= platform_get_min_core_voltage() * 1000 && uV <= platform_get_max_core_voltage() * 1000 + (BCM2836 ? 12500:0)
MESS:00:00:05.872266:0: gpioman: gpioman_get_pin_num: pin LEDS_PWR_OK not defined
MESS:00:00:05.876819:0: *** Restart logging
MESS:00:00:05.880555:0: brfs: File read: 904 bytes
MESS:00:00:05.890234:0: hdmi: HDMI0:EDID error reading EDID block 0 attempt 0
MESS:00:00:05.895263:0: hdmi: HDMI0:EDID giving up on reading EDID block 0
MESS:00:00:05.905889:0: hdmi: HDMI0:EDID error reading EDID block 0 attempt 0
MESS:00:00:05.910913:0: hdmi: HDMI0:EDID giving up on reading EDID block 0
MESS:00:00:05.916512:0: hdmi: HDMI:hdmi_get_state is deprecated, use hdmi_get_display_state instead
MESS:00:00:05.925275:0: HDMI0: hdmi_pixel_encoding: 300000000
MESS:00:00:05.931913:0: brfs: File read: /mfs/sd/bcm2711-rpi-cm4s.dtb
MESS:00:00:05.936909:0: Loaded 'bcm2711-rpi-cm4s.dtb' to 0x2600000 size 0xce28
MESS:00:00:05.956912:0: brfs: File read: 52776 bytes
MESS:00:00:05.960701:0: brfs: File read: /mfs/sd/overlays/overlay_map.dtb
MESS:00:00:05.983931:0: brfs: File read: 5195 bytes
MESS:00:00:05.985856:0: brfs: File read: /mfs/sd/config.txt
MESS:00:00:05.991186:0: brfs: File read: 904 bytes
MESS:00:00:05.996117:0: brfs: File read: /mfs/sd/overlays/disable-bt.dtbo
MESS:00:00:06.012651:0: dterror: can't find symbol 'bt'
MESS:00:00:06.014764:0: dterror: Failed to resolve overlay 'disable-bt'
MESS:00:00:06.021235:0: brfs: File read: 1073 bytes
MESS:00:00:06.026349:0: brfs: File read: /mfs/sd/overlays/disable-wifi.dtbo
MESS:00:00:06.040858:0: Loaded overlay 'disable-wifi'
MESS:00:00:06.056673:0: brfs: File read: 387 bytes
MESS:00:00:06.061573:0: brfs: File read: /mfs/sd/overlays/vc4-kms-v3d-pi4.dtbo
MESS:00:00:06.126663:0: Loaded overlay 'vc4-kms-v3d-pi4'
MESS:00:00:06.128963:0: dtparam: i2c1=on
MESS:00:00:06.288679:0: brfs: File read: 3913 bytes
MESS:00:00:06.291996:0: brfs: File read: /mfs/sd/overlays/m41t80.dtbo
MESS:00:00:06.302216:0: Loaded overlay 'm41t80'
MESS:00:00:06.303633:0: dtparam: i2c_bus=1
MESS:00:00:06.307501:0: dterror: override i2c_bus: data is truncated or mangled
MESS:00:00:06.323647:0: brfs: File read: 433 bytes
MESS:00:00:06.327457:0: brfs: File read: /mfs/sd/overlays/pwm.dtbo
MESS:00:00:06.337727:0: Loaded overlay 'pwm'
MESS:00:00:06.354683:0: brfs: File read: 948 bytes
MESS:00:00:06.358499:0: brfs: File read: /mfs/sd/overlays/pwmtest.dtbo
MESS:00:00:06.369150:0: Loaded overlay 'pwmtest'
MESS:00:00:06.370667:0: dtparam: spi=on
MESS:00:00:06.402532:0: brfs: File read: 495 bytes
MESS:00:00:06.405823:0: brfs: File read: /mfs/sd/overlays/mcp2515-can1.dtbo
MESS:00:00:06.420471:0: Loaded overlay 'mcp2515-can1'
MESS:00:00:06.422411:0: dtparam: oscillator=20000000
MESS:00:00:06.427457:0: dtparam: interrupt=25
MESS:00:00:06.431797:0: dtparam: spimaxfrequency=500000
MESS:00:00:06.479862:0: brfs: File read: 1793 bytes
MESS:00:00:06.481845:0: brfs: File read: /mfs/sd/overlays/ads7846.dtbo
MESS:00:00:06.500357:0: Loaded overlay 'ads7846'
MESS:00:00:06.501860:0: dtparam: cs=0
MESS:00:00:06.505744:0: dtparam: penirq=26
MESS:00:00:06.510061:0: dtparam: xohms=600
MESS:00:00:06.513400:0: dtparam: settle=5
MESS:00:00:06.519682:0: Unknown dtparam 'settle' - ignored
MESS:00:00:06.522054:0: dtparam: speed=100000
MESS:00:00:06.572891:0: brfs: File read: 2402 bytes
MESS:00:00:06.577486:0: brfs: File read: /mfs/sd/overlays/uart1.dtbo
MESS:00:00:06.587419:0: Loaded overlay 'uart1'
MESS:00:00:06.588750:0: dtparam: txd1_pin=32
MESS:00:00:06.592965:0: dtparam: rxd1_pin=33
MESS:00:00:06.630012:0: brfs: File read: 988 bytes
MESS:00:00:06.631822:0: brfs: File read: /mfs/sd/cmdline.txt
MESS:00:00:06.637089:0: Read command line from file 'cmdline.txt':
MESS:00:00:06.642975:0: 'rootwait console=tty1 fbcon=map:0 console=ttyAMA0,115200 cma=256M'
MESS:00:00:06.682985:0: CMA size reduced to 256MB (total_mem 1024MB, gpu_mem 64MB)
MESS:00:00:06.779147:0: brfs: File read: 66 bytes
MESS:00:00:06.785571:0: brfs: File read: /mfs/sd/u-boot.bin
MESS:00:00:06.788041:0: Loaded 'u-boot.bin' to 0x8000 size 0x91eb4
MESS:00:00:06.793957:0: Device tree loaded to 0x2600000 (size 0xd8bc)
MESS:00:00:06.801863:0: uart: Set PL011 baud rate to 103448.300000 Hz
MESS:00:00:06.809176:0: uart: Baud rate change done...
MESS:00:00:06.811198:0: uart: Baud rate change done...
U-Boot 2025.01 (Jun 19 2025 - 14:17:52 +0100)
DRAM: 960 MiB
RPI: Board rev 0x15 unknown
RPI Unknown model (0xa03150)
Core: 209 devices, 14 uclasses, devicetree: board
MMC: mmc@7e340000: 0
Loading Environment from nowhere... OK
In: serial,usbkbd
Out: serial,vidconsole
Err: serial,vidconsole
Net: No ethernet found.
Working FDT set to 2600000
Hit any key to stop autoboot: 0
4345 bytes read in 12 ms (353.5 KiB/s)
LOADED BOOT.SCR
sha256 for 00008000 ... 000090f8 ==> 6ad755ab6b7348d02e8631531619e3bad9a80444cf4215dbf6dd9c80f808b416
HASHED OK
HASH CHECK PASS
## Executing script at 00008000
gpio: pin 40 (gpio 40) value is 1
gpio: pin 41 (gpio 41) value is 1
Working FDT set to 2600000
... fdt list /chosen ...
chosen {
user-warnings = [64 74 65 72 72 6f 72 3a 20 63 61 6e 27 74 20 66 69 6e 64 20 73 79 6d 62 6f 6c 20 27 62 74 27 0a 64 74 65 72 72 6f 72 3a 20 46 61 69 6c 65 64 20 74 6f 20 72 65 73 6f 6c 76 65 20 6f 76 65 72 6c 61 79 20 27 64 69 73 61 62 6c 65 2d 62 74 27 0a 64 74 65 72 72 6f 72 3a 20 20 20 6f 76 65 72 72 69 64 65 20 69 32 63 5f 62 75 73 3a 20 64 61 74 61 20 69 73 20 74 72 75 6e 63 61 74 65 64 20 6f 72 20 6d 61 6e 67 6c 65 64 0a];
ranges;
#size-cells = <0x00000001>;
#address-cells = <0x00000001>;
compatible = "simple_bus";
rng-seed = <0xc250a95c 0x13f43f79 0x6fd749e6 0x58890038 0xae0c4b6d 0xe210e2e6 0x61639282 0xe9a70385 0xa0368770 0xdc5efefa 0x0e652bd2 0x97b04421 0xbe411e0a 0xf41deb79 0x11509818 0xe34df980>;
kaslr-seed = <0x937eb03e 0xc1cdb18d>;
os_prefix = [00];
overlay_prefix = "overlays/";
rpi-boardrev-ext = <0x40000000>;
log = <0x3ff80000 0x0007ffe0>;
stdout-path = "serial0:115200n8";
bootargs = "coherent_pool=1M snd_bcm2835.enable_headphones=0 snd_bcm2835.enable_hdmi=0 8250.nr_uarts=1 smsc95xx.macaddr=B8:27:EB:DC:74:21 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 rootwait console=tty1 fbcon=map:0 console=ttyAMA0,115200 cma=256M";
phandle = <0x00000046>;
framebuffer@3e9ec000 {
};
bootloader {
};
};
... fdt list /chosen/framebuffer@3e9ec000 ...
framebuffer@3e9ec000 {
status = "okay";
compatible = "simple-framebuffer";
format = "a8r8g8b8";
stride = <0x00000c80>;
height = <0x00000258>;
width = <0x00000320>;
reg = <0x3e9ec000 0x001db000>;
};
--- bdinfo start ---
boot_params = 0x00000100
DRAM bank = 0x00000000
-> start = 0x00000000
-> size = 0x3c000000
flashstart = 0x00000000
flashsize = 0x00000000
flashoffset = 0x00000000
baudrate = 115200 bps
relocaddr = 0x3bf62000
reloc off = 0x3bf5a000
Build = 32-bit
current eth = unknown
eth-1addr = (not set)
IP addr = <NULL>
fdt_blob = 0x3bb505d0
lmb_dump_all:
memory.count = 0x1
memory[0] [0x0-0x3bffffff], 0x3c000000 bytes, flags: none
reserved.count = 0x5
reserved[0] [0x0-0xfff], 0x1000 bytes, flags: no-overwrite
reserved[1] [0x8000-0x90f8], 0x10f9 bytes, flags: none
reserved[2] [0x3ab39000-0x3ab4ffff], 0x17000 bytes, flags: no-notify, no-overwrite
reserved[3] [0x3ab505b0-0x3bffffff], 0x14afa50 bytes, flags: no-overwrite
reserved[4] [0x3f1e2380-0x3f1e2487], 0x108 bytes, flags: no-map
devicetree = board
serial addr = 0xfe201000
width = 0x00000004
shift = 0x00000002
offset = 0x00000000
clock = 0x00000000
arch_number = 0x00000000
TLB addr = 0x3bff0000
irq_sp = 0x3bb505c0
sp start = 0x3bb505b0
Early malloc usage: 4d8 / 2000
--- bdinfo end ---
1888138 bytes read in 91 ms (19.8 MiB/s)
Image size : 800 x 590
Bits per pixel: 32
Compression : 3
loading vars from external environment file...
16384 bytes read in 11 ms (1.4 MiB/s)
-- rootfs: system0 (/dev/mmcblk0p7), remaining: 2 --
-- using kernel A (/dev/mmcblk0p5), remaining: 2 --
exporting RAUC + fake RAUC vars to mmc 0:1 uboot.env
16384 bytes written in 14 ms (1.1 MiB/s)
export done
fdt_addr_r: 0x2600000
kernel_addr_r: 0x8000000
bootargs: coherent_pool=1M snd_bcm2835.enable_headphones=0 snd_bcm2835.enable_hdmi=0 8250.nr_uarts=1 smsc95xx.macaddr=B8:27:EB:DC:74:21 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 rootwait console=tty1 fbcon=map:0 console=ttyAMA0,115200 cma=256M root=/dev/mmcblk0p7 rauc.slot=system0 fakerauc.kernel=A
loading kernel and booting...
7937264 bytes read in 349 ms (21.7 MiB/s)
Kernel image @ 0x8000000 [ 0x000000 - 0x791cf0 ]
## Flattened Device Tree blob at 02600000
Booting using the fdt blob at 0x2600000
Working FDT set to 2600000
Using Device Tree in place at 02600000, end 026108bb
Working FDT set to 2600000
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0
ignore my wonky debug prints in boot script, but now it doesn't have any video output at all.
dmesg
Populating /dev using udev: [ 4.381902] udevd[146]: starting version 3.2.14
[ 4.411698] udevd[147]: starting eudev-3.2.14
[ 4.603432] vc_sm_cma: module is from the staging directory, the quality is unknown, you have been warned.
[ 4.631055] rpi-gpiomem fe200000.gpiomem: window base 0xfe200000 size 0x00001000
[ 4.637650] bcm2835_vc_sm_cma_probe: Videocore shared memory driver
[ 4.641668] mc: Linux media interface: v0.10
[ 4.653875] rpi-gpiomem fe200000.gpiomem: initialised 1 regions as /dev/gpiomem
[ 4.661242] CAN device driver interface
[ 4.664354] [vc_sm_connected_init]: start
[ 4.701208] rtc-m41t80 1-0068: registered as rtc0
[ 4.704226] [vc_sm_connected_init]: installed successfully
[ 4.715330] rtc-m41t80 1-0068: setting system clock to 2025-06-19T13:51:00 UTC (1750341060)
[ 4.785668] videodev: Linux video capture interface: v2.00
[ 4.789869] brcmstb-i2c fef04500.i2c: @97500hz registered in polling mode
[ 4.808584] snd_bcm2835: module is from the staging directory, the quality is unknown, you have been warned.
[ 4.822636] bcm2835_mmal_vchiq: module is from the staging directory, the quality is unknown, you have been warned.
[ 4.828974] rpivid_hevc: module is from the staging directory, the quality is unknown, you have been warned.
[ 4.860731] rpivid feb10000.codec: Device registered as /dev/video19
[ 4.864287] mcp251x spi0.1 can0: MCP2515 successfully initialized.
[ 4.877389] bcm2835_v4l2: module is from the staging directory, the quality is unknown, you have been warned.
[ 4.893080] bcm2835_codec: module is from the staging directory, the quality is unknown, you have been warned.
[ 4.899935] bcm2835_isp: module is from the staging directory, the quality is unknown, you have been warned.
[ 4.925714] dwc2 fe980000.usb: supply vusb_d not found, using dummy regulator
[ 4.945225] bcm2835-codec bcm2835-codec: Device registered as /dev/video10
[ 4.954100] bcm2835-codec bcm2835-codec: Loaded V4L2 decode
[ 4.964101] bcm2835-codec bcm2835-codec: Device registered as /dev/video11
[ 4.972739] bcm2835-codec bcm2835-codec: Loaded V4L2 encode
[ 4.978381] dwc2 fe980000.usb: supply vusb_a not found, using dummy regulator
[ 4.984378] bcm2835-isp bcm2835-isp: Device node output[0] registered as /dev/video13
[ 5.001596] bcm2835-codec bcm2835-codec: Device registered as /dev/video12
[ 5.010283] bcm2835-codec bcm2835-codec: Loaded V4L2 isp
[ 5.020681] bcm2835-codec bcm2835-codec: Device registered as /dev/video18
[ 5.026216] bcm2835-isp bcm2835-isp: Device node capture[0] registered as /dev/video14
[ 5.027660] bcm2835-codec bcm2835-codec: Loaded V4L2 image_fx
[ 5.055451] bcm2835-codec bcm2835-codec: Device registered as /dev/video31
[ 5.060806] bcm2835-isp bcm2835-isp: Device node capture[1] registered as /dev/video15
[ 5.062387] bcm2835-codec bcm2835-codec: Loaded V4L2 encode_image
[ 5.070897] bcm2835-isp bcm2835-isp: Device node stats[2] registered as /dev/video16
[ 5.090837] bcm2835-isp bcm2835-isp: Register output node 0 with media controller
[ 5.100069] bcm2835-isp bcm2835-isp: Register capture node 1 with media controller
[ 5.109345] bcm2835-isp bcm2835-isp: Register capture node 2 with media controller
[ 5.121112] bcm2835-isp bcm2835-isp: Register capture node 3 with media controller
[ 5.131335] [drm] Initialized v3d 1.0.0 20180419 for fec00000.v3d on minor 0
[ 5.134479] bcm2835-isp bcm2835-isp: Device node output[0] registered as /dev/video20
[ 5.152045] bcm2835-isp bcm2835-isp: Device node capture[0] registered as /dev/video21
[ 5.173376] bcm2835-isp bcm2835-isp: Device node capture[1] registered as /dev/video22
[ 5.183477] bcm2835-isp bcm2835-isp: Device node stats[2] registered as /dev/video23
[ 5.193019] bcm2835-isp bcm2835-isp: Register output node 0 with media controller
[ 5.202853] bcm2835-isp bcm2835-isp: Register capture node 1 with media controller
[ 5.211769] bcm2835-isp bcm2835-isp: Register capture node 2 with media controller
[ 5.213843] dwc2 fe980000.usb: EPs: 8, dedicated fifos, 4080 entries in SPRAM
[ 5.219453] bcm2835-isp bcm2835-isp: Register capture node 3 with media controller
[ 5.237683] dwc2 fe980000.usb: DWC OTG Controller
[ 5.243521] dwc2 fe980000.usb: new USB bus registered, assigned bus number 1
[ 5.251888] bcm2835-isp bcm2835-isp: Loaded V4L2 bcm2835-isp
[ 5.251989] dwc2 fe980000.usb: irq 54, io mem 0xfe980000
[ 5.271063] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.06
[ 5.280706] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 5.289355] usb usb1: Product: DWC OTG Controller
[ 5.295385] usb usb1: Manufacturer: Linux 6.6.28-v7l dwc2_hsotg
[ 5.302442] usb usb1: SerialNumber: fe980000.usb
[ 5.311313] Console: switching to colour dummy device 80x30
[ 5.311424] hub 1-0:1.0: USB hub found
[ 5.321875] hub 1-0:1.0: 1 port detected
[ 5.371300] vc4-drm gpu: bound fe400000.hvs (ops vc4_hvs_ops [vc4])
[ 5.379136] Registered IR keymap rc-cec
[ 5.383503] rc rc0: vc4-hdmi-0 as /devices/platform/soc/fef00700.hdmi/rc/rc0
[ 5.390853] input: vc4-hdmi-0 as /devices/platform/soc/fef00700.hdmi/rc/rc0/input1
[ 5.402305] input: vc4-hdmi-0 HDMI Jack as /devices/platform/soc/fef00700.hdmi/sound/card0/input2
[ 5.411613] vc4-drm gpu: bound fef00700.hdmi (ops vc4_hdmi_ops [vc4])
[ 5.418611] vc4-drm gpu: bound fe004000.txp (ops vc4_txp_ops [vc4])
[ 5.425361] vc4-drm gpu: bound fe206000.pixelvalve (ops vc4_crtc_ops [vc4])
[ 5.432709] vc4-drm gpu: bound fe207000.pixelvalve (ops vc4_crtc_ops [vc4])
[ 5.440069] vc4-drm gpu: bound fe20a000.pixelvalve (ops vc4_crtc_ops [vc4])
[ 5.447356] vc4-drm gpu: bound fe216000.pixelvalve (ops vc4_crtc_ops [vc4])
[ 5.454709] vc4-drm gpu: bound fec12000.pixelvalve (ops vc4_crtc_ops [vc4])
[ 5.464286] [drm] Initialized vc4 0.0.0 20140616 for gpu on minor 1
[ 5.470778] vc4-drm gpu: [drm] Cannot find any crtc or sizes
[ 5.478622] vc4-drm gpu: [drm] Cannot find any crtc or sizes
done
# cat /proc/cmdline
coherent_pool=1M snd_bcm2835.enable_headphones=0 snd_bcm2835.enable_hdmi=0 8250.nr_uarts=1 smsc95xx.macaddr=B8:27:EB:DC:74:21 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 rootwait console=tty1 fbcon=map:0 console=ttyAMA0,115200 cma=256M root=/dev/mmcblk0p7 rauc.slot=system0 fakerauc.kernel=A
# ./vcgencmd dispmanx_list
# echo $?
0
#
And to answer your most recent comment, I am porting an old CM1-based project and these settings worked out the box with video output. Everything works except fb pre-linux, X with glamor etc. vc drivers make a fb that works later on. I have tried past releases of the firmware but that made no difference either. Thanks for your attention !
[ 5.470778] vc4-drm gpu: [drm] Cannot find any crtc or sizes
[ 5.478622] vc4-drm gpu: [drm] Cannot find any crtc or sizes
Expected if you've let vc4 start. You have no active connectors for vc4 to work with.
Define a DPI display that matches your screen using dtoverlay=vc4-kms-dpi-generic. https://pip.raspberrypi.com/categories/685-app-notes-guides-whitepapers/documents/RP-003471-WP/Using-a-DPI-display.pdf
I suspect that the screen you're seeing persist is actually from the TFP401 because it has lost the input signal.
If you want to use the old fbdev interface, then just remove dtoverlay=vc4-kms-v3d and use bcm2708_fb
(the -pi4 isn't required as it is automatically fixed up).