Black laptop screen after disconnect from ThinkPad Ultra Dock

I have a ThinkPad T14 gen1 (AMD) that I am using with a ThinkPad Ultra Docking Station (40AJ). I installed a fresh copy of Fedora 35 Workstation Edition and had no issues at all. However, after running dnf update for the first time after installation, I started having issues with the built-in laptop display going black after and only after the laptop is disconnected from the dock for the first time when logged in to a Gnome session under Wayland or at the gdm login screen. In particular, the built-in screen goes black in the following situations.

  • Immediately after I disconnect from the dock
  • After I connecting and/or disconnecting an external monitor via the built-in HDMI port (without using the dock).
  • After waking the computer from a suspended state
  • After the screen is turned of due to inactivity (resumed interaction with the computer does not trigger the display to turn back on)

None of the above issues occur if the dock is not connected to the docking station in the first place. They also do not occur after using another generic USB-C dock.

I have found the following workarounds to the problem.

  • Simply reconnecting to the dock usually restores function of the built-in and external displays
  • Pressing Ctrl-Alt-F3 (the terminal interface appears on the screen) and then Ctrl-Alt-F2 to drop me back into Gnome.
  • Logging out of Gnome and logging back in.
  • Using Xorg session instead of Wayland (Xorg also has problems with the dock, but they seem to have different symptoms)

The first two workarounds above are not a “persistent” fix since the screen will go black again in any of the scenarios above.

Immediately after the dock is connected, I get some errors from dmesg:

$> dmesg -x
...
kern  :err   : [   60.112073] amdgpu 0000:07:00.0: [drm] *ERROR* mstb 00000000d5612617 port 1: DPCD read on addr 0x4b0 for 1 bytes NAKed
kern  :err   : [   60.211327] amdgpu 0000:07:00.0: [drm] *ERROR* mstb 00000000d5612617 port 2: DPCD read on addr 0x4b0 for 1 bytes NAKed
kern  :err   : [   60.278804] amdgpu 0000:07:00.0: [drm] *ERROR* mstb 00000000d5612617 port 3: DPCD read on addr 0x4b0 for 1 bytes NAKed
kern  :err   : [   66.060339] amdgpu 0000:07:00.0: [drm] *ERROR* mstb 00000000d5612617 port 1: DPCD read on addr 0x4b0 for 1 bytes NAKed
kern  :err   : [   66.095365] amdgpu 0000:07:00.0: [drm] *ERROR* mstb 00000000d5612617 port 2: DPCD read on addr 0x4b0 for 1 bytes NAKed
kern  :err   : [   66.129529] amdgpu 0000:07:00.0: [drm] *ERROR* mstb 00000000d5612617 port 3: DPCD read on addr 0x4b0 for 1 bytes NAKed
...

These errors appear when I use the kernel version from the install media (5.14.10-300.fc35.x86_64) or the version after running dnf update (5.14.16-301.fc35.x86_64).

Interestingly, these errors do not occur if running Fedora from the installation media; I can connect and disconnect from the dock without issues.

Can anyone help me further identify the issue? I am not sure how to troubleshoot further and identify where I should report this issue if it hasn’t already been reported. Thanks!

Edit: I just found the following bug report which is maybe related: 211807 – [drm:drm_dp_mst_dpcd_read] *ERROR* mstb 000000004e6288dd port 3: DPCD read on addr 0x60 for 1 bytes NAKed

Though, I am not knowledgeable at all about the Linux kernel, so I’m not sure what to make of things.

2 Likes

i have the situation with my thinkpad T470s on a OEM docking station.

Same here. ThinkPad T14s + numerous ThinkPad docks

This seems to be an issue with mutter. Downgrading mutter-41.1 to mutter-41.0 solved the issue for me.

Should I report this as a bug in Fedora or directly to the GNOME people?

Also curious if anyone is having issues like this with non-ThinkPad docks.

Edit: something like this problem was already noticed.

1 Like

thanks i gonna try that workaround

@nchisholm

I have this issue with different hardware.

Lenovo Yoga 7 (82N7, Ryzen 5800U) and a HP G5 USB-C Dock. I don’t face the issue under Ubuntu 21.10 on the same hardware.

I have reported the bug. 2025803 – Black screen when unplugged from USB-C dock

Thanks! Glad it looks like the issue is fixed upstream and will hopefully propagate to Fedora users soon.

Same issue here with Lenovo Yoga Slim 7 Pro (AMD 5900X), but this Gitlab bug report looks promising.
Hope this fix will be rolled out soon.

Unfortunately nothing happens with the update. Maybe someone else can write something in the bug report to push this a bit.

Just in case someone don’t know how to downgrade and temporarily fix it

  1. check your current version of mutter
    rpm -qa | grep mutter
    → If its > 41.0 you are most likely affected

  2. downgrade mutter to last known working version
    sudo dnf install mutter-41.0-4.fc35

  3. verify installed version
    rpm -qa | grep mutter
    → mutter-41.0-4.fc35.x86_64

Note: I performed a restart just to be sure that the right version is loaded, but not sure if this is needed. Since then this fix worked perfectly fine for my laptop and docking station

1 Like

The new version is available (https://bodhi.fedoraproject.org/updates/FEDORA-2021-e0f1fe6166). If someone wants to test it already now:

sudo dnf update --refresh --enablerepo=updates-testing mutter

It works for me.

By the way, I would like to say that there is also an easier way to downgrade mutter.

sudo dnf downgrade mutter

1 Like

Hello everyone!

I am having the same issue with Fedora 36 on my Dell XPS 15 9560. I have dual monitors which are connected using Display Port to a docking station. When loading from suspend one of the monitors never woke up.

After some research I figured out that mst in mstb actually refers to the Display Port Multi Stream protocal which is required to address multiple monitors over a single DP link. That explains why one montior was still working and the other would not.

There is this kernel list discussion that @nchisholm has already mentioned. Somebody pointed out that fwupd was trying to probe the MST hub after waking up, causing it to fail. Effectively breaking MST support in the DP protocol. After disabling fwupd the problems disappeared for me:

$ systemctl stop fwupd
$ systemctl mask fwupd  # Do not auto-start the daemon on next boot.

Now all my monitors reliably wake up again after suspend. Hurray!

This, of course, comes at the cost of not having automatic Firmeware updates. However, I am willing to accept this as I can manually start the daemon to let it search for new updates whenever I want.