Skip to content

Black screen at GDM login and after login on 4K displays (temporary gdctl workaround) #27

Description

@Singaso

This may help other users experiencing a black screen during the GDM login and after blindly logging in on 4K displays, while the desktop renders correctly once the login screen is first initialized at 1080p. Although this workaround was validated on a Gigabyte M32U, it may also apply to other displays exhibiting the same behavior.

Environment

  • PS5 firmware: 4.00
  • Distribution: Ubuntu 26.04 (ps5-ubuntu2604.img)
  • Storage: Samsung 990 Pro 4 TB (booting from M.2)
  • Kernel: 7.1.3
  • Display Manager: GDM (Wayland)

Display Validated

This workaround was validated on:

  • Gigabyte M32U

It may also help other 4K displays exhibiting the same symptoms.

Issue

When using this display:

  • Linux boots successfully.
  • SSH access works.
  • GDM and GNOME Shell are running normally.
  • The GDM login screen remains black at 4K.
  • It is possible to blindly enter the password and log in.
  • The desktop session starts, but the display remains black after the blind login.
  • The monitor is detected correctly by both the kernel and GNOME.

Kernel and GNOME diagnostics confirmed:

  • EDID is read successfully.
  • DP-1 is connected.
  • GNOME reports the monitor as 3840x2160@60.
  • GDM and the Wayland session remain active even while the screen is black.

The issue appears to be related to the initial 4K display configuration used by the GDM greeter and its transition into the user session.


Temporary Workaround

Run the following commands from a terminal or SSH session while the GDM login screen is active.

Step 1 – Identify the active GDM greeter session

ken@ps5:~$ GREETER_SESSION=$(loginctl list-sessions --no-legend | awk '$3=="gdm-greeter" && $4=="seat0" {print $1; exit}'); GREETER_UID=$(loginctl show-session "$GREETER_SESSION" -p User --value); GNOME_PID=$(ps -u "$GREETER_UID" -o pid=,comm= | awk '$2=="gnome-shell" {print $1; exit}'); DBUS_ADDR=$(sudo cat "/proc/$GNOME_PID/environ" | tr '\0' '\n' | sed -n 's/^DBUS_SESSION_BUS_ADDRESS=//p'); RUNTIME_DIR=$(sudo cat "/proc/$GNOME_PID/environ" | tr '\0' '\n' | sed -n 's/^XDG_RUNTIME_DIR=//p')

Verify the variables were populated successfully:

ken@ps5:~$ printf 'SESSION=%s\nUID=%s\nPID=%s\nDBUS=%s\nRUNTIME=%s\n' "$GREETER_SESSION" "$GREETER_UID" "$GNOME_PID" "$DBUS_ADDR" "$RUNTIME_DIR"

SESSION=c2
UID=60579
PID=10838
DBUS=unix:path=/run/user/60579/bus
RUNTIME=/run/user/60579

Step 2 – Configure the GDM greeter to use 1080p

Run this command exactly as shown.

ken@ps5:~$ sudo -u "#$GREETER_UID" env DBUS_SESSION_BUS_ADDRESS="$DBUS_ADDR" XDG_RUNTIME_DIR="$RUNTIME_DIR" gdctl set -P -L -M DP-1 --mode 1920x1080@60.000 --primary --scale 1.0

After running the command:

  • The display should immediately switch to 1920×1080.
  • The GDM login screen should become visible.

Step 3 – Verify the GDM configuration

ken@ps5:~$ sudo -u "#$GREETER_UID" env DBUS_SESSION_BUS_ADDRESS="$DBUS_ADDR" XDG_RUNTIME_DIR="$RUNTIME_DIR" gdctl show

Expected output:

Monitors:
└──Monitor DP-1 (GIGA-BYTE TECHNOLOGY CO., LTD. 32")
   ├──Vendor: GBT
   ├──Product: Gigabyte M32U
   ├──Serial: 0x01010101
   ├──Current mode
   │   └──1920x1080@60.000
   └──Preferences
       └──Backlight: None

Logical monitors:
└──Logical monitor #1
   ├──Position: (0, 0)
   ├──Scale: 1.0
   ├──Transform: normal
   ├──Primary: yes
   └──Monitors: (1)
       └──DP-1 (GIGA-BYTE TECHNOLOGY CO., LTD. 32")

Step 4 – Log in normally

Once the login screen is visible, log in as normal.

After logging into the desktop, verify the display configuration:

ken@ps5:~$ gdctl show

Expected output:

Monitors:
└──Monitor DP-1 (GIGA-BYTE TECHNOLOGY CO., LTD. 32")
   ├──Vendor: GBT
   ├──Product: Gigabyte M32U
   ├──Serial: 0x01010101
   ├──Current mode
   │   └──3840x2160@60.000
   └──Preferences
       └──Backlight: None

Logical monitors:
└──Logical monitor #1
   ├──Position: (0, 0)
   ├──Scale: 1.25
   ├──Transform: normal
   ├──Primary: yes
   └──Monitors: (1)
       └──DP-1 (GIGA-BYTE TECHNOLOGY CO., LTD. 32")

This confirms that:

  • The GDM login screen is running at 1920×1080.
  • The user desktop automatically switches to 3840×2160 @ 60 Hz after login.

Result

After applying the workaround:

  • GDM login screen displays correctly at 1920×1080
  • Login is visible and works normally
  • After login, the user desktop automatically switches to 3840×2160 @ 60 Hz
  • The desktop renders correctly at native 4K
  • Logging out returns GDM to 1920×1080
  • The configuration persists across logouts and reboots

Additional Notes

  • This workaround was validated on a Gigabyte M32U.
  • While I have not confirmed it on other displays, the workaround modifies the GDM greeter's display configuration, not anything specific to the monitor itself, so it may also help other 4K displays exhibiting the same symptoms.
  • Blindly logging in while GDM was black did not restore the display.
  • The successful sequence was to first make the GDM greeter visible at 1080p, then log in and allow the user session to switch to 4K.
  • No global video= kernel parameter or other boot-time graphics modifications were required.
  • This appears to be related to the GDM greeter's initial 4K display configuration or its transition into the user session rather than a complete GPU, kernel, or desktop failure.

I believe this is a temporary workaround rather than a permanent fix. Since the desktop renders correctly at 4K once the GDM greeter is first initialized at 1080p, the issue appears to be isolated to the GDM greeter's initial display configuration rather than the graphics stack as a whole. Hopefully this helps others experiencing the same issue while a permanent fix is investigated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions