Bug 493879 - External monitor wakes back up after a few seconds after being turned off according to power management settings
Summary: External monitor wakes back up after a few seconds after being turned off acc...
Status: CONFIRMED
Alias: None
Product: plasmashell
Classification: Plasma
Component: Power management & brightness (other bugs)
Version First Reported In: 6.1.5
Platform: Other Linux
: HI normal
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords: wayland-only
: 506015 506263 506297 506375 (view as bug list)
Depends on:
Blocks: 506459
  Show dependency treegraph
 
Reported: 2024-09-30 17:07 UTC by Oleg Gorobets
Modified: 2025-09-10 22:43 UTC (History)
13 users (show)

See Also:
Latest Commit:
Version Fixed In: 6.4.5
Sentry Crash Report:


Attachments
print ids on output hotplug (1.71 KB, patch)
2025-08-07 18:13 UTC, Zamundaaa
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Oleg Gorobets 2024-09-30 17:07:12 UTC
SUMMARY

Power management is configured as follows:
When laptop lid is closed: Turn Off Screen
[x] Even when external monitor is connected

Now, when I close the lid external monitor turns off (entering sleep mode) and then after a few seconds turns back on.

I don't know if it is relevant but my laptop has Hybrid graphics (Intel+Nvidia) configured in PRIME mode as per https://wiki.archlinux.org/title/PRIME so only Intel is active.


STEPS TO REPRODUCE
1. Have a laptop with hybrid graphics and external display
2. Connect external display via HDMI
3. Configure Display Configuration: External monitor to be the only one enabled
4. Configure Power Management: When laptop lid is closed: Turn Off Screen
5. Configure Power Management: Check "Even when external monitor is connected"
6. Close the lid

OBSERVED RESULT
Monitor turns off, then after a few seconds turns back on.

EXPECTED RESULT
Monitor turns off.

SOFTWARE/OS VERSIONS
Operating System: Arch Linux 
KDE Plasma Version: 6.1.5
KDE Frameworks Version: 6.6.0
Qt Version: 6.7.2


ADDITIONAL INFORMATION
Kernel Version: 6.6.52-1-lts (64-bit)
Graphics Platform: Wayland
Comment 1 S. Umar 2024-10-02 22:50:05 UTC Comment hidden (spam)
Comment 2 S. Umar 2024-10-02 22:55:31 UTC Comment hidden (spam)
Comment 3 Natalie Clarius 2024-10-08 01:23:48 UTC Comment hidden (spam)
Comment 4 Nate Graham 2025-06-04 18:20:24 UTC
Can you still reproduce the issue on your distro in Plasma 6.3.5 or later? Thanks a lot!
Comment 5 Bug Janitor Service 2025-06-19 03:47:56 UTC
🐛🧹 ⚠️ This bug has been in NEEDSINFO status with no change for at least 15 days. Please provide the requested information, then set the bug status to REPORTED. If there is no change for at least 30 days, it will be automatically closed as RESOLVED WORKSFORME.

For more information about our bug triaging procedures, please read https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging.

Thank you for helping us make KDE software even better for everyone!
Comment 6 Oleg Gorobets 2025-06-26 07:41:49 UTC Comment hidden (spam)
Comment 7 Nate Graham 2025-06-26 18:20:53 UTC Comment hidden (spam)
Comment 8 Oleg Gorobets 2025-06-27 09:14:42 UTC
I did some more testing today,  see below.

- It doesn't happen on X11 session -- external monitor shuts off properly (although plasmashell still crashes after manual wakeup).
- It still happens when Nvidia drivers are removed from Linux
- It doesn't happen on older Lenovo laptop, which has similar setup and only integrated Intel graphics, but connected via Display Port (unfortunately I don't have HDMI port on this one).
Comment 9 TraceyC 2025-07-01 21:06:02 UTC
*** Bug 506263 has been marked as a duplicate of this bug. ***
Comment 10 TraceyC 2025-07-01 21:17:09 UTC
*** Bug 506297 has been marked as a duplicate of this bug. ***
Comment 11 TraceyC 2025-07-01 21:19:34 UTC
Details from bug 506297:

-----------------------------------
Occurs  with one monitor (HDMI)

This is happening my main machine, after the latest kde plasma update. I fresh installed onto an SSD to test if this was a problem with my config or not. Fresh install exhibits same behavior. All information provided is from a fresh install with no changes made. Just fully updated.  My main install is using Nvidia latest drivers. I even tried this with ddcutil turned off, same problem.  When the screen is supposed to turn off, it just goes blank for about 20 seconds (screen does not power down), and then back on again. 


System:
  Kernel: 6.15.3-arch1-1 arch: x86_64 bits: 64 compiler: gcc v: 15.1.1
    clocksource: tsc avail: hpet,acpi_pm
    parameters: initrd=\223235b7d2fa4c458d4ccfb7ff55c1c0\6.15.3-arch1-1\initrd
    nvme_load=YES nowatchdog rw
    root=UUID=9e148e8e-dce3-43e2-9f84-7324766c4fbf
    resume=UUID=0ed8302b-0942-4c58-85d9-6f6d0b2941cd nvidia_drm.modeset=1
    systemd.machine_id=223235b7d2fa4c458d4ccfb7ff55c1c0
  Desktop: KDE Plasma v: 6.4.1 tk: Qt v: N/A info: frameworks v: 6.15.0
    vt: 1 dm: SDDM Distro: EndeavourOS base: Arch Linux
Machine:
  Type: Desktop System: ASUS product: N/A v: N/A serial: <superuser required>
  Mobo: ASUSTeK model: ProArt B650-CREATOR v: Rev 1.xx
    serial: <superuser required> part-nu: SKU uuid: <superuser required>
    UEFI: American Megatrends v: 2506 date: 10/28/2024
Graphics:
  Device-1: NVIDIA AD102 [GeForce RTX 4090] vendor: Gigabyte driver: nvidia
    v: 575.64 alternate: nouveau,nvidia_drm non-free: 550-570.xx+
    status: current (as of 2025-04) arch: Lovelace code: AD1xx
    process: TSMC n4 (5nm) built: 2022+ pcie: gen: 1 speed: 2.5 GT/s lanes: 16
    link-max: gen: 4 speed: 16 GT/s ports: active: none empty: DP-1, DP-2,
    DP-3, HDMI-A-1 bus-ID: 01:00.0 chip-ID: 10de:2684 class-ID: 0300
  Device-2: Advanced Micro Devices [AMD/ATI] Raphael vendor: ASUSTeK
    driver: amdgpu v: kernel arch: RDNA-2 code: Navi-2x process: TSMC n7 (7nm)
    built: 2020-22 pcie: gen: 4 speed: 16 GT/s lanes: 16 ports:
    active: HDMI-A-2 empty: Writeback-1 bus-ID: 0c:00.0 chip-ID: 1002:164e
    class-ID: 0300 temp: 36.0 C
  Display: wayland server: X.org v: 1.21.1.18 with: Xwayland v: 24.1.8
    compositor: kwin_wayland driver: X: loaded: amdgpu,nvidia
    unloaded: modesetting alternate: fbdev,nouveau,nv,vesa dri: radeonsi
    gpu: amdgpu display-ID: 0
  Monitor-1: HDMI-A-2 model: Gigabyte AORUS FO48U serial: <filter>
    built: 2022 res: mode: 3840x2160 hz: 120 scale: 100% (1) dpi: 163 gamma: 1.2
    size: 941x529mm (37.05x20.83") diag: 690mm (27.2") ratio: 16:9 modes:
    max: 3840x2160 min: 640x480
  API: EGL v: 1.5 hw: drv: nvidia drv: amd radeonsi platforms: device: 0
    drv: nvidia device: 1 drv: radeonsi device: 3 drv: swrast gbm:
    drv: kms_swrast surfaceless: drv: nvidia wayland: drv: radeonsi x11:
    drv: radeonsi inactive: device-2
  API: OpenGL v: 4.6.0 compat-v: 4.5 vendor: mesa v: 25.1.4-arch1.1
    note: incomplete (EGL sourced) renderer: llvmpipe (LLVM 20.1.6 256 bits),
    AMD Radeon Graphics (radeonsi raphael_mendocino LLVM 20.1.6 DRM 3.63
    6.15.3-arch1-1), NVIDIA GeForce RTX 4090/PCIe/SSE2
  API: Vulkan v: 1.4.313 layers: 2 device: 0 type: discrete-gpu
    name: NVIDIA GeForce RTX 4090 driver: nvidia v: 575.64 device-ID: 10de:2684
    surfaces: N/A
  Info: Tools: api: clinfo, eglinfo, glxinfo, vulkaninfo
    de: kscreen-console,kscreen-doctor gpu: nvidia-smi wl: wayland-info
    x11: xdpyinfo, xprop, xrandr

