Blank screen issue

Hello!

I’ve had an RK3588 Pocket Reform since January 2025.

It has been working fine for a long time and I love it.
Right now however it keeps booting with a blank screen.

  • Since around summer 2025, there has been a very sporadic occurrence of this - the screen stayed blank on boot. It was rare and I considered it a quirk or minor issue. Power off & on always resolved it.
  • 1-2 weeks ago it became more common.
  • In the last few days it often needed several attempts to finally boot successfully.
  • There was one time today when it finally booted normally like 3 times in a row but then, after using the machine for <30 minutes, the screen went blank, which was new.
  • Since about this time it is always booting blank.
  • Coincidentally, 1-2 weeks ago, I added a udev rule to set the keyboard backlight to my preferred color. I realized that this kept happening even during “failed” boots so I thought it might only be the display issue.
    So I tried to type my passwords blindly to decrypt the disk and then log in and managed to get into Sway. Screen still all blank.
  • Managed to install and set up SSH server and logged in. Everything other than the display seems functional. (Unfortunately I currently have no monitor to use or test with.)
  • The display itself isn’t even fully off, it has backlight and I can control brightness as usual, but there’s nothing on it.
  • It is happening regardless of the charger being plugged in or not. I also tried leaving it rest with batteries unplugged but nothing.
  • Tried to reseat all connectors of the display ribbon but nothing.
  • I don’t think I have removed the back panels since around October 2025 so I don’t think I have physically broken something leading to this, hopefully.
  • Researching dmesg etc. output suggests this might be a panel controller failure but I’m really not familiar with this sort of stuff.

Some parts of log possibly related:

[Sun Mar  1 20:30:57 2026] /dsi@fde30000: Fixed dependency cycle(s) with /dsi@fde30000/panel
[Sun Mar  1 20:30:57 2026] /dsi@fde30000/panel: Fixed dependency cycle(s) with /dsi@fde30000
[Sun Mar  1 20:30:57 2026] panel-mnt-pocket-reform fde30000.dsi.0: DSI eot/hfp/hbp/hsa disabled via device tree
[Sun Mar  1 20:30:57 2026] panel-mnt-pocket-reform fde30000.dsi.0: supply vddp not found, using dummy regulator
[Sun Mar  1 20:30:57 2026] panel-mnt-pocket-reform fde30000.dsi.0: supply iovcc not found, using dummy regulator
[Sun Mar  1 20:30:57 2026] panel-mnt-pocket-reform fde30000.dsi.0: error -ENOENT: cannot get reset-gpios 0
[Sun Mar  1 20:30:57 2026] panel-mnt-pocket-reform fde30000.dsi.0: error -ENOENT: cannot get dcdc-en-gpio 0

[Sun Mar  1 20:30:57 2026] panel-mnt-pocket-reform fde30000.dsi.0: [display] init in prepare…
[Sun Mar  1 20:30:57 2026] dw-mipi-dsi2 fde30000.dsi: command interface is busy
[Sun Mar  1 20:30:57 2026] dw-mipi-dsi2 fde30000.dsi: failed to write command header
[Sun Mar  1 20:30:57 2026] panel-mnt-pocket-reform fde30000.dsi.0: [mnt pocket reform display] read register 12a: 0x0
[Sun Mar  1 20:30:57 2026] dw-mipi-dsi2 fde30000.dsi: command interface is busy

[Sun Mar  1 20:30:57 2026] panel-mnt-pocket-reform fde30000.dsi.0: [display v2] not sending tables this time
[Sun Mar  1 20:30:57 2026] dw-mipi-dsi2 fde30000.dsi: command interface is busy
[Sun Mar  1 20:30:57 2026] panel-mnt-pocket-reform fde30000.dsi.0: [display v2] failed to set exit sleep mode: -110
[Sun Mar  1 20:30:57 2026] dw-mipi-dsi2 fde30000.dsi: command interface is busy
[Sun Mar  1 20:30:57 2026] panel-mnt-pocket-reform fde30000.dsi.0: [display v2] failed to set display on: -110
[Sun Mar  1 20:30:57 2026] panel-mnt-pocket-reform fde30000.dsi.0: [display v2] OK
[Sun Mar  1 20:30:57 2026] dw-mipi-dsi2 fde30000.dsi: command interface is busy
[Sun Mar  1 20:30:57 2026] panel-mnt-pocket-reform fde30000.dsi.0: [display] failed to turn display on in enable: -110

If anyone has any suggestions please let me know.

If additional info/output is needed I can get it via SSH.

Thank you for your time ^^

Have you tried:
The standby power switch (as seen in Quickstart manual) can also be used as an emergency reset function because it will power cycle the system controller, in case things are really stuck.

From:

Thank you for your reply.

Normally I’m using the switch, battery removal was just an attempt to make sure I was doing all I could think of.

Additionally, I have a set of larger batteries, like some other people on this forum, and was going to try both those and the original ones, again just in case, but no difference.

I’d also try downloading the latest system image and booting from SD Card. That would rule out any software issues.

