Hi again!
It took me a quite a while to do my best to understand most of the topics involved, but here I am with updated results following your indications.
I should mention that the official guide Troubleshooting KMS HDMI output at https://pip.raspberrypi.com/categories/ ... -output.pd also proved to be very useful.
However I was not successful on running KMS instead of FKMS with the current Kernel 6.16 and firmware 2025-05-16.
I've noticed changes on the screen behaviour. The following are produced with the current Raspberry Pi OS (Please excuse the inclination on the photos, I tried to prevent reflections)
Here it is an image of the rainbow screen. It makes me think it is trying to cover a bigger screen area.
![Image]()
Colors are also, not correct:
![Image]()
And kmscube is still under 1 fps, however colours are "degraded" .
![Image]()
This is what I have done so far:
1. Updated the firmware on the device. I used pieeprom-2025-05-16.bin
2. Using the "original" image 5.15 produced by the manufacturer running on the device, I extracted the edid using tvservice -d cs407.dat (I uploaded this file to this repo https://github.com/vidalastudillo/build ... /cs407.dat
3. If I rename that .dat file to end with .bin I'm able to open it with AW EDID Editor and inspect its content. Granted, I'm not versed on this, but I'm suspicious I was not able to find references to the 1024x600@60 Hz that is what I understand is the correct configuration for this LCD.
4. Per your suggestion I tried all this with the current Raspberry Pi OS 6.12.25+rpt-rpi-v8. I started with unmodified /boot/firmware/config.txt and /boot/firmware/cmdline.txt files, and from there I also tried various combinations of drm.edid_firmware=xyx and drm.edid_firmware=HDMI-A-1:xyz, display_auto_detect=1, hdmi_force_hotplug=1, video=HDMI-A-1:D, and several combinations of the hdmi_ "flags" from the original 5.15 config.txt.
5. The results using the Buildroot image are the same. When I run kmscube on it, I see warnings like these when consulting dmesg
So far, I think my issue is making sure the edid file I got is correct. I don't understand why if I call video=HDMI-A-1:1024x600@60D on the cmdline.txt it does not affect the results.
Also I ventured in trying to produce a EDID file based on the one I retrieved. However I must say that sometimes I'm just guessing. This is what I have tried:
Removing all the CEA Blocks except one and based on the following:
I determined these values:
Among my infinite doubts, for example, I assumed that Pixel Clock is 52,00 from the above <pixel_freq> 52000000
Here is an screenshot of that page from the editor.
![Image]()
Sadly, it did not provide any noticeable change on the results.
If you can provide me any guidance, I would be very grateful.
Thank you!
It took me a quite a while to do my best to understand most of the topics involved, but here I am with updated results following your indications.
I should mention that the official guide Troubleshooting KMS HDMI output at https://pip.raspberrypi.com/categories/ ... -output.pd also proved to be very useful.
However I was not successful on running KMS instead of FKMS with the current Kernel 6.16 and firmware 2025-05-16.
I've noticed changes on the screen behaviour. The following are produced with the current Raspberry Pi OS (Please excuse the inclination on the photos, I tried to prevent reflections)
Here it is an image of the rainbow screen. It makes me think it is trying to cover a bigger screen area.

Colors are also, not correct:

And kmscube is still under 1 fps, however colours are "degraded" .

This is what I have done so far:
1. Updated the firmware on the device. I used pieeprom-2025-05-16.bin
2. Using the "original" image 5.15 produced by the manufacturer running on the device, I extracted the edid using tvservice -d cs407.dat (I uploaded this file to this repo https://github.com/vidalastudillo/build ... /cs407.dat
3. If I rename that .dat file to end with .bin I'm able to open it with AW EDID Editor and inspect its content. Granted, I'm not versed on this, but I'm suspicious I was not able to find references to the 1024x600@60 Hz that is what I understand is the correct configuration for this LCD.
4. Per your suggestion I tried all this with the current Raspberry Pi OS 6.12.25+rpt-rpi-v8. I started with unmodified /boot/firmware/config.txt and /boot/firmware/cmdline.txt files, and from there I also tried various combinations of drm.edid_firmware=xyx and drm.edid_firmware=HDMI-A-1:xyz, display_auto_detect=1, hdmi_force_hotplug=1, video=HDMI-A-1:D, and several combinations of the hdmi_ "flags" from the original 5.15 config.txt.
5. The results using the Buildroot image are the same. When I run kmscube on it, I see warnings like these when consulting dmesg
Code:
[ 130.997351] ------------[ cut here ]------------[ 130.999010] joydev mcp251x[ 131.003619] WARNING: CPU: 3 PID: 54 at drivers/gpu/drm/vc4/vc4_kms.c:454 vc4_atomic_commit_tail+0x2c8/0x930 [vc4][ 131.005533] pinctrl_mcp23s08_i2c[ 131.010139] Modules linked in:[ 131.012922] can_dev rtc_ds1307[ 131.023172] cfg80211[ 131.026475] pinctrl_mcp23s08 goodix_ts[ 131.029519] 8021q[ 131.032649] spidev[ 131.034911] garp[ 131.038735] hci_uart[ 131.040736] stp[ 131.042824] regmap_i2c[ 131.044738] llc[ 131.047000] btbcm[ 131.048827] ipv6[ 131.051262] vc4[ 131.053089] joydev[ 131.055089] bluetooth[ 131.057003] mcp251x[ 131.058831] snd_soc_hdmi_codec[ 131.060918] pinctrl_mcp23s08_i2c[ 131.063266] v3d[ 131.065441] can_dev[ 131.068571] ecdh_generic[ 131.071874] rtc_ds1307[ 131.073702] cec[ 131.075876] pinctrl_mcp23s08[ 131.078486] bcm2835_codec(C)[ 131.080920] goodix_ts[ 131.082748] bcm2835_v4l2(C)[ 131.085703] spidev[ 131.088659] rpi_hevc_dec[ 131.091007] hci_uart[ 131.093876] bcm2835_isp(C)[ 131.095964] regmap_i2c[ 131.098573] drm_dma_helper[ 131.100834] btbcm[ 131.103617] ecc[ 131.106052] vc4[ 131.108834] raspberrypi_hwmon[ 131.110835] bluetooth[ 131.112663] gpu_sched[ 131.114490] snd_soc_hdmi_codec[ 131.117533] drm_display_helper[ 131.119881] v3d[ 131.122229] bcm2835_mmal_vchiq(C)[ 131.125359] ecdh_generic[ 131.128488] rfkill[ 131.130315] cec[ 131.133705] libaes[ 131.136315] bcm2835_codec(C)[ 131.138403] v4l2_mem2mem[ 131.140229] bcm2835_v4l2(C)[ 131.142317] drm_shmem_helper[ 131.145273] rpi_hevc_dec[ 131.147882] vc_sm_cma(C)[ 131.150751] bcm2835_isp(C)[ 131.153707] i2c_brcmstb[ 131.156315] drm_dma_helper[ 131.158924] videobuf2_dma_contig[ 131.161706] ecc[ 131.164229] videobuf2_vmalloc[ 131.167010] raspberrypi_hwmon[ 131.170314] drm_kms_helper[ 131.172141] gpu_sched[ 131.175184] videobuf2_memops[ 131.178227] drm_display_helper[ 131.181010] dwc2[ 131.183358] bcm2835_mmal_vchiq(C)[ 131.186313] videobuf2_v4l2[ 131.189443] rfkill[ 131.191358] videodev[ 131.194747] libaes[ 131.197529] drm[ 131.199617] v4l2_mem2mem[ 131.201879] snd_soc_core[ 131.203967] drm_shmem_helper[ 131.205795] pwm_bcm2835[ 131.208402] vc_sm_cma(C)[ 131.211011] i2c_bcm2835[ 131.213967] i2c_brcmstb[ 131.216489] snd_bcm2835(C)[ 131.219097] videobuf2_dma_contig[ 131.221619] spi_bcm2835[ 131.224141] videobuf2_vmalloc[ 131.226923] raspberrypi_gpiomem[ 131.230227] drm_kms_helper[ 131.232749] snd_compress[ 131.235792] videobuf2_memops[ 131.239009] videobuf2_common[ 131.241791] dwc2[ 131.244400] snd_pcm_dmaengine[ 131.247355] videobuf2_v4l2[ 131.250311] snd_pcm[ 131.252226] videodev[ 131.255268] drm_panel_orientation_quirks[ 131.258050] drm[ 131.260225] mc[ 131.262486] snd_soc_core[ 131.266484] snd_timer[ 131.268312] pwm_bcm2835[ 131.270053] snd[ 131.272662] i2c_bcm2835[ 131.275010] pwm_bl[ 131.277531] snd_bcm2835(C)[ 131.279358] backlight[ 131.281880] spi_bcm2835[ 131.283968] nvmem_rmem[ 131.286750] raspberrypi_gpiomem[ 131.289099] uio_pdrv_genirq[ 131.291620] snd_compress[ 131.294055] uio[ 131.297272] videobuf2_common[ 131.302749] snd_pcm_dmaengine[ 131.304581] CPU: 1 UID: 0 PID: 41 Comm: kworker/u20:0 Tainted: G WC 6.12.32-v8 #1[ 131.307533] snd_pcm drm_panel_orientation_quirks[ 131.309015] Tainted: [W]=WARN, [C]=CRAP[ 131.312056] mc[ 131.320830] Hardware name: Raspberry Pi Compute Module 4 Rev 1.1 (DT)[ 131.325523] snd_timer[ 131.329349] Workqueue: events_unbound commit_work [drm_kms_helper][ 131.331088] snd pwm_bl[ 131.339866] backlight[ 131.346035] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)[ 131.348469] nvmem_rmem[ 131.349949] pc : vc4_atomic_commit_tail+0x878/0x930 [vc4][ 131.352297] uio_pdrv_genirq[ 131.359247] lr : vc4_atomic_commit_tail+0x204/0x930 [vc4][ 131.361682] uio[ 131.367070] sp : ffffffc080183d00[ 131.369940] CPU: 3 UID: 0 PID: 54 Comm: kworker/u20:2 Tainted: G WC 6.12.32-v8 #1[ 131.375326] x29: ffffffc080183d00[ 131.377155] Tainted: [W]=WARN, [C]=CRAP[ 131.380457] x28: 0000000000000000[ 131.389230] Hardware name: Raspberry Pi Compute Module 4 Rev 1.1 (DT)[ 131.392534] x27: 0000000000000000[ 131.396358] Workqueue: events_unbound commit_work [drm_kms_helper][ 131.399750] x26: ffffff8044850080[ 131.409567] x25: ffffff8044bcb800[ 131.415736] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)[ 131.417215] x24: 0000000000000006[ 131.420519] pc : vc4_atomic_commit_tail+0x2c8/0x930 [vc4][ 131.422001] x23: ffffff8044850080[ 131.425389] lr : vc4_atomic_commit_tail+0x2c4/0x930 [vc4][ 131.432339] x22: ffffff8042bb4900[ 131.435729] sp : ffffffc0807f3d00[ 131.441116] x21: ffffff8041fe6000[ 131.442596] x29: ffffffc0807f3d00[ 131.451286] x28: 0000000000000000[ 131.454675] x20: 0000000000000150[ 131.457978] x27: 0000000000000000[ 131.461368] x19: 0000000008339c00[ 131.466151] x18: 0000000000000000[ 131.469541] x26: ffffff8042bb4970[ 131.476234] x25: ffffff8042bb4900[ 131.479624] x17: 0000000000000000[ 131.481104] x24: ffffff8045f1d840[ 131.484494] x16: ffffffd6848369d0[ 131.489277] x15: 0000000000000000[ 131.492666] x23: ffffff8044850080[ 131.499359] x22: ffffff8042bb4800[ 131.502749] x14: 0000000000000000[ 131.504229] x21: ffffff8041fe6000[ 131.507619] x13: 000000000ee6b280[ 131.512402] x12: 0000000480000008[ 131.515792] x20: 000000001dcd6500[ 131.522485] x19: ffffff8042bb4880[ 131.525875] x11: ffffffc08002d000[ 131.527354] x18: 0000000000000000[ 131.530744] x10: 0000000000001a40[ 131.535528] x9 : ffffffd68482d594[ 131.538917] x17: 0000000000000000[ 131.545610] x16: ffffffd6848369d0[ 131.549000] x8 : 000000000000003e[ 131.550480] x15: ffffffc081fc3c30[ 131.553870] x7 : 000000000ee6b280[ 131.558652] x6 : 0ee6b28000000004[ 131.562042] x14: ffffffc081fc3c40[ 131.568735] x13: 0000000000000000[ 131.572125] x5 : 0000000000000001[ 131.573605] x12: 0000000000000000[ 131.576995] x4 : 0000000000000000[ 131.581778] x3 : 0000000000000000[ 131.585168] x11: 0000000000000040[ 131.591861] x10: 0000000000001a40[ 131.595250] x2 : ffffff804084a100[ 131.596730] x9 : ffffffd68482d594[ 131.600120] x1 : ffffff804084a100[ 131.604903] x0 : 00000000ffffffea[ 131.608293] x8 : 0000000000000000[ 131.614986] x7 : 0000000000000000[ 131.618377] Call trace:[ 131.619856] x6 : 0000000000000001[ 131.623247] vc4_atomic_commit_tail+0x878/0x930 [vc4][ 131.628030] commit_tail+0xac/0x1a0 [drm_kms_helper][ 131.631419] x5 : 0000000000000000[ 131.633855] commit_work+0x1c/0x30 [drm_kms_helper][ 131.637245] x4 : 0000000000000000[ 131.642285] process_one_work+0x158/0x3d0[ 131.643764] x3 : 0000000000000000[ 131.648718] worker_thread+0x2d8/0x3e8[ 131.652023] x2 : ffffff804101c200[ 131.656887] kthread+0x11c/0x128[ 131.660277] x1 : ffffff804101c200[ 131.664275] ret_from_fork+0x10/0x20[ 131.667665] x0 : 00000000ffffffea[ 131.671402] ---[ end trace 0000000000000000 ]---[ 131.672884] Call trace:[ 131.698265] vc4_atomic_commit_tail+0x2c8/0x930 [vc4][ 131.703350] commit_tail+0xac/0x1a0 [drm_kms_helper][ 131.708355] commit_work+0x1c/0x30 [drm_kms_helper][ 131.713269] process_one_work+0x158/0x3d0[ 131.717276] worker_thread+0x2d8/0x3e8[ 131.721020] kthread+0x11c/0x128[ 131.724242] ret_from_fork+0x10/0x20[ 131.727813] ---[ end trace 0000000000000000 ]---Also I ventured in trying to produce a EDID file based on the one I retrieved. However I must say that sometimes I'm just guessing. This is what I have tried:
Removing all the CEA Blocks except one and based on the following:
Code:
hdmi_timings=1024 0 160 10 160 600 0 12 1 23 0 0 0 60 0 52000000 6Code:
<h_active_pixels> 1024<h_sync_polarity> 0<h_front_porch> 160 <h_sync_pulse> 10<h_back_porch> 160 <v_active_lines> 600 <v_sync_polarity> 0 <v_front_porch> 12 <v_sync_pulse> 1<v_back_porch> 23<v_sync_offset_a> 0<v_sync_offset_b> 0<pixel_rep> 0<frame_rate> 60 <interlaced> 0<pixel_freq> 52000000 <aspect_ratio> 6Here is an screenshot of that page from the editor.

Sadly, it did not provide any noticeable change on the results.
If you can provide me any guidance, I would be very grateful.
Thank you!
Statistics: Posted by mrmauro — Sat Jun 21, 2025 2:52 am