Logs from journalctl from screen lock to unlock below.


---------------------------------
Jun 28 09:53:35 shervin-test kscreenlocker_greet[3536]: file:///usr/share/plasma/shells/org.kde.plasma.desktop/contents/lockscreen/LockOsd.qml:10:1: "../osd": no such directory
Jun 28 09:54:35 shervin-test dbus-broker[944]: A security policy denied :1.32 to send method call /org/freedesktop/login1/seat/seat0:org.freedesktop.login1.Seat.Inhibit to org.freedesktop.login1.
Jun 28 09:54:35 shervin-test kwin_wayland[1208]: kwin_core: Failed to delay sleep: Sender is not authorized to send message
Jun 28 09:54:50 shervin-test polkit-kde-authentication-agent-1[1502]: qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:54:50 shervin-test kactivitymanagerd[1476]: qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:54:50 shervin-test ksecretd[1177]: qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:54:50 shervin-test python[1711]: qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:54:50 shervin-test kdeconnectd[1712]: 2025-06-28T09:54:50 qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:54:50 shervin-test konsole[3486]: qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:54:50 shervin-test kwin_wayland[1208]: kwin_xwl: Could not find a matching X RandR CRTC/output to set as primary for KWin::PlaceholderOutput(0x55b439876040, name="Placeholder-1", geometry=QRect(0,0 1920x1080), scale=1)
Jun 28 09:54:50 shervin-test kscreenlocker_greet[3536]: qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:54:50 shervin-test kwin_wayland[1208]: kwin_xwl: Could not find a matching X RandR CRTC/output to set as primary for KWin::PlaceholderOutput(0x55b439876040, name="Placeholder-1", geometry=QRect(0,0 1920x1080), scale=1)
Jun 28 09:54:50 shervin-test xdg-desktop-portal-kde[1504]: qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:54:50 shervin-test plasmashell[1439]: kde.plasmashell: requesting unexisting screen available rect -1
Jun 28 09:54:50 shervin-test kded6[1392]: qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:54:50 shervin-test org_kde_powerdevil[1503]: qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:54:50 shervin-test plasmashell[1439]: qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:54:50 shervin-test plasmashell[1439]: kf.plasma.quick: Exposed with no visual parent. Window positioning broken.
Jun 28 09:54:51 shervin-test org_kde_powerdevil[1503]: [  1665] Removing connected display on bus 10
Jun 28 09:54:51 shervin-test org_kde_powerdevil[1503]: [  1665] (dw_remove_display_by_businfo) No Display_Ref found for i2c bus: 10
Jun 28 09:54:51 shervin-test kernel: HDR SB:aa 02 00 5f 84 c0 3e b0 33 cc 83 a8 1b ba 09 3a
Jun 28 09:54:51 shervin-test kernel: HDR SB:3d 47 40 be 01 de 00 be 01 be 01 00 00 00 00 00
Jun 28 09:54:51 shervin-test kernel: HDR SB:aa 02 00 5f 84 c0 3e b0 33 cc 83 a8 1b ba 09 3a
Jun 28 09:54:51 shervin-test kernel: HDR SB:3d 47 40 be 01 de 00 be 01 be 01 00 00 00 00 00
Jun 28 09:54:51 shervin-test kernel: HDR SB:aa 02 00 5f 84 c0 3e b0 33 cc 83 a8 1b ba 09 3a
Jun 28 09:54:51 shervin-test kernel: HDR SB:3d 47 40 be 01 de 00 be 01 be 01 00 00 00 00 00
Jun 28 09:54:51 shervin-test kernel: HDR SB:aa 02 00 5f 84 c0 3e b0 33 cc 83 a8 1b ba 09 3a
Jun 28 09:54:51 shervin-test kernel: HDR SB:3d 47 40 be 01 de 00 be 01 be 01 00 00 00 00 00
Jun 28 09:54:51 shervin-test kwin_wayland[1208]: kwin_xwl: Could not find a matching X RandR CRTC/output to set as primary for KWin::DrmOutput(0x55b439ed9610, name="HDMI-A-2", geometry=QRect(0,0 3840x2160), scale=1)
Jun 28 09:54:51 shervin-test kernel: HDR SB:aa 02 00 5f 84 c0 3e b0 33 cc 83 a8 1b ba 09 3a
Jun 28 09:54:51 shervin-test kernel: HDR SB:3d 47 40 be 01 de 00 be 01 be 01 00 00 00 00 00
Jun 28 09:54:51 shervin-test kscreenlocker_greet[3536]: file:///usr/share/plasma/shells/org.kde.plasma.desktop/contents/lockscreen/LockOsd.qml:10:1: "../osd": no such directory
Jun 28 09:54:51 shervin-test org_kde_powerdevil[1503]: [  1665] Adding connected display with bus 10
Jun 28 09:54:52 shervin-test org_kde_powerdevil[1503]: [  1665] Emitting DDCA_Display_Status_Event[282.883:  DDCA_EVENT_DISPLAY_CONNECTED, card1-HDMI-A-2, dref: DDCA_Display_Ref[2], io_path:/dev/i2c-10, ddc working: true]
Jun 28 09:54:52 shervin-test org_kde_powerdevil[1503]: [  1665] libddcutil callback thread 0x7f6790016c30 started
Jun 28 09:54:52 shervin-test org_kde_powerdevil[1503]: [  1665] Started 1 event callback thread(s)
Jun 28 09:54:52 shervin-test org_kde_powerdevil[1503]: [  1503] Quiescing libddcutil API...
Jun 28 09:54:52 shervin-test org_kde_powerdevil[1503]: [  1503] Quiesce libddcutil API complete
Jun 28 09:54:52 shervin-test org_kde_powerdevil[1503]: [  1503] Display redetection starting.
Jun 28 09:54:52 shervin-test org_kde_powerdevil[1503]: [  1664] recheck thread terminating because watch thread terminated
Jun 28 09:54:52 shervin-test org_kde_powerdevil[1503]: [  1503] Watch thread terminated.
Jun 28 09:54:52 shervin-test org_kde_powerdevil[1503]: [  1503] is_sysfs_reliable_for_busno(1) returned false and session type != X11. Assuming not asleep
Jun 28 09:54:52 shervin-test org_kde_powerdevil[1503]: [  1503] is_sysfs_reliable_for_busno(2) returned false and session type != X11. Assuming not asleep
Jun 28 09:54:52 shervin-test org_kde_powerdevil[1503]: [  1503] is_sysfs_reliable_for_busno(3) returned false and session type != X11. Assuming not asleep
Jun 28 09:54:53 shervin-test org_kde_powerdevil[1503]: [  1503] is_sysfs_reliable_for_busno(4) returned false and session type != X11. Assuming not asleep
Jun 28 09:54:53 shervin-test org_kde_powerdevil[1503]: [  1503] is_sysfs_reliable_for_busno(5) returned false and session type != X11. Assuming not asleep
Jun 28 09:54:53 shervin-test org_kde_powerdevil[1503]: [  1503] is_sysfs_reliable_for_busno(6) returned false and session type != X11. Assuming not asleep
Jun 28 09:54:55 shervin-test org_kde_powerdevil[1503]: [  1503] busno=10, sleep-multiplier= 2.00, Testing for unsupported feature 0xdd returned Error_Info[DDCRC_RETRIES in ddc_write_read_with_retry, causes: DDCRC_READ_ALL_ZERO, DDCRC_DDC_DATA(9)]
Jun 28 09:54:55 shervin-test org_kde_powerdevil[1503]: [  1503] Turning off dynamic sleep and retrying
Jun 28 09:54:56 shervin-test org_kde_powerdevil[1503]: [  1503] busno=10, sleep-multiplier = 1.00, Retesting for unsupported feature 0xdd returned Error_Info[DDCRC_RETRIES in ddc_write_read_with_retry, causes: DDCRC_DDC_DATA(10)]
Jun 28 09:54:58 shervin-test org_kde_powerdevil[1503]: [  1503] busno=10, sleep-multiplier= 2.00, Testing for unsupported feature 0x41 returned Error_Info[DDCRC_RETRIES in ddc_write_read_with_retry, causes: DDCRC_DDC_DATA(10)]
Jun 28 09:54:58 shervin-test org_kde_powerdevil[1503]: [  1503] Turning off dynamic sleep and retrying
Jun 28 09:54:59 shervin-test org_kde_powerdevil[1503]: [  1503] busno=10, sleep-multiplier = 1.00, Retesting for unsupported feature 0x41 returned Error_Info[DDCRC_RETRIES in ddc_write_read_with_retry, causes: DDCRC_DDC_DATA(10)]
Jun 28 09:55:01 shervin-test org_kde_powerdevil[1503]: [  1503] Watching for display connection changes, resolved watch mode = Watch_Mode_Xevent, poll loop interval = 100 millisec
Jun 28 09:55:01 shervin-test org_kde_powerdevil[1503]: [  1503]                                          extra_stabilization_millisec: 0,  stabilization_poll_millisec: 100
Jun 28 09:55:01 shervin-test org_kde_powerdevil[1503]: [  1503] libddcutil recheck thread (nil) started
Jun 28 09:55:01 shervin-test org_kde_powerdevil[1503]: [  1503] libddcutil watch thread 0x55a26894bcb0 started
Jun 28 09:55:01 shervin-test org_kde_powerdevil[1503]: [  1503] Display redetection finished.
Jun 28 09:55:01 shervin-test org_kde_powerdevil[1503]: [  1503] Unquiescing libddcutil API...
Jun 28 09:55:01 shervin-test org_kde_powerdevil[1503]: [  3653] (dw_recheck_displays_func) Recheck interval: Slept for 200 millisec
Jun 28 09:55:51 shervin-test dbus-broker[944]: A security policy denied :1.32 to send method call /org/freedesktop/login1/seat/seat0:org.freedesktop.login1.Seat.Inhibit to org.freedesktop.login1.
Jun 28 09:55:51 shervin-test kwin_wayland[1208]: kwin_core: Failed to delay sleep: Sender is not authorized to send message
Jun 28 09:56:06 shervin-test kactivitymanagerd[1476]: qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:56:06 shervin-test ksecretd[1177]: qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:56:06 shervin-test kdeconnectd[1712]: 2025-06-28T09:56:06 qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:56:06 shervin-test python[1711]: qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:56:06 shervin-test polkit-kde-authentication-agent-1[1502]: qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:56:06 shervin-test kscreenlocker_greet[3536]: qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:56:06 shervin-test kwin_wayland[1208]: kwin_xwl: Could not find a matching X RandR CRTC/output to set as primary for KWin::PlaceholderOutput(0x55b439c4f340, name="Placeholder-1", geometry=QRect(0,0 1920x1080), scale=1)
Jun 28 09:56:06 shervin-test kded6[1392]: qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:56:06 shervin-test konsole[3486]: qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:56:06 shervin-test kwin_wayland[1208]: kwin_xwl: Could not find a matching X RandR CRTC/output to set as primary for KWin::PlaceholderOutput(0x55b439c4f340, name="Placeholder-1", geometry=QRect(0,0 1920x1080), scale=1)
Jun 28 09:56:06 shervin-test xdg-desktop-portal-kde[1504]: qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:56:06 shervin-test plasmashell[1439]: kde.plasmashell: requesting unexisting screen available rect -1
Jun 28 09:56:06 shervin-test org_kde_powerdevil[1503]: qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:56:06 shervin-test plasmashell[1439]: qt.qpa.wayland: There are no outputs - creating placeholder screen
Jun 28 09:56:07 shervin-test org_kde_powerdevil[1503]: [  3654] Removing connected display on bus 10
Jun 28 09:56:07 shervin-test org_kde_powerdevil[1503]: [  3654] Emitting DDCA_Display_Status_Event[357.229:  DDCA_EVENT_DISPLAY_DISCONNECTED, card1-HDMI-A-2, dref: DDCA_Display_Ref[3], io_path:/dev/i2c-10, ddc working: false]
Jun 28 09:56:07 shervin-test org_kde_powerdevil[1503]: [  3654] libddcutil callback thread 0x7f6798002ff0 started
Jun 28 09:56:07 shervin-test org_kde_powerdevil[1503]: [  3654] Started 1 event callback thread(s)
Jun 28 09:56:07 shervin-test kernel: HDR SB:aa 02 00 5f 84 c0 3e b0 33 cc 83 a8 1b ba 09 3a
Jun 28 09:56:07 shervin-test kernel: HDR SB:3d 47 40 be 01 de 00 be 01 be 01 00 00 00 00 00
Jun 28 09:56:07 shervin-test kernel: HDR SB:aa 02 00 5f 84 c0 3e b0 33 cc 83 a8 1b ba 09 3a
Jun 28 09:56:07 shervin-test kernel: HDR SB:3d 47 40 be 01 de 00 be 01 be 01 00 00 00 00 00
Jun 28 09:56:07 shervin-test kernel: HDR SB:aa 02 00 5f 84 c0 3e b0 33 cc 83 a8 1b ba 09 3a
Jun 28 09:56:07 shervin-test kernel: HDR SB:3d 47 40 be 01 de 00 be 01 be 01 00 00 00 00 00
Jun 28 09:56:07 shervin-test kwin_wayland[1208]: kwin_xwl: Could not find a matching X RandR CRTC/output to set as primary for KWin::DrmOutput(0x55b439ed9610, name="HDMI-A-2", geometry=QRect(0,0 3840x2160), scale=1)
Jun 28 09:56:07 shervin-test kernel: HDR SB:aa 02 00 5f 84 c0 3e b0 33 cc 83 a8 1b ba 09 3a
Jun 28 09:56:07 shervin-test kernel: HDR SB:3d 47 40 be 01 de 00 be 01 be 01 00 00 00 00 00
Jun 28 09:56:07 shervin-test kernel: HDR SB:aa 02 00 5f 84 c0 3e b0 33 cc 83 a8 1b ba 09 3a
Jun 28 09:56:07 shervin-test kernel: HDR SB:3d 47 40 be 01 de 00 be 01 be 01 00 00 00 00 00
Jun 28 09:56:07 shervin-test kscreenlocker_greet[3536]: file:///usr/share/plasma/shells/org.kde.plasma.desktop/contents/lockscreen/LockOsd.qml:10:1: "../osd": no such directory
Jun 28 09:56:07 shervin-test org_kde_powerdevil[1503]: [  3654] Adding connected display with bus 10
Jun 28 09:56:09 shervin-test org_kde_powerdevil[1503]: [  3654] Emitting DDCA_Display_Status_Event[359.298:  DDCA_EVENT_DISPLAY_CONNECTED, card1-HDMI-A-2, dref: DDCA_Display_Ref[4], io_path:/dev/i2c-10, ddc working: true]
Jun 28 09:56:09 shervin-test org_kde_powerdevil[1503]: [  3654] libddcutil callback thread 0x7f679801c270 started
Jun 28 09:56:09 shervin-test org_kde_powerdevil[1503]: [  3654] Started 1 event callback thread(s)
Jun 28 09:56:09 shervin-test org_kde_powerdevil[1503]: [  1503] Quiescing libddcutil API...
Jun 28 09:56:09 shervin-test org_kde_powerdevil[1503]: [  1503] Quiesce libddcutil API complete
Jun 28 09:56:09 shervin-test org_kde_powerdevil[1503]: [  1503] Display redetection starting.
Jun 28 09:56:09 shervin-test org_kde_powerdevil[1503]: [  3653] recheck thread terminating because watch thread terminated
Jun 28 09:56:09 shervin-test org_kde_powerdevil[1503]: [  1503] Watch thread terminated.
Jun 28 09:56:09 shervin-test org_kde_powerdevil[1503]: [  1503] is_sysfs_reliable_for_busno(1) returned false and session type != X11. Assuming not asleep
Jun 28 09:56:09 shervin-test org_kde_powerdevil[1503]: [  1503] is_sysfs_reliable_for_busno(2) returned false and session type != X11. Assuming not asleep
Jun 28 09:56:09 shervin-test org_kde_powerdevil[1503]: [  1503] is_sysfs_reliable_for_busno(3) returned false and session type != X11. Assuming not asleep
Jun 28 09:56:09 shervin-test org_kde_powerdevil[1503]: [  1503] is_sysfs_reliable_for_busno(4) returned false and session type != X11. Assuming not asleep
Jun 28 09:56:09 shervin-test org_kde_powerdevil[1503]: [  1503] is_sysfs_reliable_for_busno(5) returned false and session type != X11. Assuming not asleep
Jun 28 09:56:09 shervin-test org_kde_powerdevil[1503]: [  1503] is_sysfs_reliable_for_busno(6) returned false and session type != X11. Assuming not asleep
Jun 28 09:56:11 shervin-test org_kde_powerdevil[1503]: [  1503] busno=10, sleep-multiplier= 2.00, Testing for unsupported feature 0xdd returned Error_Info[DDCRC_RETRIES in ddc_write_read_with_retry, causes: DDCRC_READ_ALL_ZERO, DDCRC_DDC_DATA(9)]
Jun 28 09:56:11 shervin-test org_kde_powerdevil[1503]: [  1503] Turning off dynamic sleep and retrying
Jun 28 09:56:12 shervin-test org_kde_powerdevil[1503]: [  1503] busno=10, sleep-multiplier = 1.00, Retesting for unsupported feature 0xdd returned Error_Info[DDCRC_RETRIES in ddc_write_read_with_retry, causes: DDCRC_DDC_DATA(10)]
Jun 28 09:56:14 shervin-test org_kde_powerdevil[1503]: [  1503] busno=10, sleep-multiplier= 2.00, Testing for unsupported feature 0x41 returned Error_Info[DDCRC_RETRIES in ddc_write_read_with_retry, causes: DDCRC_DDC_DATA(10)]
Jun 28 09:56:14 shervin-test org_kde_powerdevil[1503]: [  1503] Turning off dynamic sleep and retrying
Jun 28 09:56:16 shervin-test org_kde_powerdevil[1503]: [  1503] busno=10, sleep-multiplier = 1.00, Retesting for unsupported feature 0x41 returned Error_Info[DDCRC_RETRIES in ddc_write_read_with_retry, causes: DDCRC_DDC_DATA(10)]
Jun 28 09:56:17 shervin-test org_kde_powerdevil[1503]: [  1503] Watching for display connection changes, resolved watch mode = Watch_Mode_Xevent, poll loop interval = 100 millisec
Jun 28 09:56:17 shervin-test org_kde_powerdevil[1503]: [  1503]                                          extra_stabilization_millisec: 0,  stabilization_poll_millisec: 100
Jun 28 09:56:17 shervin-test org_kde_powerdevil[1503]: [  1503] libddcutil recheck thread (nil) started
Jun 28 09:56:17 shervin-test org_kde_powerdevil[1503]: [  1503] libddcutil watch thread 0x55a2689175c0 started
Jun 28 09:56:17 shervin-test org_kde_powerdevil[1503]: [  1503] Display redetection finished.
Jun 28 09:56:17 shervin-test org_kde_powerdevil[1503]: [  1503] Unquiescing libddcutil API...
Jun 28 09:56:17 shervin-test org_kde_powerdevil[1503]: [  3719] (dw_recheck_displays_func) Recheck interval: Slept for 200 millisec
Jun 28 09:57:41 shervin-test kscreenlocker_greet[3536]: qt.qpa.wayland: Could not create EGL surface (EGL error 0x3000)
Jun 28 09:57:41 shervin-test kscreenlocker_greet[3536]: Failed to write to the pipe: Bad file descriptor.