I’ve seen some display issues and panel-mnt-pocket-reform errors on the A311D, but haven’t been able to properly debug them yet. Usually a reboot of the system controller solves the issue, so I’m guessing it is either the sysctl firmware or the panel driver.

I also noticed that starting the Pocket Reform / rk3588 sometimes leads to that blank screen. I then cannot connect via ssh nor can I switch to a different console to shut down the device. The only way to reboot is powercycle the reform via oled menu. Fortunately by now it does’t happen too often…

Edit: It happend again, but ssh login worked - maybe I was mistaken…

It took several reboots to get back to gdm (FW 20260227)

I’ve seen this issue on the iMX8M Plus and A311D as well, both using the stock system image.

In grepping around dmesg, I did find some odd panel driver errors, which I was able to “fix” in the panel driver:

panel-mnt-pocket-reform.c

…in remove and shutdown

+ jdi_panel_unprepare(&jdi->base);

By forcing jdi_panel_unprepare(&jdi->base); in .remove / .shutdown, we’re guaranteeing the panel is actually put back into a clean baseline before the driver goes away or the system powers off, so the next time it comes up it behaves consistently. Or at least that’s the theory. Certainly a “brute force” approach to be sure.

I’ll do some more debugging over the weekend, but my guess is that splitting up the management of the panel between the RP2040 and the SoM creates some timing issues in the power/enable/reset sequence. It would explain why cutting power to the system controller resolves the issue, at least in my case.

1 Like

Hello @xandy sorry to hear this has been happening! First thing I can say that would be useful in diagnosing this situation is if could post what version of the system controller you have installed. If you type Hyper + Enter and then press s and post what it says on the OLED here that would be helpful. The blank black screen issue we have seen show up sometimes should be fixed in the latest versions of the system controller. If you plug in an external monitor that should work and might be the easiest way to update the firmware. Here is the latest firmware with the tag 20260227.

1 Like

Hi @wakest , thank you for your reply!

Results from the OLED are:

MNT Pocket Reform
PREF1SYSR1ga4a26d0
MNT Pocket Reform HID
PREF1HIDg2ab0d3a

I haven’t updated it since January 2025, so like ever :slight_smile:

Do you think I could try via SSH?

It might take a while until I can get a monitor.

Thank you and thanks everyone else too for your suggestions and input!

1 Like

I just double checked by trying it in house and successfully did a firmware update thru ssh with no issues. The command curl -sfL mnt.re/update-pocket-sysctl | sudo bash - should work. I would then try powering it off fully, and switching the standby switch off and then on again, and trying to boot up fresh. Hopefully that should fix everything! Let us know how it goes, if thats not it we will get to the bottom of it!

1 Like

Thank you.

I just did the update.
It seems to have been successful and the OLED is showing the new system controller version.

However the Pocket is behaving as before.
It is booting with a blank screen every time. I can still get in and even adjust display brightness, as before, but no change unfortunately.

I’ve done several power cycles with full power offs via the standby switch inbetween.

Hmmmm, sorry that didn’t work! I guess next thing I would try is updating u-boot

to update linux kernel and uboot on installed system:

  * apt update
  * apt install linux-image-mnt-reform-arm64 reform-tools
  * reform-flash-bootloader emmc
  * and answer "y" twice

the other thing I would try is opening it up and inspecting the DSI flex cable for nicks or breaks, hold it up to a light and look at all the traces. You could also look at the flexy adapter and see if anything looks broken of off about it. And look to see that all 4 in and out ports for the display cables look clean and free of anything that could be blocking the connection.

Your device is also probably still under warranty and you could send it back to us to fix in the shop here, or maybe it is indeed something wrong with the display (tho I haven’t seen this fail mode being anything wrong with the display itself yet)

Thank you, I’m about to try updating u-boot, just one question to be safe; is it still reform-flash-bootloader emmc if my system is running off an encrypted NVMe? (Sorry for being overly cautious. I vaguely remember the bootloader is still on the eMMC too but never touched it.)

Yes still the same command! Crossing my fingers thats all we need…

Flashing succeeded but unfortunately didn’t resolve the issue.

Tomorrow I’ll have another go at checking out the display cables and ports.

Hi!

So I’ve unplugged the display and checked the cables and ports and visually it’s flawless to me. Found no dirt or anything either but air sprayed the ports and wiped the connectors with a soft cloth before plugging them back in.

It’s the same unfortunately.

Having seen online photos of the Wisecoco LT070ME05000 display, it seems that the IC of the Pocket’s panel is mostly covered with a black tape.
Based on the pictures there should be another cable and port under the tape.
Do you think I should remove the tape and check those too?

So frustrating, sorry you are going thu all this! You shouldn’t need to remove any tape. There must be something else going on. Lemme check with my co workers and try to think thru if there is something else to try, otherwise we can move to sending it in and replacing whatever is broken.

No worries, I’m thankful for all your attention and efforts to help me :slight_smile:

