Only external display working on RK3588

Hello.

I am using the new RK3588 chip and I can’t use my internal display anymore.

Coming from A311D I used shell scripts to swap between internal and external monitors. I figured I would need those on RK3588, so I tried to use my ./external_4k.sh script which does the whole swaymsg output eDP-1 disable and swaymsg output HDMI-1 enable and sets the mode etc.

When I ran the external script, nothing really happened. My internal monitor kept working fine too. So I just decided to keep using my computer and then eventually turned it off.

Now starting today, I can’t use the internal monitor at all, and using the internal script doesn’t help at all either. I’m away from home otherwise I’d use a fresh sd card install and see if that changes anything.

But I’m using an NVME and unscrewed that, and used the main image on the EMMC which should be stock, and even that was troublesome. So I’m thinking it could have something to do with the fact I tried to use the reform-display-config script, but that doesn’t work either because it checks the SOM module before executing.

When I run swaymsg -t get_outputs I only see the external HDMI-2-A and the panasonic tv output. I don’t see any eDP-1 like I’d expect. Which I guess makes sense as to why the internal monitor isn’t being used.

I tried to reseat the connection for the SOM and the eDP to HDMI adapter, but no dice. Please let me know if I can share anything software wise that might be useful.

I did find Josch’s stackoverflow reply when researching that prompted me to install wdisplays and that also only shows HDMI-2-A when pulled up. I’ve tried wlrandr to no avail either.

I am running encrypted NVME and using EMMC to boot to that. I find it odd that even at luks password prompt it only works on external display. This makes me wonder if it was somehow persisted to a boot setting or something, I’d imagine that display settings run from those shell scripts would only be valid once getting inside the system but maybe not. Idk. Rambling. Confused though. Any suggestions welcome.

Let me know if I can dump any other logs that may provide useful context.


➜  ~ lspci
0000:00:00.0 PCI bridge: Rockchip Electronics Co., Ltd RK3588 (rev 01)
0000:01:00.0 Non-Volatile memory controller: Sandisk Corp WD Blue SN570 NVMe SSD 2TB (rev 01)
0004:40:00.0 PCI bridge: Rockchip Electronics Co., Ltd RK3588 (rev 01)
0004:41:00.0 Network controller: Qualcomm Atheros AR928X Wireless Network Adapter (PCI-Express) (rev 01)
➜  ~ swaymsg -t get_outputs
Output HDMI-A-2 'Panasonic Industry Company PanasonicTV0 0x01010101' (focused)
  Current mode: 1920x1080 @ 60.000 Hz
  Power: on
  Position: 0,0
  Scale factor: 1.000000
  Scale filter: nearest
  Subpixel hinting: unknown
  Transform: normal
  Workspace: 1
  Max render time: off
  Adaptive sync: disabled
  Available modes:
    192be useful. Not sure if these are 0x1080 @ 60.000 Hz
    1920x1080 @ 60.000 Hz (16:9)
    1920x1080 @ 59.940 Hz (16:9)
    1920x1080 @ 24.000 Hz (16:9)
    1920x1080 @ 23.976 Hz (16:9)
    1280x720 @ 60.000 Hz
    1280x720 @ 60.000 Hz (16:9)
    1280x720 @ 59.940 Hz (16:9)
    720x480 @ 60.000 Hz (4:3)
    720x480 @ 60.000 Hz (16:9)
    720x480 @ 59.940 Hz
    720x480 @ 59.940 Hz (16:9)
    720x480 @ 59.940 Hz (4:3)
    640x480 @ 60.000 Hz (4:3)
    640x480 @ 59.940 Hz (4:3)

➜  ~ cat internal_edp.sh 
#!/bin/sh
swaymsg output HDMI-A-1 disable
swaymsg output eDP-1 enable
➜  ~ cat external_hdmi_4k.sh 
#!/bin/sh
swaymsg output eDP-1 disable
swaymsg output HDMI-A-1 disable 
swaymsg output HDMI-A-1 enable
swaymsg output HDMI-A-1 modeline 60.00 3840 3888 3920 4000 2160 2163 2168 2222 +hsync +vsync

➜  ~ 

Another thing to note, that may or may not be a problem, is the eDP/HDMI adapter gets plugged into the motherboard, and it gets a cable plugged into it. That cable that goes from the display and gets plugged into the adapter has a very tight clearance in my case, so much so I was worried the tiny wires may come off that many pin connector. Not sure if that has anything to do with it, but I can see the display is getting power, so I’m not sure that’s the issue. At the same time, I did remove the nvme drive, and was hoping the display thing could be a software issue. But maybe it’s a hardware issue since it isn’t even coming up when I run swaymsg -t get_outputs?

On RK3588 there is a peculiarity about the names of the outputs. Both are HDMI. The internal display is HDMI-A-1, the external is HDMI-A-2.

The display should normally come up during boot, not only in sway.

If the display is not there during boot, it is probably a hardware issue. Maybe the cable got unplugged slightly on the display side? Are you in a position where you could take things a bit further apart and show us photos of both ends of the display cable and HDMI adapter?

1 Like

Thank you @minute for the reply and the new fast SOM!

Didn’t think to check the display cable on the panel’s side, it was pulled out beneath the yellow tape.

Display works now, AND on both internal / external at the same time :slight_smile:

5 Likes