this post was submitted on 25 Apr 2024
20 points (100.0% liked)

Linux

48180 readers
1082 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

MX Linux, Xfce 4.18

Closing the laptop lid suspends the system, opening it resumes it, but the screen is black. I'm guessing it's related to powerup because suspending through the logout menu and systemctl suspend both work as expected. When it's black, switching to a different tty works, as well as C-M-Backspace to logout.

Same results with both lightdm and sddm, when replacing suspend with hibernate, and I've tried a few solutions like disabling lock on sleep.

Seems like this issue has been around for years, but had a whole bunch of different causes since every other thread has a different solution.

XFSETTINGSD_DEBUG=1 xfsettingsd --replace --no-daemon > /tmp/xf.log 2>&1

ps -ef | grep -E 'screen|lock'

xfconf-query -c xfce4-power-manager -lv

dmesg, cleared it before trying to suspend

updates:

I'm not seeing a black screen, instead it turns on the display and then turns it off.

Additionally, I tried closing and opening the lid a few times, and it woke up correctly.

I tried it in i3wm with the xfce power manager to suspend after closing the lid. It woke up correctly 10 times in a row.

Solution: start an xrandr config and the monitor turns back on.

top 22 comments
sorted by: hot top controversial new old
[–] [email protected] 4 points 6 months ago (1 children)

Since that bug seems related to the X server somehow, I wonder if your monitor is showing black or actually off/standby (as in backlight off)?

If it's the backlight, maybe it's related to DPMS (monitor power management), and you can jolt it back to life with something like

xset dpms force on

after waking up. Or maybe disable DPMS completely and see if that changes anything.

It would also be interesting to know if this problem also happens outside of XFCE. If you just use (say) openbox (which I don't think does any power management or DPMS stuff by itself), does that work?

[–] [email protected] 2 points 6 months ago (1 children)

I wonder if your monitor is showing black or actually off/standby (as in backlight off)?

It actually starts, and then turns off. I didn't notice it before you drew my attention.

The command doesn't do anything, but I was able to type sudo reboot and it rebooted.

It would also be interesting to know if this problem also happens outside of XFCE

I can't install anything new, but I just tried starting power manager in i3 and using it to go to standby when i close the lid. It woke up 10 times in a row without an issue. So it's most likely a purely xfce issue that's been around for like a decade in different forms.

[–] [email protected] 3 points 6 months ago* (last edited 6 months ago) (1 children)

It actually starts, and then turns off. I didn’t notice it before you drew my attention.

That does sound like DPMS ("vesa display power management signaling") shenanigans though.

Maybe you can disable XFCE's display power management stuff completely? Systemd's logind (/etc/systemd/logind.conf) can do (and does by default I think) suspend on lid-close without any window manager involvement at all, works fine with i3 here. So disabling XFCE's stuff probably "only" messes with your monitor not going standby after a while, and you can maybe use xset or xscreensaver and set this by hand (after making sure it's actually properly disabled in XFCE, so XFCE doesn't override that stuff).

Found this about how to stop xfce4-power-manager and disable DPMS:

xfce4-power-manager -q
xset -dpms

Try doing that and see if lid close works afterwards.

[–] [email protected] 3 points 6 months ago* (last edited 6 months ago) (1 children)

I found a different solution: trigger an xrandr config. I'm leaving automating it for tomorrow.

The funniest thing is that I was trying to help out some other lemmy user fix their own xrandr issues, and accidentally came across a thread mentioning it when I went back to fixing my own.

Thanks for the help anyways

[–] [email protected] 2 points 6 months ago (1 children)

OK glad you found some workaround!

[–] [email protected] 2 points 6 months ago

I found it because you pointed out the monitor might be turning off. Changed search terms and found the recommendation in a Reddit thread. The full solution wasn't great though.

[–] [email protected] 4 points 6 months ago (1 children)

Few things to figure out that could be helpful:

  • What's your GPU?
  • What suspend modes does your laptop supposedly support, and then what modes does your kernel THINK it supports
  • What kernel are you in?
  • What does dmesg show right after you wake the machine back up?
[–] [email protected] 1 points 6 months ago* (last edited 6 months ago) (1 children)

What’s your GPU?

NVIDIA GeForce MX150 (Thinkpad t480)

What suspend modes does your laptop supposedly support, and then what modes does your kernel THINK it supports

Sleep mode, hibernation mode, wireless off (source). freeze mem disk (cat /sys/power/state)

I doubt it's related as systemctl suspend works as expected.

What kernel are you in?

6.1.0-20-amd64

What does dmesg show right after you wake the machine back up?

dmesg, cleared it before trying to suspend

I've tried resuming 50+ times while troubleshooting, and it only once did it correctly. Now I try to replicate the bug and it worked correctly 2/3 times.

[–] [email protected] 1 points 6 months ago* (last edited 6 months ago) (2 children)

I've tried resuming 50+ times while troubleshooting, and it only once did it correctly. Now I try to replicate the bug and it worked correctly 2/3 times

That's just the computers fucking with you. It's how it always happens 😉

Regarding the sleep modes, I was referring to the S* states. Run this:

dmesg | grep 'S3\|suspend'

[–] [email protected] 1 points 6 months ago* (last edited 6 months ago)

That’s just the computers fucking with you. It’s how it always happens 😉

Oh I know, just complaining

sudo dmesg | grep -E "S3|suspend"

[ 7225.917778] PM: suspend entry (deep)
[ 7226.596293] printk: Suspending console(s) (use no_console_suspend to debug)
[ 7230.132960] ACPI: PM: Preparing to enter system sleep state S3
[ 7230.178542] ACPI: PM: Waking up from system sleep state S3
[ 7233.500089] PM: suspend exit

cat /sys/power/mem_sleep gives me: s2idle [deep]

[–] [email protected] 1 points 6 months ago (1 children)

Tried systemctl suspend and then resume:

dmesg after a successful resume

sudo dmesg | grep -E "S3|suspend"

[ 9760.639020] PM: suspend entry (deep)
[ 9761.235526] printk: Suspending console(s) (use no_console_suspend to debug)
[ 9764.716421] ACPI: PM: Preparing to enter system sleep state S3
[ 9764.764150] ACPI: PM: Waking up from system sleep state S3
[ 9767.889922] PM: suspend exit
[–] [email protected] 1 points 6 months ago (1 children)

The only thing that looks odd in there is the default in libgl, but otherwise looks okay. So it's probably not a compatibility problem.

How is your swap sized compared to your system memory?

[–] [email protected] 1 points 6 months ago* (last edited 6 months ago)

I just tried starting the xfce power manager in i3 and using it to go to standby when i close the lid. It woke up 10 times in a row without an issue. It looks like it's a purely xfce issue.

Also, when it wakes up it turns on the display, but then it doesn't go black but instead turns it off. I was still able to reboot while it was off.

$ swapon -s
Filename				Type		Size		Used		Priority
/swap/swap                              file		38915068	0		-2
Memory: 2926MiB / 31859MiB
[–] [email protected] 2 points 6 months ago (1 children)

i suggest you try something with chvt or openvt for a workaround. like after resume chvt to tty1 and then back to whatever your GUI runs on.

[–] [email protected] 2 points 6 months ago (1 children)

Saw that recommended, but it doesn't work. It just goes back to black.

[–] [email protected] 2 points 6 months ago (1 children)

i wonder what happens if you send SIGSTOP to the Xserver before suspend, then SIGCONT after resume. I imagine it would be like a time jump and it doesn't notice it was suspended, but not sure at all.

[–] [email protected] 3 points 6 months ago (1 children)

I found a solution last night: execute an xrandr config. I'll update the post later when I automate it.

[–] [email protected] 2 points 6 months ago

😲 that's cool. I use xrandr a lot in scripts for playing games with small text in lower resolution. It makes sense.

[–] [email protected] 1 points 6 months ago (1 children)

Be aware that you are having problems with legacy software being completely based off unmaintained XOrg.

It might just be a driver problem, but if XOrg is the problem, thats not solvable soon.

[–] [email protected] 1 points 6 months ago

unmaintained XOrg

hmmmmmmm... It's just not introducing breaking changes all the time like wayland.

And I'd definitely not call xfce legacy as it's in active development, but its focus has always been on stability over introducing new features.

[–] [email protected] 1 points 6 months ago (1 children)

It is not likely to be XFCE specific.

Make sure you have properly configured swap space and its size is larger than RAM. Because this will be the easiest cause. Some people stated as much as twice the ram size.

There’s a wiki page on arch wiki trying to help with this issue. In short, prepare for a lot of work and good luck.

[–] [email protected] 1 points 6 months ago

It is not likely to be XFCE specific.

It seems to be, or it's related to my xfce+I3 setup. I tried starting the xfce power manager in i3 and it woke up correctly 10 times in a row. And executing an xrandr config turns the monitor back on.

AFAIK swap is only used for hibernation. Suspend keeps ram (and a single core/thread?) powered, so it's not needed.