Suspend doesn't works, it immediately resume

on my laptop CLEVO L141AU 14inch magnesium running LEAP 15.5 KDE Argon
https://en.opensuse.org/SDB:Argon_and_Krypton
with these KDE repositries
https://en.opensuse.org/SDB:KDE_repositories#KDE_Frameworks_5.2C_Plasma_5_and_Applications
when I click on the suspend icon it doesn’t works, it seems to works, the screen become black but after few seconds it appear again in the login screen
how can I have suspend working, which try can I do to help you to help me?

By “suspend” to you mean “hibernate”?

If you are using secure-boot, then that blocks hibernation.

Hi, no, hibernate works, I intend suspend to RAM, the sleep icon, and I think I’m not using secure-boot, how can I verify this?

Try:

mokutil --sb-state

That should tell you whether secure-boot is enabled.

However, I don’t think that affects sleeping (suspend to memory).

It might be a BIOS issue. You could check whether there is a BIOS update available.

NVIDIA card??? in past that was a often a sleep stopper. Desktop?? X or Wayland???

Hi, secure-boot disabled

pla@plaTW:~> mokutil --sb-state
SecureBoot disabled
pla@plaTW:~> 

I think X, no wayland, is there a way to verify?
hardware is:
CPU= intel core i5-1335U, Graphics=Intel Iris Xe Graphics

I had this same problem after rebuilding my desktop machine with all new innards. With the same operating system and software, the old system slept and woke up properly. The new system with the same operating system and software would wake immediately from sleep on Opensuse, but behave correctly on Windows.

The problem lies in the file /proc/acpi/wakeup, which on my system (when it works correctly) is:

Device S-state Status Sysfs node
GP12 S4 *enabled pci:0000:00:07.1
GP13 S4 *enabled pci:0000:00:08.1
XHC0 S4 *enabled pci:0000:07:00.3
GP30 S4 *disabled
GP31 S4 *disabled
PS2K S3 *disabled
PS2M S3 *disabled
GPP0 S4 *disabled pci:0000:00:01.1
GPP8 S4 *enabled pci:0000:00:03.1
PTXH S4 *enabled pci:0000:02:00.0
PT20 S4 *disabled
PT23 S4 *disabled
PT24 S4 *disabled
PT26 S4 *disabled
PT27 S4 *disabled
PT28 S4 *disabled
PT29 S4 *enabled pci:0000:03:09.0

There are a number of threads on this subject in this forum. They led me to a trial and error hunt for the device that was waking the system immediately. Here, if GPP0 is enabled, the system will not stay asleep. The kicker is, on every reboot, the GPP0 status is switched from disabled to enabled, and the system will not stay asleep. So, after every reboot, I have to remember to do:

howard@HP-oS154:~> su
Password: 
HP-oS154:/home/howard # echo GPP0 > /proc/acpi/wakeup
HP-oS154:/home/howard # exit
exit
howard@HP-oS154:~> exit

Some threads mention a script to do that on reboot, but I have not installed it.

There is a lengthy thread at Sometimes often sleep doesn't works, how to investigate? that has additional information.
HTH
Howard

Would be helpful to others to know what the device pci:0000:00:01.1 is.

If one found out which device is causing this, I can provide a service for this running at every reboot:

First, create a file e.g. wakeup-fix.service and paste the code below in there. Replace the RP05 with your device.

# Put the below in /etc/systemd/system/wakeup-fix.service
# 
# then do 
#  sudo systemctl daemon-reload 
#  sudo systemctl start wakeup-fix
#
# and check on it with 
#  systemctl status wakeup-fix
#
# then enable it so it starts after boot with 
#  sudo systemctl enable wakeup-fix

[Unit]
Description=Wakeup FIX

[Service]
ExecStart=/bin/bash -c "echo RP05 >> /proc/acpi/wakeup"

[Install]
WantedBy=multi-user.target

PS. I put the description in the file to remind me what to do.

cat > /etc/tmpfiles.d/fix-suspend.conf << \EOF
w! /proc/acpi/wakeup - - - - RP05
EOF

No service is needed.

howard@HP-oS154:~> sudo lspci
[sudo] password for root:
...
00:01.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
...
howard@HP-oS154:~> 

Nifty. I did

Rebooted and GPP0 shows disabled in wakeup. System does sleep and stay asleep.

Thank you very much,
Howward

lspci does not need root, but it is much more useful to use lspci -nn that shows the real PCI IDs in addition to just text representation.

Actually, I got:

howard@HP-oS155:~> lspci -nn
Absolute path to 'lspci' is '/sbin/lspci', so running it may require superuser privileges (eg. root).
howard@HP-oS155:~>

