I've been hacking on an ancient #thinkpad r50e. Despite best efforts, I can't get the thing to wake up properly from suspend or hibernate.
Goes to bed as expected, and won't wake up.
Would love some help if you have any ideas.
Debian minimal install with i3wm. Acpi appears functional, acpi-support configured correctly by every guide I could find.
I'm stumped at this point, and not closing the lid without a plan. :)
According to https://www.linuxcompatible.org/compatdb/details/ibm_thinkpad_r50e_linux.html it used to work.
1. Make sure the BIOS/CMOS settings aren't bad. Since it used to work for people without effort, it points to the default settings being safe. Sometimes "better" settings are buggy, so use defaults. (*)
2. Possible issues due to changes in kernel configuration settings. You should be able to easily try changing the prebuilt kernel you're using. You might need to build your own, though.
(*) HDD settings should be preserved.
And when I say, "HDD settings should be preserved" there are BIOS/CMOS settings that change how the OS sees your hard disk and if things are misaligned the system won't boot. This isn't an issue if you're going to reinstall the system, but should not be considered if you want to preserve things.
Have you checked the logs after the suspend? Are you sure it is successfully suspending? It would be interesting if it never _quite_ completed the suspend operation, and then couldn't resume.
According to https://askubuntu.com/questions/279584/suspend-resume-failure sometimes WiFi or graphics cards can mess with suspend/resume. Since it is a laptop, I don't expect a graphics issue, but you might try shutting down the WiFi before you try suspending.
It appears it is suspending but the screen isn't turning back on during resume.
Immediate short-term work-around:
It's possible to change what the system does when you close the lid, so you can have it just not suspend. (This would be in a power management configuration.)
This may be an acceptable long-term solution if it is mostly used as a desktop. I know a lot of older laptops, in particular, where the battery life isn't good enough to reliably unplug for any meaningful length of time.
I'm also seeing reports that using Control-Alt-F1 to switch to text mode and Alt-F7 to switch back to X solves the issue for some folks.
Any idea how to do that below the GUI? I tried chmod -x'ing the lid.sh script in /etc/acpi/ and adjusting system and it didn't work.
There are a few things to do just before suspending and right after it, [...] It does the following:
* It switches to console one (prevents problems with after resume).
That sounds like your issue might be long-standing. Does it go away if you do Control-Alt-F1 before you close the lid?
I tried suspend from console initially, and the problem persisted.
Sounds like it was never fixed on this older model. It's mostly a learning toy, so if I can neuter the lid switch I may just try that
If neutering the lid switch is acceptable, screw looking for a software solution and check the CMOS/BIOS. You may be able to neuter it there.
I'll have a look at next opportunity. Thanks for the help!
You're welcome. The references to "Suspend2" in the old docs are for software that became TuxOnIce. There's a "hibernate" script, and it looks like the configuration is /etc/hibernate/hibernate.conf
Hopefully you can disable it in the BIOS, but if you can't, maybe tweaking that configuration will help?
I can't find the docs for TuxOnIce online. I've seen references for two different defunct websites.
I tried installing that. It hibernated, tried to recover from it and died on the way back up.
I found that last night and thought the same thing. Fortunately more recent vintage thinkpads behave better.
There's pieces which could include the solution to your problem there.
It mentions "xset dpms force off", but this means "xset dpms force on" on resume may bring the display to life. ...
The issue with the TuxOnIce/hibernate script and resuming might be the "ACPI S4 hardware signature mismatch" issue ...
The fact that there's all these references to 10+ year old versions of Linux doesn't exactly help, either. 2.4 was 2001. 2.6 was 2003.
A little additional poking has revealed two things:
1. There is no way to disable the lid switch in bios.
2. Thusfar, all attempts to make resume of any kind work leave me with a system that appears up and the backlight is on, but the screen won't give me back the console.
I'm appreciating how far things have come since the 'good old days'
You might need to hunt for the solution for your particular Debian apps, but https://askubuntu.com/questions/15520/how-can-i-tell-ubuntu-to-do-nothing-when-i-close-my-laptop-lid lists a number of potential starting points.
If you're using SystemD or a component thereof, you need to edit /etc/systemd/logind.conf
If you're using gnome-power-manager, you need to tweak that's settings.
If you're using UPower, you need to tweak /etc/UPower/UPower.conf
I saw that mismatch error when hibernate froze the system. Seems to be smart enough to simply recreate the file it needs
I also wonder if the "Fixing corrupted video on resume" section might include pieces you need. But the fact that it confirms /etc/systemd/logind.conf as being how to disable the lid switch should be good enough.
Ooooh. Disabling kms got the laptop to suspend to ram correctly from the command line, but the lid switch is clearly calling the wrong script. I think you've almost helped me crack it!
What about /etc/systemd/logind.conf as the way to disable the switch? Does that work?
A full fix would be best, but this will answer the question: Is the systemd logind configuration bypassed right now?
Right now we don't really know what's listening to the lid switch.
HandleLidSwitch in /etc/systems/logind.conf set to ignore disables suspend as intended. So question of the moment is how do I get the suspend directive it calls to call whichever mojo acpi -s calls which seems to be working, as opposed to whatever default which doesn't seem to want to wake up correctly.
Incidentally: Setting it to hibernate has laptop hibernating, but not succeeding in waking up correctly
Is that the mismatch error? Or is it something else?
Unsure. Disabling kms, which was mentioned there, got suspend working from the CLI but not via lid switch. Calling different commands I suspect, though not sure which one systemd uses.
Currently running acpitool -s as root suspends correctly, and wakes up with function key press as expected. Lid switch goes to sleep... Forever.
I suppose I'll dig into the manpage you sent later tonight. Damn I appreciate your help on this.
So, the acpi command is skipping all the logic described in the man page.
Any way to make systemd do same? :)
The man page lists a couple script locations that get processed. There are two possibilities:
1. One of the scripts fail on suspend
2. One of the scripts fail on resume
But the whole, "WTF is being run that is killing it" may be solved. (At least in a general sense, at least.)
Running systemd-sleep as root definitely replicates the broken behavior.
Part of me wonders if I could just replace it with a script that runs acpitool...
There's a good chance one of the scripts has a comment in it, "this breaks under <some condition>". And that's a condition true for your laptop.
Mastodon.ART — Your friendly creative home on the Fediverse! Interact with friends and discover new ones, all on a platform that is community-owned and ad-free. Admin: @Curator. Moderators: @EmergencyBattle, @ScribbleAddict, @TapiocaPearl, @Otherbuttons, @katwylder