I again had some blank screens and it took three reboots until I reached gdm login. Each time I was able to login via ssh for a clean reboot/shutdown (…maybe I was wrong in my first post when ssh doesn”t seem to work :frowning: ). Installed FW was 20260227.

@habasud, I have a feeling that what you and I are seeing is different form what @xandy is describing. My blank screen can be “reset” by using the standby power switch (usually just once).

Also, xandy’s dmesg output contains command interface is busy and lots of fde30000.dsi.0 failures I’ve never seen.

Here’s what I see in $> sudo dmesg | grep panel-mnt-pocket:

panel-mnt-pocket-reform ffd07000.dsi.0: supply vddp not found, using dummy regulator
panel-mnt-pocket-reform ffd07000.dsi.0: supply iovcc not found, using dummy regulator
panel-mnt-pocket-reform ffd07000.dsi.0: error -ENOENT: cannot get reset-gpios 0
panel-mnt-pocket-reform ffd07000.dsi.0: error -ENOENT: cannot get dcdc-en-gpio 0
panel-mnt-pocket-reform ffd07000.dsi.0: vsync-shift from device tree: 1
panel-mnt-pocket-reform ffd07000.dsi.0: [display] init in prepare...
panel-mnt-pocket-reform ffd07000.dsi.0: [mnt pocket reform display] read register 12a: 0x0
panel-mnt-pocket-reform ffd07000.dsi.0: [display v2] not sending tables this time
panel-mnt-pocket-reform ffd07000.dsi.0: [display v2] OK
panel-mnt-pocket-reform ffd07000.dsi.0: vsync-shift from device tree: 1
panel-mnt-pocket-reform ffd07000.dsi.0: [display] init in prepare...
panel-mnt-pocket-reform ffd07000.dsi.0: [display v2] sent tables OK
panel-mnt-pocket-reform ffd07000.dsi.0: [display v2] OK
panel-mnt-pocket-reform ffd07000.dsi.0: vsync-shift from device tree: 1

None of this is very concerning as both reset-gpios and dcdc-en-gpio are handled in the sysctl-fw (RP2040).

I do see some warnings coming from the panel as well:

WARNING: CPU: 5 PID: 90 at drivers/gpio/gpiolib.c:3880 gpiod_set_value+0x4c/0x80
...
Call trace:
  gpiod_set_value+0x4c/0x80 (P)
  jdi_panel_unprepare+0x64/0xc8
  drm_panel_unprepare+0x88/0xf0
  panel_bridge_atomic_post_disable+0x5c/0x78

These warnings show up even with a working display. The warnings go away when I swap out calls from gpiod_set_value() to gpiod_set_value_cansleep() in the panel driver. I doubt they matter for our issue.

My guess as to what we are seeing, though its been a very long time since I’ve worked on embedded displays:

A DSI panel’s state machine is only reliable if:

  • power rails (IOVCC/VDDP) are stable
  • bias/DC-DC is enabled in a controlled way
  • reset is asserted/deasserted with defined timing
  • sleep out delay is respected
  • backlight comes on last

If RP2040 owns reset/bias/backlight, Linux must explicitly request and wait for “panel ready” before sending display commands (DCS). If the panel is left in a partially-powered / latched state across warm reboot (because RP2040 keeps bias/reset/backlight state while Linux restarts the DSI host), I could see why we’d get a blank screen, sometimes.

Ideally we’d stop using this “split-brain” control (RP2040 <> panel driver). Linux should be able to force a deterministic panel power/reset/bias sequencing.

@habasud, curious what your dmesg output looks like. Similar to mine?

@stephano Here’s my dmesg output:

[    3.715733] panel-mnt-pocket-reform fde30000.dsi.0: DSI eot/hfp/hbp/hsa disabled via device tree
[    3.716519] panel-mnt-pocket-reform fde30000.dsi.0: supply vddp not found, using dummy regulator
[    3.717840] panel-mnt-pocket-reform fde30000.dsi.0: supply iovcc not found, using dummy regulator
[    3.721780] panel-mnt-pocket-reform fde30000.dsi.0: error -ENOENT: cannot get reset-gpios 0
[    3.722605] panel-mnt-pocket-reform fde30000.dsi.0: error -ENOENT: cannot get dcdc-en-gpio 0
[    4.406287] panel-mnt-pocket-reform fde30000.dsi.0: [display] init in prepare…
[    4.434055] panel-mnt-pocket-reform fde30000.dsi.0: [mnt pocket reform display] read register 12a: 0x0
[    4.458025] panel-mnt-pocket-reform fde30000.dsi.0: [display v2] not sending tables this time
[    4.560790] panel-mnt-pocket-reform fde30000.dsi.0: [display v2] OK
[    4.794158] panel-mnt-pocket-reform fde30000.dsi.0: [display] init in prepare…
[    4.848423] panel-mnt-pocket-reform fde30000.dsi.0: [display v2] sent tables OK
[    4.951533] panel-mnt-pocket-reform fde30000.dsi.0: [display v2] OK

Btw. the output is identical after normal start and blank screen situation