then

howard@HP-oS155:~> sudo lspci -nn
[sudo] password for root:

00:01.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge [1022:1483]

howard@HP-oS155:~>

hi and manythanks, as I see I should create a file e.g.
/etc/systemd/system/wakeup-fix.service
with this:

cat > /etc/tmpfiles.d/fix-suspend.conf << \EOF
w! /proc/acpi/wakeup - - - - RP05
EOF

inside
replacing RP05 with something in my /proc/acpi/wakeup list

pla@plaTW:~> cat /proc/acpi/wakeup
Device  S-state   Status   Sysfs node
PEG0      S3    *enabled   pci:0000:00:06.0
PEGP      S3    *disabled  pci:0000:01:00.0
PEG1      S3    *disabled
PEGP      S3    *disabled
PEG2      S3    *disabled
PEGP      S3    *disabled
XHCI      S3    *enabled   pci:0000:00:14.0
XDCI      S4    *disabled
HDAS      S4    *disabled  pci:0000:00:1f.3
CNVW      S4    *disabled  pci:0000:00:14.3
RP01      S4    *disabled
PXSX      S4    *disabled
RP02      S4    *disabled
PXSX      S4    *disabled
RP03      S4    *disabled
PXSX      S4    *disabled
RP04      S4    *disabled
PXSX      S4    *disabled
RP05      S4    *disabled
PXSX      S4    *disabled
RP06      S4    *enabled   pci:0000:00:1c.0
PXSX      S4    *disabled  pci:0000:2c:00.0
RP07      S4    *disabled
PXSX      S4    *disabled
RP08      S4    *disabled
PXSX      S4    *disabled
RP09      S4    *disabled
PXSX      S4    *disabled
RP10      S4    *disabled
PXSX      S4    *disabled
RP11      S4    *disabled
PXSX      S4    *disabled
RP12      S4    *disabled
PXSX      S4    *disabled
RP13      S4    *disabled
PXSX      S4    *disabled
RP14      S4    *disabled
PXSX      S4    *disabled
RP15      S4    *disabled
PXSX      S4    *disabled
RP16      S4    *disabled
PXSX      S4    *disabled
RP17      S4    *disabled
PXSX      S4    *disabled
RP18      S4    *disabled
PXSX      S4    *disabled
RP19      S4    *disabled
PXSX      S4    *disabled
RP20      S4    *disabled
PXSX      S4    *disabled
RP21      S4    *disabled
PXSX      S4    *disabled
RP22      S4    *disabled
PXSX      S4    *disabled
RP23      S4    *disabled
PXSX      S4    *disabled
RP24      S4    *disabled
PXSX      S4    *disabled
TXHC      S4    *enabled   pci:0000:00:0d.0
TDM0      S4    *enabled   pci:0000:00:0d.2
TDM1      S4    *disabled
TRP0      S4    *enabled   pci:0000:00:07.0
PXSX      S4    *disabled
TRP1      S4    *disabled
PXSX      S4    *disabled
TRP2      S4    *disabled
PXSX      S4    *disabled
TRP3      S4    *disabled
PXSX      S4    *disabled
AWAC      S4    *disabled
PWRB      S3    *enabled   platform:PNP0C0C:00
SLPB      S3    *enabled   platform:PNP0C0E:00
LID0      S3    *enabled   platform:PNP0C0D:00
pla@plaTW:~>

could you help me on what I have to put in the code if RP05 or other?
and execute it on every boot (I suppose it should be executed automatically becouse it is in /etc/systemd/system/)
is it correct?

if it is useful my lspci is this:

