You are not logged in.
I have a Lenovo LOQ 15IRX9 - Type 83DV and I'm using the proprietary Nvidia drivers on Wayland.
I have enabled Discrete Graphics from BIOS to make sure that my RTX 4060 is the only used GPU.
I need help troubleshooting my built-in laptop display.
After waking the computer from sleep, the built-in screen remains black.
After connecting to an external display and switching back to the built-in display, the screen remains black.
1. My external ASUS display doesn't suffer any issues upon resuming from sleep.
2. Hibernation works and doesn't cause a blackscreen upon boot.
3. There is SSH access to the machine even though the screen remains black (I ran `kwin_wayland --replace` but that didn't solve it).
4. The built-in display is completely powered off after I try to wake up the laptop. I don't think the issue is with wayland.
5. I've tried the
lib32-nvidia-utils-beta nvidia-beta nvidia-settings-beta nvidia-utils-beta
packages, but they don't even work, let alone solve the issue.
6. `systemctl list-unit-files | grep -i nvidia` returns
nvidia-hibernate.service enabled disabled
nvidia-persistenced.service disabled disabled
nvidia-powerd.service disabled disabled
nvidia-resume.service enabled disabled
nvidia-suspend-then-hibernate.service enabled disabled
nvidia-suspend.service enabled disabled
System:
Kernel: 6.15.8-arch1-2 arch: x86_64 bits: 64
Desktop: KDE Plasma v: 6.4.3 Distro: Arch Linux
Machine:
Type: Laptop System: LENOVO product: 83DV v: LOQ 15IRX9
serial: <superuser required>
Mobo: LENOVO model: LNVNB161216 v: No DPK serial: <superuser required>
UEFI: LENOVO v: NECN44WW date: 04/01/2025
Battery:
ID-1: BAT1 charge: 60.2 Wh (100.0%) condition: 60.2/60.0 Wh (100.3%)
CPU:
Info: 14-core (6-mt/8-st) model: 13th Gen Intel Core i7-13650HX bits: 64
type: MST AMCP cache: L2: 11.5 MiB
Speed (MHz): avg: 1000 min/max: 800/4700:4900:3600 cores: 1: 1000 2: 1000
3: 1000 4: 1000 5: 1000 6: 1000 7: 1000 8: 1000 9: 1000 10: 1000 11: 1000
12: 1000 13: 1000 14: 1000 15: 1000 16: 1000 17: 1000 18: 1000 19: 1000
20: 1000
Graphics:
Device-1: NVIDIA AD107M [GeForce RTX 4060 Max-Q / Mobile] driver: nvidia
v: 575.64.05
Device-2: Chicony Integrated Camera driver: uvcvideo type: USB
Display: wayland server: X.org v: 1.21.1.18 with: Xwayland v: 24.1.8
compositor: kwin_wayland driver: X: loaded: nvidia
unloaded: modesetting,nouveau gpu: nvidia,nvidia-nvswitch resolution:
1: 1920x1080~144Hz
API: EGL v: 1.5 drivers: nvidia,swrast
platforms: gbm,wayland,x11,surfaceless,device
API: OpenGL v: 4.6.0 compat-v: 4.5 vendor: nvidia mesa v: 575.64.05
renderer: NVIDIA GeForce RTX 4060 Laptop GPU/PCIe/SSE2
API: Vulkan v: 1.4.321 drivers: nvidia surfaces: N/A
Info: Tools: api: clinfo, eglinfo, glxinfo, vulkaninfo
de: kscreen-console,kscreen-doctor gpu: nvidia-settings,nvidia-smi
wl: wayland-info x11: xdpyinfo, xprop, xrandr
Audio:
Device-1: Intel Raptor Lake High Definition Audio driver: snd_hda_intel
Device-2: NVIDIA AD107 High Definition Audio driver: snd_hda_intel
Device-3: SteelSeries ApS Arctis Nova 3P Wireless
driver: hid-generic,snd-usb-audio,usbhid type: USB
API: ALSA v: k6.15.8-arch1-2 status: kernel-api
Server-1: PipeWire v: 1.4.7 status: active
Network:
Device-1: Realtek RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet
driver: r8169
IF: enp8s0 state: up speed: 1000 Mbps duplex: full mac: <filter>
Device-2: Realtek RTL8852BE PCIe 802.11ax Wireless Network
driver: rtw89_8852be
IF: wlp9s0 state: up mac: <filter>
IF-ID-1: wg0 state: unknown speed: N/A duplex: N/A mac: N/A
Bluetooth:
Device-1: Realtek Bluetooth Radio driver: btusb type: USB
Report: rfkill ID: hci0 rfk-id: 4 state: down bt-service: disabled
rfk-block: hardware: no software: no address: see --recommends
Drives:
Local Storage: total: 1.38 TiB used: 260.87 GiB (18.5%)
ID-1: /dev/nvme0n1 vendor: Micron model: MTFDKCD512QFM-1BD1AABLA
size: 476.94 GiB
ID-2: /dev/nvme1n1 vendor: Crucial model: CT1000P3SSD8 size: 931.51 GiB
Partition:
ID-1: / size: 443.92 GiB used: 124.41 GiB (28.0%) fs: btrfs dev: /dev/dm-5
ID-2: /boot size: 1022 MiB used: 235.4 MiB (23.0%) fs: vfat
dev: /dev/nvme0n1p1
Swap:
ID-1: swap-1 type: partition size: 32 GiB used: 0 KiB (0.0%) dev: /dev/dm-4
Sensors:
System Temperatures: cpu: 36.8 C mobo: N/A
Fan Speeds (rpm): N/A
Info:
Memory: total: 24 GiB note: est. available: 23.24 GiB used: 3.71 GiB (16.0%)
Processes: 461 Uptime: 18m Shell: Zsh inxi: 3.3.38
Last edited by WorMzy (2025-08-07 08:20:03)
Offline
I've had a similar issue on Plasma wayland. The problem was, Plasma somehow added an additional Desktop I had to delete.
You can check this by right clicking a Desktop Panel -> Show Panel configuration -> Manage Desktops and Panels. There was an additional Desktop here that I needed to remove.
Offline
I just have the two desktop entries for both monitors, and the built-in screen works fine until I suspend the system.
Offline
Have you done this? https://wiki.archlinux.org/title/NVIDIA … er_suspend
Offline
Yeah, I did. Both `PreserveVideoMemoryAllocations` and `TemporaryFilePath` are correctly set according to `cat /proc/driver/nvidia/params | sort`.
I think it is specific to my built-in display since for the external display everything works.
Offline
Mhm unfortunately this is where my expertise ends. Maybe sb. else knows what to do.
Offline
3. There is SSH access to the machine even though the screen remains black (I ran `kwin_wayland --replace` but that didn't solve it).
1. What does "kscreen-doctor" report before, after the failure?
(You might have to import WAYLAND_DISPLAY or DBUS_SESSION_BUS_ADDRESS from the kwin_wayland process)
2. Before and after also dump
for OUT in /sys/class/drm/card*; do echo $OUT; edid-decode $OUT/edid; echo "================="; done
You'll need https://archlinux.org/packages/extra/x86_64/v4l-utils/
3. Is this a problem w/ plasma on X11 ?
Offline
I'm using Wayland. X11 is not installed.
I used tmux and attached to the same session to make sure env vars stay the same before and after suspend.
Output of `kscreen-doctor -o`
Output: 1 eDP-1 a1b0be06-4c90-4b9d-8987-72eec207a2f8
enabled
connected
priority 1
Panel
replication source:0
Modes: 1:1920x1080@60! 2:1920x1080@144*
Geometry: 0,0 1670x940
Scale: 1.15
Rotation: 1
Overscan: 0
Vrr: Never
RgbRange: unknown
HDR: incapable
Wide Color Gamut: incapable
ICC profile: none
Color profile source: sRGB
Color power preference: prefer efficiency and performance
Brightness control: supported, set to 100% and dimming to 100%
Color resolution: unknown
Allow EDR: always
Output of `kscreen-doctor -i`
Environment:
* KSCREEN_BACKEND : [not set]
* KSCREEN_BACKEND_INPROCESS : [not set]
* KSCREEN_LOGGING : [not set]
Logging to : [logging disabled]
Preferred KScreen backend : KSC_KWayland.so
Available KScreen backends:
* KSC_Fake.so: /usr/lib/qt6/plugins/kf6/kscreen/KSC_Fake.so
* KSC_KWayland.so: /usr/lib/qt6/plugins/kf6/kscreen/KSC_KWayland.so
* KSC_QScreen.so: /usr/lib/qt6/plugins/kf6/kscreen/KSC_QScreen.so
* KSC_XRandR.so: /usr/lib/qt6/plugins/kf6/kscreen/KSC_XRandR.so
Output of `kscreen-doctor -d show`
dpms mode for screen eDP-1: on
Output of `for OUT in /sys/class/drm/card*; do echo $OUT; edid-decode $OUT/edid; echo "================="; done`
/sys/class/drm/card1
=================
/sys/class/drm/card1-DP-1
EDID of '/sys/class/drm/card1-DP-1/edid' was empty.
=================
/sys/class/drm/card1-eDP-1
edid-decode (hex):
00 ff ff ff ff ff ff 00 09 e5 29 0c 67 00 00 00
11 21 01 04 a5 22 13 78 07 94 51 a6 54 4e a0 27
0e 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 74 38 80 a0 70 38 4e 40 30 20
35 00 58 c2 10 00 00 1a 00 00 00 fd 00 30 90 a7
a7 23 01 0a 20 20 20 20 20 20 00 00 00 fe 00 42
4f 45 20 4e 4a 0a 20 20 20 20 20 20 00 00 00 fe
00 4e 45 31 35 36 46 48 4d 2d 4e 58 39 0a 01 fd
70 20 79 02 00 22 00 14 e1 4a 05 84 7f 07 9f 00
2f 00 1f 00 37 04 4d 00 02 00 04 00 2b 00 0c 27
00 3c 8f 00 00 27 00 30 3b 00 00 25 00 09 e1 4a
05 e1 4a 05 30 90 80 81 00 13 72 1a 00 00 03 01
30 90 00 00 53 51 53 51 90 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 35 90
----------------
Block 0, Base EDID:
EDID Structure Version & Revision: 1.4
Vendor & Product Identification:
Manufacturer: BOE
Model: 3113
Serial Number: 103 (0x00000067)
Made in: week 17 of 2023
Basic Display Parameters & Features:
Digital display
Bits per primary color channel: 8
DisplayPort interface
Maximum image size: 34 cm x 19 cm
Gamma: 2.20
Supported color formats: RGB 4:4:4
Default (sRGB) color space is primary color space
First detailed timing includes the native pixel format and preferred refresh rate
Display supports continuous frequencies
Color Characteristics:
Red : 0.6503, 0.3291
Green: 0.3056, 0.6250
Blue : 0.1533, 0.0556
White: 0.3125, 0.3291
Established Timings I & II: none
Standard Timings: none
Detailed Timing Descriptors:
DTD 1: 1920x1080 60.000664 Hz 16:9 69.481 kHz 144.520000 MHz (344 mm x 194 mm)
Hfront 48 Hsync 32 Hback 80 Hpol P
Vfront 3 Vsync 5 Vback 70 Vpol N
Display Range Limits:
Monitor ranges (Range Limits Only): 48-144 Hz V, 167-167 kHz H, max dotclock 350 MHz
Alphanumeric Data String: 'BOE NJ'
Alphanumeric Data String: 'NE156FHM-NX9'
Extension blocks: 1
Checksum: 0xfd
----------------
Block 1, DisplayID Extension Block:
Version: 2.0
Extension Count: 0
Display Product Primary Use Case: None of the listed primary use cases; generic display
Video Timing Modes Type 7 - Detailed Timings Data Block:
DTD: 1920x1080 144.002425 Hz 16:9 166.755 kHz 346.850000 MHz (aspect 16:9, no 3D stereo, preferred)
Hfront 48 Hsync 32 Hback 80 Hpol N
Vfront 3 Vsync 5 Vback 70 Vpol N
Adaptive Sync Data Block:
Descriptor #1:
Native Panel Range
Fixed Average V-Total and Adaptive V-Total
Supports Seamless Transition
'Max Single Frame Duration Increase' field value without jitter impact
'Max Single Frame Duration Decrease' field value without jitter impact
Max Duration Increase: 0.00 ms
Max Duration Decrease: 0.00 ms
Min Refresh Rate: 60 Hz
Max Refresh Rate: 144 Hz
Descriptor #2:
Native Panel Range
Fixed Average V-Total and Adaptive V-Total
Supports Seamless Transition
'Max Single Frame Duration Increase' field value without jitter impact
'Max Single Frame Duration Decrease' field value without jitter impact
Max Duration Increase: 0.00 ms
Max Duration Decrease: 0.00 ms
Min Refresh Rate: 48 Hz
Max Refresh Rate: 60 Hz
Dynamic Video Timing Range Limits Data Block:
Minimum Pixel Clock: 346850 kHz
Maximum Pixel Clock: 346850 kHz
Minimum Vertical Refresh Rate: 48 Hz
Maximum Vertical Refresh Rate: 144 Hz
Seamless Dynamic Video Timing Support: Yes
CTA-861 DisplayID Data Block:
Vendor-Specific Data Block (AMD), OUI 00-00-1A:
Version: 3
Feature Caps: 0x01
Minimum Refresh Rate: 48 Hz
Maximum Refresh Rate: 144 Hz
Flags 1.x: 0x00
Flags 2.x: 0x00
Maximum luminance: 83 (301.833 cd/m^2)
Minimum luminance: 81 (0.305 cd/m^2)
Unknown: 0x53 0x51
Checksum: 0x35
Checksum: 0x90
=================
/sys/class/drm/card1-HDMI-A-1
EDID of '/sys/class/drm/card1-HDMI-A-1/edid' was empty.
=================
Output of `kscreen-doctor -o`
Output: 1 eDP-1 a1b0be06-4c90-4b9d-8987-72eec207a2f8
enabled
connected
priority 1
Panel
replication source:0
Modes: 1:1920x1080@144! 2:640x480@60*
Geometry: 0,0 557x418
Scale: 1.15
Rotation: 1
Overscan: 0
Vrr: Never
RgbRange: unknown
HDR: incapable
Wide Color Gamut: incapable
ICC profile: none
Color profile source: sRGB
Color power preference: prefer efficiency and performance
Brightness control: supported, set to 100% and dimming to 100%
Color resolution: unknown
Allow EDR: always
Output of `kscreen-doctor -i`
Environment:
* KSCREEN_BACKEND : [not set]
* KSCREEN_BACKEND_INPROCESS : [not set]
* KSCREEN_LOGGING : [not set]
Logging to : [logging disabled]
Preferred KScreen backend : KSC_KWayland.so
Available KScreen backends:
* KSC_Fake.so: /usr/lib/qt6/plugins/kf6/kscreen/KSC_Fake.so
* KSC_KWayland.so: /usr/lib/qt6/plugins/kf6/kscreen/KSC_KWayland.so
* KSC_QScreen.so: /usr/lib/qt6/plugins/kf6/kscreen/KSC_QScreen.so
* KSC_XRandR.so: /usr/lib/qt6/plugins/kf6/kscreen/KSC_XRandR.so
Output of `kscreen-doctor -d show`
dpms mode for screen eDP-1: off
Output of `for OUT in /sys/class/drm/card*; do echo $OUT; edid-decode $OUT/edid; echo "================="; done`
/sys/class/drm/card1
=================
/sys/class/drm/card1-DP-1
EDID of '/sys/class/drm/card1-DP-1/edid' was empty.
=================
/sys/class/drm/card1-eDP-1
edid-decode (hex):
00 ff ff ff ff ff ff 00 3a c4 00 00 00 00 00 00
00 00 01 04 95 00 00 78 ee 91 a3 54 4c 99 26 0f
50 54 00 20 00 00 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 92
----------------
Block 0, Base EDID:
EDID Structure Version & Revision: 1.4
Vendor & Product Identification:
Manufacturer: NVD
Model: 0
Made in: 1990
Basic Display Parameters & Features:
Digital display
Bits per primary color channel: 6
DisplayPort interface
Image size is variable
Gamma: 2.20
DPMS levels: Standby Suspend Off
Supported color formats: RGB 4:4:4, YCrCb 4:4:4
Default (sRGB) color space is primary color space
First detailed timing includes the native pixel format and preferred refresh rate
Color Characteristics:
Red : 0.3300, 0.2978
Green: 0.5976, 0.1494
Blue : 0.0605, 0.3144
White: 0.3281, 0.0029
Established Timings I & II:
DMT 0x04: 640x480 59.940476 Hz 4:3 31.469 kHz 25.175000 MHz
Standard Timings: none
Detailed Timing Descriptors:
Empty Descriptor
Empty Descriptor
Empty Descriptor
Empty Descriptor
Checksum: 0x92
=================
/sys/class/drm/card1-HDMI-A-1
EDID of '/sys/class/drm/card1-HDMI-A-1/edid' was empty.
=================
Doing a diff on the EDID info before and after shows that the display is detected differently after the suspend. I guess the display is not properly detected and the bad driver gets loaded.
Edit: Also dpms is on before and off after.
Last edited by susd (2025-08-05 07:40:29)
Offline
- Manufacturer: BOE
+ Manufacturer: NVD
The panel isn't detected at all, NVD is a dummy.
==> Side-step the panel and inject an edid from a file:
https://wiki.archlinux.org/title/Kernel … s_and_EDID
Because of the EDID situation that's probably moot, but…
-----
Off topic, ftr and as general comment because I'm under the impression that this keeps creeping up (it's not only you/this thread) and the inherent wayland fragmentation will probably only ever make this worse:
I'm using Wayland. X11 is not installed.
is not a reasonable answer to
Is this a problem w/ plasma on X11 ?
The point was to check whether the display server is relevant, the implication then "you know how to install stuff w/ pacman, do you?"
You were asked to run a cross-check, not to change your preferences or opinions or confessions.
Don't turn your display servers into god damn religious wars and cultish purity tests.
This kind of nonsense has no business in technology or science or politics or any other place that is not sportsball™, because that is exactly why sportsball™ was invented.
Offline
I tried the Plasma X11 session, but it still turns to the NVD dummy after a suspend. The problem persists.
Next I tried the `drm.edid_firmware` option, and it does have an effect.
The screen is still black, but at least the EDID information is now correct when doing `cat /sys/class/drm/card1-eDP-1/edid | edid-decode`. The NVD dummy is no more.
Sanity check: `cat /proc/cmdline` does contain `drm.edid_firmware=eDP-1:edid/builtin-display.bin`
Don't turn your display servers into god damn religious wars and cultish purity tests.
This kind of nonsense has no business in technology or science or politics or any other place that is not sportsball™, because that is exactly why sportsball™ was invented.
I agree. I just interpreted your question as "Does your problem happen on Plasma X11?" and I said no because I was not running an X11 session (you can't have an issue on something that is not running).
I probably should've understood that you wanted me to test it. My bad
Offline
It's not only the EDID read, the output doesn't power back on or completely fumbles the handshake.
Does it help to switch the TTY forth and back (ctrl+alt+f3)?
Though iff kwin_wayland --replace actually restarted the displaymanager I'd almost expect that to be part of it.
Does merely entering DPMS also cause loss of the panel? ("xset dpms force off" on X11, idk at hand whether and how kwin_wayland allows you to trigger that)
Do you run into the same problem when suspending the system from the multi-user.target?
Does it help to add "nvidia_drm.modeset=1 nvidia_drm.fbdev=0" to the https://wiki.archlinux.org/title/Kernel_parameters (and I mean there, not some modprobe.conf)
Offline
Does it help to switch the TTY forth and back (ctrl+alt+f3)?
The screen remains unpowered when I try this.
Does merely entering DPMS also cause loss of the panel?
No, it doesn't cause the issue.
I used `kscreen-doctor -d off` then `kscreen-doctor -d on` and the screen turned off then on, so all is well. (According to `kscreen-doctor --help` the option `-d` is for "Display power management (wayland only)")
Do you run into the same problem when suspending the system from the multi-user.target?
Unfortunately, yes. The screen remained black, so I had to blind-type `poweroff`.
Does it help to add "nvidia_drm.modeset=1 nvidia_drm.fbdev=0" to the https://wiki.archlinux.org/title/Kernel_parameters (and I mean there, not some modprobe.conf)
It doesn't help. The issue persists (sanity-checked `/proc/cmdline` and the params were there).
Offline
I have enabled Discrete Graphics from BIOS to make sure that my RTX 4060 is the only used GPU.
The panel is probably wired to the IGP and the firmware soft-rewires it to the nvidia GPU - I assume this isn't a problem in hybrid or intel-only mode?
Are there any firmware (BIOS/UEFI) updates available for the system?
Offline
Are there any firmware (BIOS/UEFI) updates available for the system?
Yeah, one from 05 Aug 2025 (but the issue is solved so I didn't upgrade).
I assume this isn't a problem in hybrid or intel-only mode?
You are right. In hybrid/intel-only mode this is not an issue.
The problem is solved. I enabled the hybrid mode from BIOS, installed the drivers for intel graphics and then used
sudo envycontrol -s nvidia --dm sddm
This makes the dGPU be used exclusively Edit: It doesn't make the dGPU be used exclusively, at least on my system.
The panel is probably wired to the IGP and the firmware soft-rewires it to the nvidia GPU
Speculation (based on the quote above): I guess this hybrid-mode solution works because the dGPU still needs to go through the iGPU to reach the built-in display.
Thanks for sticking with my issue these last couple of days!
Last edited by susd (2025-08-07 07:17:28)
Offline
This makes the dGPU be used exclusively.
Probbly not, the IGP will be used as VGA hub for reverse prime (matching your speculation)
If you don't want to run a regular prime setup, that's not quite ideal, you might want to have a look at the firmware update.
Please always remember to mark resolved threads by editing your initial posts subject - so others will know that there's no task left, but maybe a solution to find.
Thanks.
Offline