-----------------------------------
Comment 12 TraceyC 2025-07-01 21:27:56 UTC
*** Bug 506015 has been marked as a duplicate of this bug. ***
Comment 13 TraceyC 2025-07-01 21:31:24 UTC
Setting to confirmed, given the duplicates
Comment 14 Bug Janitor Service 2025-07-03 15:34:03 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/7868
Comment 15 Zamundaaa 2025-07-03 16:38:22 UTC
*** Bug 506375 has been marked as a duplicate of this bug. ***
Comment 16 liusen 2025-07-04 09:41:34 UTC
(In reply to Bug Janitor Service from comment #14)
> A possibly relevant merge request was started @
> https://invent.kde.org/plasma/kwin/-/merge_requests/7868

After porting your patches (and review suggestions) to version 6.4.1 and recompiling/reinstalling, ‌the issue is gone‌.

My report : https://bugs.kde.org/show_bug.cgi?id=506375
Comment 17 Zamundaaa 2025-07-04 13:33:26 UTC
Git commit e177e1d2da8a278f85d5d3e24ffdc01e7c2eaca6 by Xaver Hugl.
Committed on 04/07/2025 at 13:10.
Pushed by zamundaaa into branch 'master'.

backends/drm: don't use UUID to identify outputs

The UUID is only set later by the output configuration system, so it can't be used in
the drm backend when deciding the dpms state of a "new" output.
This changes it to use EDID ID, EDID hash or connector name instead, which are valid
much earlier and are reliable enough for the dpms workaround.
Related: bug 506135, bug 505953

M  +19   -3    src/backends/drm/drm_backend.cpp

https://invent.kde.org/plasma/kwin/-/commit/e177e1d2da8a278f85d5d3e24ffdc01e7c2eaca6
Comment 18 Zamundaaa 2025-07-04 14:50:08 UTC
Git commit 8f331a268cf1e457b8727080763869e1b426dae8 by Xaver Hugl, on behalf of Xaver Hugl.
Committed on 04/07/2025 at 13:57.
Pushed by zamundaaa into branch 'Plasma/6.4'.

backends/drm: don't use UUID to identify outputs

The UUID is only set later by the output configuration system, so it can't be used in
the drm backend when deciding the dpms state of a "new" output.
This changes it to use EDID ID, EDID hash or connector name instead, which are valid
much earlier and are reliable enough for the dpms workaround.
Related: bug 506135, bug 505953


(cherry picked from commit e177e1d2da8a278f85d5d3e24ffdc01e7c2eaca6)

Co-authored-by: Xaver Hugl <xaver.hugl@kde.org>

M  +19   -3    src/backends/drm/drm_backend.cpp

https://invent.kde.org/plasma/kwin/-/commit/8f331a268cf1e457b8727080763869e1b426dae8
Comment 19 Oleg Gorobets 2025-07-31 09:08:16 UTC
I can still reproduce it on Plasma 6.4.3 on every try.
Comment 20 TraceyC 2025-07-31 17:05:09 UTC
Reopening, since the bug is still happening on 6.4.3
Comment 21 Zamundaaa 2025-07-31 17:12:16 UTC
(In reply to Oleg Gorobets from comment #19)
> I can still reproduce it on Plasma 6.4.3 on every try.
Does putting KWIN_DPMS_WORKAROUND_TIMEOUT=100000 into /etc/environment and rebooting make a difference?
Comment 22 Oleg Gorobets 2025-07-31 18:47:50 UTC
(In reply to Zamundaaa from comment #21)

> Does putting KWIN_DPMS_WORKAROUND_TIMEOUT=100000 into /etc/environment and
> rebooting make a difference?

Just tried it, same thing, no difference.
Comment 23 Zamundaaa 2025-08-07 18:13:43 UTC
Created attachment 183864 [details]
print ids on output hotplug
Comment 24 Zamundaaa 2025-08-07 18:14:08 UTC
If that doesn't work, then the display must not be recognized as the same one after re-plugging. Could you apply that patch to KWin to find out?
Comment 25 Dinolek 2025-08-09 14:07:09 UTC
I'm experiencing same problem on 6.4.4, with print ids patch I got:
sie 09 15:43:26 arch-portable kwin_wayland[816]: kwin_core: Failed to delay sleep: Sender is not authorized to send message
sie 09 15:43:32 arch-portable kwin_wayland[816]: removed dpms-off output "PHL 49732 9057 34 2020 0"
sie 09 15:43:32 arch-portable kwin_wayland[816]: kwin_xwl: Could not find a matching X RandR CRTC/output to set as primary for KWin::DrmOutput(0x55cf963dd1c0, name="eDP-1", geometry=QRect(0,0 1440x900), scale=2)
sie 09 15:43:33 arch-portable kwin_wayland[816]: kwin_xwl: Could not find a matching X RandR CRTC/output to set as primary for KWin::DrmOutput(0x55cf963dd1c0, name="eDP-1", geometry=QRect(0,0 1440x900), scale=2)
sie 09 15:43:33 arch-portable kwin_wayland[816]: kwin_xwl: Could not find a matching X RandR CRTC/output to set as primary for KWin::DrmOutput(0x55cf963dd1c0, name="eDP-1", geometry=QRect(0,0 1440x900), scale=2)
sie 09 15:43:33 arch-portable kwin_wayland[816]: adding output "PHL 49732 9057 34 2020 0"
sie 09 15:43:33 arch-portable kwin_wayland[816]: turning it on
sie 09 15:43:33 arch-portable kwin_wayland[816]: kwin_wayland_drm: Atomic modeset test failed! Invalid argument
sie 09 15:43:33 arch-portable kwin_wayland[816]: kwin_wayland_drm: Atomic modeset test failed! Invalid argument
sie 09 15:43:33 arch-portable kwin_wayland[816]: kwin_xwl: Could not find a matching X RandR CRTC/output to set as primary for KWin::DrmOutput(0x55cf963deab0, name="HDMI-A-1", geometry=QRect(0,0 1920x1080), scale=1)
sie 09 15:43:34 arch-portable kwin_wayland[816]: kwin_xwl: Could not find a matching X RandR CRTC/output to set as primary for KWin::DrmOutput(0x55cf963deab0, name="HDMI-A-1", geometry=QRect(0,0 1920x1080), scale=1)
sie 09 15:43:34 arch-portable kwin_wayland[816]: kwin_xwl: Could not find a matching X RandR CRTC/output to set as primary for KWin::DrmOutput(0x55cf963deab0, name="HDMI-A-1", geometry=QRect(0,0 1920x1080), scale=1)
sie 09 15:43:34 arch-portable kwin_wayland[816]: removing from off list: "PHL 49732 9057 34 2020 0"


I added print to allOff lambda and it outputs: "eDP-1" = KWin::Output::DpmsMode::On
Comment 26 Zamundaaa 2025-08-11 12:50:56 UTC
(In reply to Dinolek from comment #25)
> I added print to allOff lambda and it outputs: "eDP-1" =
> KWin::Output::DpmsMode::On
That's very useful, thanks. I assume then that your laptop display is turned off (or you have the lid closed)?
Comment 27 Dinolek 2025-08-11 14:38:43 UTC
(In reply to Zamundaaa from comment #26)
> (In reply to Dinolek from comment #25)
> > I added print to allOff lambda and it outputs: "eDP-1" =
> > KWin::Output::DpmsMode::On
> That's very useful, thanks. I assume then that your laptop display is turned
> off (or you have the lid closed)?

Yes, it's turned off.
I added print to updateDpmsMode and got this.

With internal and external screens:
sie 11 15:10:02 arch-portable kwin_wayland[71084]: updateDpmsMode "eDP-1" KWin::Output::DpmsMode::AboutToTurnOff
sie 11 15:10:02 arch-portable kwin_wayland[71084]: kwin_core: Failed to delay sleep: Sender is not authorized to send message
sie 11 15:10:02 arch-portable kwin_wayland[71084]: updateDpmsMode "HDMI-A-1" KWin::Output::DpmsMode::AboutToTurnOff
sie 11 15:10:02 arch-portable kwin_wayland[71084]: kwin_core: Failed to delay sleep: Sender is not authorized to send message
sie 11 15:10:02 arch-portable kwin_wayland[71084]: updateDpmsMode "eDP-1" KWin::Output::DpmsMode::Off
sie 11 15:10:02 arch-portable kwin_wayland[71084]: updateDpmsMode "HDMI-A-1" KWin::Output::DpmsMode::Off
sie 11 15:10:08 arch-portable kwin_wayland[71084]: removed dpms-off output "PHL 49732 9057 34 2020 0"
sie 11 15:10:08 arch-portable kwin_wayland[71084]: updateDpmsMode "eDP-1" KWin::Output::DpmsMode::On
sie 11 15:10:09 arch-portable kwin_wayland[71084]: adding output "PHL 49732 9057 34 2020 0"
sie 11 15:10:09 arch-portable kwin_wayland[71084]: allOff "eDP-1" = KWin::Output::DpmsMode::On
sie 11 15:10:09 arch-portable kwin_wayland[71084]: "PHL 49732 9057 34 2020 0"
sie 11 15:10:09 arch-portable kwin_wayland[71084]: turning it on
sie 11 15:10:09 arch-portable kwin_wayland[71084]: kwin_xwl: Could not find a matching X RandR CRTC/output to set as primary for KWin::DrmOutput(0x563c784839d0, name="HDMI-A-1", geometry=QRect(1440,0 1920x1080), scale=1)
sie 11 15:10:09 arch-portable kwin_wayland[71084]: kwin_core: KWin::LayerShellV1Window doesn't support setting maximized state
sie 11 15:10:09 arch-portable kwin_wayland[71084]: kwin_core: KWin::LayerShellV1Window doesn't support setting fullscreen state
sie 11 15:10:10 arch-portable kwin_wayland[71084]: removing from off list: "PHL 49732 9057 34 2020 0"


With external screen enabled only:
sie 11 15:14:50 arch-portable kwin_wayland[71084]: kwin_wayland_drm: atomic commit failed: Invalid argument
sie 11 15:14:50 arch-portable kwin_wayland[71084]: updateDpmsMode "HDMI-A-1" KWin::Output::DpmsMode::AboutToTurnOff
sie 11 15:14:50 arch-portable kwin_wayland[71084]: kwin_core: Failed to delay sleep: Sender is not authorized to send message
sie 11 15:14:51 arch-portable kwin_wayland[71084]: updateDpmsMode "HDMI-A-1" KWin::Output::DpmsMode::Off
sie 11 15:14:57 arch-portable kwin_wayland[71084]: removed dpms-off output "PHL 49732 9057 34 2020 0"
sie 11 15:14:57 arch-portable kwin_wayland[71084]: kwin_xwl: Could not find a matching X RandR CRTC/output to set as primary for KWin::DrmOutput(0x563c76ff9150, name="eDP-1", geometry=QRect(0,0 1440x900), scale=2)
sie 11 15:14:57 arch-portable kwin_wayland[71084]: adding output "PHL 49732 9057 34 2020 0"
sie 11 15:14:57 arch-portable kwin_wayland[71084]: allOff "eDP-1" = KWin::Output::DpmsMode::On
sie 11 15:14:57 arch-portable kwin_wayland[71084]: "PHL 49732 9057 34 2020 0"
sie 11 15:14:57 arch-portable kwin_wayland[71084]: turning it on
sie 11 15:14:57 arch-portable kwin_wayland[71084]: kwin_wayland_drm: Atomic modeset test failed! Invalid argument
sie 11 15:14:57 arch-portable kwin_wayland[71084]: kwin_wayland_drm: Atomic modeset test failed! Invalid argument
sie 11 15:14:58 arch-portable kwin_wayland[71084]: kwin_xwl: Could not find a matching X RandR CRTC/output to set as primary for KWin::DrmOutput(0x563c784839d0, name="HDMI-A-1", geometry=QRect(0,0 1920x1080), scale=1)
sie 11 15:14:59 arch-portable kwin_wayland[71084]: removing from off list: "PHL 49732 9057 34 2020 0"
Comment 28 Zamundaaa 2025-08-11 15:17:47 UTC
Git commit efd9943d9c128f21cd32d131fca3d8942698df54 by Xaver Hugl.
Committed on 11/08/2025 at 13:45.
Pushed by zamundaaa into branch 'master'.

backends/drm: ignore disabled outputs when checking for dpms off

Only enabled outputs have their dpms state set by powerdevil

M  +1    -1    src/backends/drm/drm_backend.cpp

https://invent.kde.org/plasma/kwin/-/commit/efd9943d9c128f21cd32d131fca3d8942698df54
Comment 29 Zamundaaa 2025-08-11 15:43:50 UTC
(In reply to Dinolek from comment #27)
> Yes, it's turned off.
Then the commit will fix it :)
Comment 30 Dinolek 2025-08-11 15:57:00 UTC
(In reply to Zamundaaa from comment #29)
> (In reply to Dinolek from comment #27)
> > Yes, it's turned off.
> Then the commit will fix it :)

For me enabled is true at this point.

When I test it with kscreen-doctor -d off:
1. External screen goes black
2. Internal screen turns on
3. After second internal screen turns off
4. External screen turns on

I was testing it before with lockscreen timeout and in there internal screen is black all the time.
Comment 31 Zamundaaa 2025-08-11 16:06:16 UTC
Git commit d03a21db327fde75afd4a797b0d49eb48b462104 by Xaver Hugl.
Committed on 11/08/2025 at 15:42.
Pushed by zamundaaa into branch 'Plasma/6.4'.

backends/drm: ignore disabled outputs when checking for dpms off

Only enabled outputs have their dpms state set by powerdevil


(cherry picked from commit efd9943d9c128f21cd32d131fca3d8942698df54)

Co-authored-by: Xaver Hugl <xaver.hugl@kde.org>

M  +1    -1    src/backends/drm/drm_backend.cpp

https://invent.kde.org/plasma/kwin/-/commit/d03a21db327fde75afd4a797b0d49eb48b462104
Comment 32 Zamundaaa 2025-08-11 16:13:28 UTC
(In reply to Dinolek from comment #30)
> For me enabled is true at this point.
> 
> When I test it with kscreen-doctor -d off:
> 1. External screen goes black
> 2. Internal screen turns on
> 3. After second internal screen turns off
> 4. External screen turns on
> 
> I was testing it before with lockscreen timeout and in there internal screen
> is black all the time.
Ok, I think we had some miscommunication here. With "off" I meant that the output is actually disabled in the display settings, or the lid is closed (where KWin automatically disables it).

I sounds more like your internal display has issues than the external one, or something else wakes the displays entirely. This bit
> sie 11 15:10:08 arch-portable kwin_wayland[71084]: removed dpms-off output "PHL 49732 9057 34 2020 0"
> sie 11 15:10:08 arch-portable kwin_wayland[71084]: updateDpmsMode "eDP-1" KWin::Output::DpmsMode::On
is quite weird... Could you get a backtrace of that particular updateDpmsMode call?
Comment 33 Dinolek 2025-08-12 08:26:22 UTC
(In reply to Zamundaaa from comment #32)
> (In reply to Dinolek from comment #30)
> > For me enabled is true at this point.
> >
> > When I test it with kscreen-doctor -d off:
> > 1. External screen goes black
> > 2. Internal screen turns on
> > 3. After second internal screen turns off
> > 4. External screen turns on
> >
> > I was testing it before with lockscreen timeout and in there internal screen
> > is black all the time.
> Ok, I think we had some miscommunication here. With "off" I meant that the
> output is actually disabled in the display settings, or the lid is closed
> (where KWin automatically disables it).
I had the internal display disabled in the display settings.
I added logs with both screens, as that case is broken too, though it looks like a different issue.

> I sounds more like your internal display has issues than the external one,
> or something else wakes the displays entirely. This bit
> > sie 11 15:10:08 arch-portable kwin_wayland[71084]: removed dpms-off output "PHL 49732 9057 34 2020 0"
> > sie 11 15:10:08 arch-portable kwin_wayland[71084]: updateDpmsMode "eDP-1" KWin::Output::DpmsMode::On
> is quite weird... Could you get a backtrace of that particular
> updateDpmsMode call?
This updateDpmsMode call only happens when both monitors are on.
With external monitor enabled only, internal monitor has DpmsMode::On all the time despite being off.

KWin::DrmOutput::updateDpmsMode(KWin::Output::DpmsMode)
KWin::DrmOutput::setDrmDpmsMode(KWin::Output::DpmsMode)
KWin::DrmOutput::setDpmsMode(KWin::Output::DpmsMode)
KWin::DpmsInputEventFilter::notify()
non-virtual thunk to KWin::DpmsInputEventFilter::pointerMotion(KWin::PointerMotionEvent*)
KWin::PointerInputRedirection::processMotionInternal(QPointF const&, QPointF const&, QPointF const&, std::chrono::duration<long, std::ratio<1l, 1000000l> >, KWin::InputDevice*, KWin::PointerInputRedirection::MotionType)
KWin::PointerInputRedirection::processMotionAbsolute(QPointF const&, std::chrono::duration<long, std::ratio<1l, 1000000l> >, KWin::InputDevice*)
KWin::PointerInputRedirection::updateAfterScreenChange()
QtPrivate::QSlotObjectBase::Deleter::operator()(QtPrivate::QSlotObjectBase*) const inlined at /usr/include/c++/15.1.1/bits/unique_ptr.h:399:17 in void doActivate<false>(QObject*, int, void**)
KWin::Workspace::updateOutputs(std::optional<QList<KWin::Output*> > const&)
KWin::Workspace::applyOutputConfiguration(KWin::OutputConfiguration&, std::optional<QList<KWin::Output*> > const&)
KWin::Workspace::updateOutputConfiguration()
KWin::Workspace::slotOutputBackendOutputsQueried()
QtPrivate::QSlotObjectBase::Deleter::operator()(QtPrivate::QSlotObjectBase*) const inlined at /usr/include/c++/15.1.1/bits/unique_ptr.h:399:17 in void doActivate<false>(QObject*, int, void**)
KWin::DrmBackend::updateOutputs()
KWin::DrmBackend::handleUdevEvent()
QtPrivate::QSlotObjectBase::Deleter::operator()(QtPrivate::QSlotObjectBase*) const inlined at /usr/include/c++/15.1.1/bits/unique_ptr.h:399:17 in void doActivate<false>(QObject*, int, void**)
QWeakPointer<QObject>::isNull() const inlined at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qpointer.h:86:23 in QSocketNotifier::event(QEvent*)
QCoreApplicationPrivate::setEventSpontaneous(QEvent*, bool) inlined at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3305:49 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
QCoreApplication::notifyInternal2(QObject*, QEvent*)
QEventDispatcherUNIXPrivate::activateSocketNotifiers()
QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
std::__atomic_base<int>::load(std::memory_order) const inlined at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qatomic_cxx11.h:214:29 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
QCoreApplication::exec()
main


With only external monitor enabled in settings, after external monitor is sleeping, internal monitor gets enabled, affecting allOff macro.
I get this after "removed dpms-off output "PHL 49732 9057 34 2020 0"":
sie 12 09:00:02 arch-portable kwin_wayland[335550]: DrmBackend::applyOutputChanges toBeEnabled << "eDP-1"
sie 12 09:00:02 arch-portable kwin_wayland[335550]: kwin_wayland_drm: Attempting to match QList(DrmConnector(id=99, gpu="/dev/dri/card1", name="eDP-1", connection="Connected", countMode=13), DrmConnector(id=107, gpu="/dev/dri/card1", name="HDMI-A-1", connection="Disconnected", countMode=0)) with QList(DrmObject(id=85, gpu="/dev/dri/card1"), DrmObject(id=89, gpu="/dev/dri/card1"), DrmObject(id=93, gpu="/dev/dri/card1"), DrmObject(id=97, gpu="/dev/dri/card1"))
sie 12 09:00:02 arch-portable kwin_wayland[335550]: kwin_wayland_drm: Assigning CRTC 85 to connector 99
sie 12 09:00:02 arch-portable kwin_wayland[335550]: kwin_wayland_drm: Attempting to match QList(DrmConnector(id=107, gpu="/dev/dri/card1", name="HDMI-A-1", connection="Disconnected", countMode=0)) with QList(DrmObject(id=89, gpu="/dev/dri/card1"), DrmObject(id=93, gpu="/dev/dri/card1"), DrmObject(id=97, gpu="/dev/dri/card1"))
sie 12 09:00:02 arch-portable kwin_wayland[335550]: kwin_wayland_drm: Attempting to match QList() with QList(DrmObject(id=89, gpu="/dev/dri/card1"), DrmObject(id=93, gpu="/dev/dri/card1"), DrmObject(id=97, gpu="/dev/dri/card1"))
sie 12 09:00:02 arch-portable kwin_wayland[335550]: kwin_wayland_drm: Testing CRTC assignment... passed
sie 12 09:00:02 arch-portable kwin_wayland[335550]: Output::setState "eDP-1" enabled = true
KWin::Output::setState(KWin::Output::State const&) [clone .cold]
QArrayDataPointer<char16_t>::QArrayDataPointer(QArrayDataPointer<char16_t> const&) inlined at /usr/include/qt6/QtCore/qstring.h:1340:51 in KWin::DrmOutput::applyQueuedChanges(std::shared_ptr<KWin::OutputChangeSet> const&) [clone .part.0]
KWin::DrmBackend::applyOutputChanges(KWin::OutputConfiguration const&)
KWin::Workspace::applyOutputConfiguration(KWin::OutputConfiguration&, std::optional<QList<KWin::Output*> > const&)
KWin::Workspace::updateOutputConfiguration()
KWin::Workspace::slotOutputBackendOutputsQueried()
QtPrivate::QSlotObjectBase::Deleter::operator()(QtPrivate::QSlotObjectBase*) const inlined at /usr/include/c++/15.1.1/bits/unique_ptr.h:399:17 in void doActivate<false>(QObject*, int, void**)
KWin::DrmBackend::updateOutputs()
KWin::DrmBackend::handleUdevEvent()
QtPrivate::QSlotObjectBase::Deleter::operator()(QtPrivate::QSlotObjectBase*) const inlined at /usr/include/c++/15.1.1/bits/unique_ptr.h:399:17 in void doActivate<false>(QObject*, int, void**)
QWeakPointer<QObject>::isNull() const inlined at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qpointer.h:86:23 in QSocketNotifier::event(QEvent*)
QCoreApplicationPrivate::setEventSpontaneous(QEvent*, bool) inlined at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3305:49 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
QCoreApplication::notifyInternal2(QObject*, QEvent*)
QEventDispatcherUNIXPrivate::activateSocketNotifiers()
QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
std::__atomic_base<int>::load(std::memory_order) const inlined at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qatomic_cxx11.h:214:29 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
QCoreApplication::exec()
main
sie 12 09:00:03 arch-portable kwin_wayland[335550]: kwin_wayland_drm: Received change event for monitored drm device "/dev/dri/card1"
sie 12 09:00:03 arch-portable kwin_wayland[335550]: kwin_wayland_drm: New output on GPU /dev/dri/card1: PHL 242E1GJ
sie 12 09:00:03 arch-portable kwin_wayland[335550]: adding output "PHL 49732 9057 34 2020 0"
sie 12 09:00:03 arch-portable kwin_wayland[335550]: allOff "eDP-1" mode = KWin::Output::DpmsMode::On enabled = true
sie 12 09:00:03 arch-portable kwin_wayland[335550]: turning it on
sie 12 09:00:03 arch-portable kwin_wayland[335550]: DrmBackend::applyOutputChanges toBeDisabled << "eDP-1"
sie 12 09:00:03 arch-portable kwin_wayland[335550]: DrmBackend::applyOutputChanges toBeEnabled << "HDMI-A-1"
sie 12 09:00:03 arch-portable kwin_wayland[335550]: kwin_wayland_drm: Attempting to match QList(DrmConnector(id=99, gpu="/dev/dri/card1", name="eDP-1", connection="Connected", countMode=13), DrmConnector(id=107, gpu="/dev/dri/card1", name="HDMI-A-1", connection="Connected", countMode=45)) with QList(DrmObject(id=85, gpu="/dev/dri/card1"), DrmObject(id=89, gpu="/dev/dri/card1"), DrmObject(id=93, gpu="/dev/dri/card1"), DrmObject(id=97, gpu="/dev/dri/card1"))
sie 12 09:00:03 arch-portable kwin_wayland[335550]: kwin_wayland_drm: Unassigning CRTC from connector 99
sie 12 09:00:03 arch-portable kwin_wayland[335550]: kwin_wayland_drm: Attempting to match QList(DrmConnector(id=107, gpu="/dev/dri/card1", name="HDMI-A-1", connection="Connected", countMode=45)) with QList(DrmObject(id=85, gpu="/dev/dri/card1"), DrmObject(id=89, gpu="/dev/dri/card1"), DrmObject(id=93, gpu="/dev/dri/card1"), DrmObject(id=97, gpu="/dev/dri/card1"))
sie 12 09:00:03 arch-portable kwin_wayland[335550]: kwin_wayland_drm: Assigning CRTC 85 to connector 107
sie 12 09:00:03 arch-portable kwin_wayland[335550]: kwin_wayland_drm: Attempting to match QList() with QList(DrmObject(id=89, gpu="/dev/dri/card1"), DrmObject(id=93, gpu="/dev/dri/card1"), DrmObject(id=97, gpu="/dev/dri/card1"))
sie 12 09:00:03 arch-portable kwin_wayland[335550]: kwin_wayland_drm: Testing CRTC assignment... passed
sie 12 09:00:03 arch-portable kwin_wayland[335550]: Output::setState "HDMI-A-1" enabled = true
sie 12 09:00:03 arch-portable kwin_wayland[335550]: Output::setState "eDP-1" enabled = false
sie 12 09:00:04 arch-portable kwin_wayland[335550]: removing from off list: "PHL 49732 9057 34 2020 0"
Comment 34 Oleg Gorobets 2025-08-14 14:43:06 UTC
(In reply to Zamundaaa from comment #24)

I just compiled with 'print ids' patch and here is my output:

сер 14 17:31:22 p15v kwin_wayland[939]: kwin_core: Failed to delay sleep: Sender is not authorized to send message
сер 14 17:31:34 p15v kwin_wayland[939]: removed dpms-off output "PHL 49494 29203 47 2019 0"
сер 14 17:31:34 p15v kwin_wayland[939]: kwin_xwl: Could not find a matching X RandR CRTC/output to set as primary for KWin::DrmOutput(0x5b534c572270, name="eDP-1", geometry=QRect(0,0 1920x1080), scale=1)
сер 14 17:31:35 p15v kwin_wayland[939]: kwin_xwl: Could not find a matching X RandR CRTC/output to set as primary for KWin::DrmOutput(0x5b534c572270, name="eDP-1", geometry=QRect(0,0 1920x1080), scale=1)
сер 14 17:31:35 p15v kwin_wayland[939]: kwin_xwl: Could not find a matching X RandR CRTC/output to set as primary for KWin::DrmOutput(0x5b534c572270, name="eDP-1", geometry=QRect(0,0 1920x1080), scale=1)
сер 14 17:31:35 p15v kwin_wayland[939]: adding output "PHL 49494 29203 47 2019 0"
сер 14 17:31:35 p15v kwin_wayland[939]: turning it on
сер 14 17:31:35 p15v kwin_wayland[939]: kwin_wayland_drm: Atomic modeset test failed! Invalid argument
сер 14 17:31:35 p15v kwin_wayland[939]: kwin_wayland_drm: Atomic modeset test failed! Invalid argument
сер 14 17:31:35 p15v kwin_wayland[939]: kwin_xwl: Could not find a matching X RandR CRTC/output to set as primary for KWin::DrmOutput(0x5b534c573a20, name="HDMI-A-1", geometry=QRect(0,0 1920x1080), scale=1)
сер 14 17:31:35 p15v kwin_wayland[939]: kwin_wayland_drm: Atomic modeset test failed! Invalid argument
сер 14 17:31:35 p15v kwin_wayland[939]: kwin_wayland_drm: Atomic modeset test failed! Invalid argument
сер 14 17:31:35 p15v kwin_wayland[939]: kwin_wayland_drm: Atomic modeset test failed! Invalid argument
сер 14 17:31:35 p15v kwin_wayland[939]: kwin_wayland_drm: Atomic modeset test failed! Invalid argument
сер 14 17:31:35 p15v kwin_wayland[939]: kwin_xwl: Could not find a matching X RandR CRTC/output to set as primary for KWin::DrmOutput(0x5b534c573a20, name="HDMI-A-1", geometry=QRect(0,0 1920x1080), scale=1)
сер 14 17:31:35 p15v kwin_wayland[939]: kwin_xwl: Could not find a matching X RandR CRTC/output to set as primary for KWin::DrmOutput(0x5b534c573a20, name="HDMI-A-1", geometry=QRect(0,0 1920x1080), scale=1)
сер 14 17:31:36 p15v kwin_wayland[939]: removing from off list: "PHL 49494 29203 47 2019 0"
сер 14 17:32:08 p15v kwin_wayland[939]: qt.dbus.integration: QDBusConnection: couldn't handle call to Teardown, no slot matched
сер 14 17:32:08 p15v kwin_wayland[939]: qt.dbus.integration: QDBusConnection: couldn't handle call to Teardown, no slot matched
сер 14 17:32:08 p15v kwin_wayland[939]: qt.dbus.integration: Could not find slot Krunner1Adaptor::Teardown
Comment 35 Oleg Gorobets 2025-08-17 12:39:57 UTC
I added some more logging here and there and I can confirm findings by Dinolek:

1) Built-in display stays in DPMS mode == ON all the time despite being disabled in Display Configuration
2) When external display is going to sleep, built-in display gets re-enabled.

It looks as built-in display gets re-enabled because configuration of the outputs changes and KWin loads different setup in OutputConfigurationStore::findSetup(). These setups are also stored in this file: .config/kwinoutputconfig.json. There are total of 5 setups in my case.

When external display is on it loads this one ("outputIndex": 0, "enabled": false):
      {
        "lidClosed": false,
        "outputs": [
          {
            "enabled": false,
            "outputIndex": 0,
            "position": {
              "x": 216,
              "y": 1080
            },
            "priority": -1,
            "replicationSource": ""
          },
          {
            "enabled": true,
            "outputIndex": 1,
            "position": {
              "x": 0,
              "y": 0
            },
            "priority": 0,
            "replicationSource": ""
          }
        ]
      }

When external display goes off for a second, it loads this one ("outputIndex": 0, "enabled": true):
      {
        "lidClosed": true,
        "outputs": [
          {
            "enabled": true,
            "outputIndex": 0,
            "position": {
              "x": 0,
              "y": 0
            },
            "priority": 0,
            "replicationSource": ""
          }
        ]
      },
Comment 36 TraceyC 2025-08-18 17:35:55 UTC
I'm marking this as confirmed since Oleg was able to confirm