pla@plaTW:~> lspci -nn
Absolute path to 'lspci' is '/sbin/lspci', so running it may require superuser privileges (eg. root).
pla@plaTW:~> sudo lspci -nn
[sudo] password for root: 
00:00.0 Host bridge [0600]: Intel Corporation Device [8086:a708] (rev 01)
00:02.0 VGA compatible controller [0300]: Intel Corporation Raptor Lake-P [Iris Xe Graphics] [8086:a7a1] (rev 04)
00:04.0 Signal processing controller [1180]: Intel Corporation Device [8086:a71d] (rev 01)
00:06.0 PCI bridge [0604]: Intel Corporation Device [8086:a74d] (rev 01)
00:07.0 PCI bridge [0604]: Intel Corporation Device [8086:a76e] (rev 01)
00:08.0 System peripheral [0880]: Intel Corporation GNA Scoring Accelerator module [8086:a74f] (rev 01)
00:0a.0 Signal processing controller [1180]: Intel Corporation Device [8086:a77d] (rev 01)
00:0d.0 USB controller [0c03]: Intel Corporation Device [8086:a71e] (rev 01)
00:0d.2 USB controller [0c03]: Intel Corporation Device [8086:a73e] (rev 01)
00:14.0 USB controller [0c03]: Intel Corporation Alder Lake PCH USB 3.2 xHCI Host Controller [8086:51ed] (rev 01)
00:14.2 RAM memory [0500]: Intel Corporation Alder Lake PCH Shared SRAM [8086:51ef] (rev 01)
00:14.3 Network controller [0280]: Intel Corporation Device [8086:51f1] (rev 01)
00:15.0 Serial bus controller [0c80]: Intel Corporation Alder Lake PCH Serial IO I2C Controller #0 [8086:51e8] (rev 01)
00:15.1 Serial bus controller [0c80]: Intel Corporation Alder Lake PCH Serial IO I2C Controller #1 [8086:51e9] (rev 01)
00:16.0 Communication controller [0780]: Intel Corporation Alder Lake PCH HECI Controller [8086:51e0] (rev 01)
00:1c.0 PCI bridge [0604]: Intel Corporation Device [8086:51bd] (rev 01)
00:1f.0 ISA bridge [0601]: Intel Corporation Device [8086:519d] (rev 01)
00:1f.3 Audio device [0403]: Intel Corporation Device [8086:51ca] (rev 01)
00:1f.4 SMBus [0c05]: Intel Corporation Alder Lake PCH-P SMBus Host Controller [8086:51a3] (rev 01)
00:1f.5 Serial bus controller [0c80]: Intel Corporation Alder Lake-P PCH SPI Controller [8086:51a4] (rev 01)
01:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd NVMe SSD Controller PM9A1/PM9A3/980PRO [144d:a80a]
2c:00.0 SD Host controller [0805]: O2 Micro, Inc. SD/MMC Card Reader Controller [1217:8621] (rev 01)
pla@plaTW:~> 

No. It is your system, only you can test which device prevents suspend (if any).

As I recall, it was trial and error to find the troublesome device.
As root do:
echo XXXX > /proc/acpi/wakeup
one at a time changing XXXX for enabled devices, then test sleep.
As a guess, I’d start with TRP0. If there is no change, do echo XXXX > /proc/acpi/wakeup again for the same device to enable it before going to the next device.

ok, manythanks, I will do it.
to start what I should privilege:
the enabled ones?
the TRPxx ones?
how can I know which device is the for example “TRP0 S4 *enabled pci:0000:00:07.0”?

I tried with all the enabled

pla@plaTW:~> echo TRP0 > /proc/acpi/wakeup
bash: /proc/acpi/wakeup: Permission denied
pla@plaTW:~> su
Password: 
plaTW:/home/pla # echo TRP0 > /proc/acpi/wakeup
plaTW:/home/pla # echo TRP0 > /proc/acpi/wakeup
plaTW:/home/pla # echo PEG0 > /proc/acpi/wakeup
plaTW:/home/pla # echo PEG0 > /proc/acpi/wakeup
plaTW:/home/pla # echo XHCI > /proc/acpi/wakeup
plaTW:/home/pla # echo XHCI > /proc/acpi/wakeup
plaTW:/home/pla # echo RP06 > /proc/acpi/wakeup
plaTW:/home/pla # echo RP06 > /proc/acpi/wakeup
plaTW:/home/pla # echo TXHC > /proc/acpi/wakeup
plaTW:/home/pla # echo TXHC > /proc/acpi/wakeup
plaTW:/home/pla # echo TDM0 > /proc/acpi/wakeup
plaTW:/home/pla # echo TDM0 > /proc/acpi/wakeup
plaTW:/home/pla # echo TWRB > /proc/acpi/wakeup
plaTW:/home/pla # echo PWRB > /proc/acpi/wakeup
plaTW:/home/pla # echo PWRB > /proc/acpi/wakeup
plaTW:/home/pla # echo SLPB > /proc/acpi/wakeup
plaTW:/home/pla # echo SLPB > /proc/acpi/wakeup
plaTW:/home/pla # echo LID0 > /proc/acpi/wakeup
plaTW:/home/pla # echo LID0 > /proc/acpi/wakeup
plaTW:/home/pla # 

after each command I checked in:

pla@plaTW:~> cat /proc/acpi/wakeup

if the device resulted disabled
then tested sleep
then after reenabled I checked if the device resulted enabled
but sleep doesnt works.
have I to do something other ?
test also for disabled devices?