Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RPI 3B+ with official 7" screen : white flash at startup #1052

Closed
ghost opened this issue Oct 2, 2018 · 14 comments
Closed

RPI 3B+ with official 7" screen : white flash at startup #1052

ghost opened this issue Oct 2, 2018 · 14 comments

Comments

@ghost
Copy link

ghost commented Oct 2, 2018

Hello,

The Raspberry 3B+ connected to the official 7 inch screen creates a fast white flash at startup before the rainbow screen. Like someone suggested in the topic linked below, it may be due to the Backlight Enable signal which is set too early by the boot code, allowing the backlight to light up before any pixel data is sent, thus showing a blank screen.

Latest firmware code + empty config.txt and no kernel.img still produces this behavior.

Original topic : https://www.raspberrypi.org/forums/viewtopic.php?f=108&t=223825
Video showing the problem : https://www.youtube.com/watch?v=xQJWC97g7jU (interpolation disabled in this video -- but behavior is the same with default settings)

Preventing this white flash would be cleaner for the user experience, especially if the RPI is integrated into products.
Could you investigate this issue ?

@JamesH65
Copy link
Contributor

JamesH65 commented Oct 2, 2018

As I stated on that forum thread, I doubt I'll have much time to look at this. The white flash appears to be between device startup and the GPU drawing the splash screen.

@JamesH65
Copy link
Contributor

JamesH65 commented Oct 2, 2018

Although, a quick change might be to only enable the backlight (its actually a PWM system rather than on/off) when the driver start fn is called, rather than on open. If I have time I'll give that a try.

@JamesH65
Copy link
Contributor

JamesH65 commented Oct 2, 2018

No, that didn't help. Still a brief white flash before the rainbox screen turns up. I suspect this would take too much investigation time to figure out where the flash is coming from, it could even be, as i am beginning to suspect, in the (tiny) firmware on the display itself. So as soon as it powers on, the display backlight is defaulted to on. By the time the GPU has opened up the driver, found the display and told it to turn the backlight off, its too late - the flash has appeared. I'll take another quick look, but no promises.

@ghost
Copy link
Author

ghost commented Oct 2, 2018

Ok thanks for your help. I'll look if there is a hardware way of controlling it (like by connecting the backlight power to a transistor driven by a GPIO), but it would be much easier if it could be done purely in software.

@JamesH65
Copy link
Contributor

JamesH65 commented Oct 3, 2018

Think I have figured out what this is. A little more complicated that initially suspected, I think it's the timing between the rainbow screen and vsync. The flash is the previous frame displayed by the HVS before the next vsync updates it to the rainbow. It's a bit more obvious if you reboot, where the flash isn't white but the last known display contents. I've got a fix where I delay the backlight coming on to later in the boot cycle, will pass it to code review to see what the other guys here think.

@JamesH65
Copy link
Contributor

JamesH65 commented Oct 3, 2018

OK, we've merged the fix to our tree, and it will be available in rpi-update within a week I would think. Once it has had some testing by you lot I'll close this issue.

@ghost
Copy link
Author

ghost commented Oct 3, 2018

Wow, such a nice reactivity ! Thanks a lot, i'll try your fix and tell you soon.

popcornmix added a commit that referenced this issue Oct 9, 2018
2ndstage: Increase eth_open timeout to 5 seconds
See: #1041

firmware: video_encode: Use default values on invalid nStride or nSliceHeight
See: #1051

firmware: gpioman/FXL6408: Handle open failing sensibly
See: #1053

firmware: Delay backlight coming on
See: #1052

firmware: LCD driver close fixes

2ndstage: ignore autoboot.txt if boot partition is already set
See: raspberrypi/noobs#508
popcornmix added a commit to Hexxeh/rpi-firmware that referenced this issue Oct 9, 2018
2ndstage: Increase eth_open timeout to 5 seconds
See: raspberrypi/firmware#1041

firmware: video_encode: Use default values on invalid nStride or nSliceHeight
See: raspberrypi/firmware#1051

firmware: gpioman/FXL6408: Handle open failing sensibly
See: raspberrypi/firmware#1053

firmware: Delay backlight coming on
See: raspberrypi/firmware#1052

firmware: LCD driver close fixes

2ndstage: ignore autoboot.txt if boot partition is already set
See: raspberrypi/noobs#508
@popcornmix
Copy link
Contributor

Fix should be in latest rpi-update firmware.

@ghost
Copy link
Author

ghost commented Oct 9, 2018

Works perfectly ! Kudos.

@JamesH65
Copy link
Contributor

Cheers.

@mangelozzi
Copy link

I see the white flash on a raspberry pi compute module 4.

@JamesH65
Copy link
Contributor

What graphics driver are you using? This fix was on the legacy stack IIRC, it may be that FKMS and KMS need a similar fix? @6by9

@mangelozzi
Copy link

mangelozzi commented Jan 26, 2022

What graphics driver are you using? This fix was on the legacy stack IIRC, it may be that FKMS and KMS need a similar fix? @6by9

I did have this:

 Enable DRM VC4 V3D driver
dtoverlay=vc4-kms-v3d
max_framebuffers=2

But now that I comment out dtoverlay=vc4-kms-v3d I dont see the flash. Using 2021-10-30-raspios-bullseye-armhf-lite.img

@mangelozzi
Copy link

mangelozzi commented Mar 14, 2022

What graphics driver are you using? This fix was on the legacy stack IIRC, it may be that FKMS and KMS need a similar fix? @6by9

I did have this:

 Enable DRM VC4 V3D driver
dtoverlay=vc4-kms-v3d
max_framebuffers=2

But now that I comment out dtoverlay=vc4-kms-v3d I dont see the flash. Using 2021-10-30-raspios-bullseye-armhf-lite.img

Unfortunately this does not seem to be compatible with Chromium, it just shows blank white page with this change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants