ThinkPad not powering off after initiating hibernate

Hello there,

after I finally got my hands on my new ThinkPad A485, I decided to install my usual Gentoo setup (i3wm etc.) on it. However, before that I did test how good the general Linux support is on the machine with Fedora 29 and I was amazed at how everything just seemed to work (including the issue I am about to describe). But since Fedora is not my cup of tea anymore, I need to make Gentoo work :wink:

Now the issue I have, where I hope someone might have experience in or have an idea what it might be, is powering off after initiating hibernate. When I activate hibernation through the kernel (under the hood itā€™s as simple as echo disk > /sys/power/state) the screen turns off and the system seems to turn off the hardware as well, but not actually power off. I can still hear the fan spin and the power LED in the power button is still on too.

In order to get the machine to turn off completely, I need to keep the power button pressed until the power LED goes out. When I turn the system on again, everything seems normal and the kernel is loading the hibernation image properly and the system is fully awake again.

Iā€™m not sure what is causing this and I found a few sources that suggest adding kernel parameters such as acpi=force or apm=power_off to GRUBā€™s CMDLINE_LINUX, but neither work after grub-mkconfig and a reboot.

Does anyone have an idea, what the issue might be?

Thanks! :slight_smile:

Hello,

Yesterday Iā€™ve got the same issue with my notebook Lenovo Thinkpad A475.
My OS is ARCH.
Did you find the solution?

Unfortunately, so far I havenā€™t been able to find a solution.

My workaround has just been to not use hibernate or to deal with the fact that I have to hold the power button down after a few seconds when I am sure itā€™s done. :man_shrugging:

You running openrc or systemd ?

on openrc you can use /usr/sbin/hibernate and let the system do its job.
same with systemctl hibernate on systemd.

did you compare drivers/modules with fedora (not a live image)?
maybe check your power management setting with in your kernel.
I assume the logs (like dmesg) or journalctl could help to narrow down the problem.

addition:
do you use consolekit ?
wheel group member ?
did you add rights with visudo ?
ā€¦

1 Like

Hello,

Thank You for the answer.
I have two notebooks A275 and A475.
A475 has both ARCH and corporate Win 7.
A275 Win 10 and ARCH also.

Today I played with both and Windows systems cannot do hibernate.
What I didā€¦ it was on both PCs BIOS upgrade.
I came to my colleague today with A275 and asked to do hibernate, it was working with corporate Win 7. Soā€¦ Iā€™ve checked the BIOS and it is 1.12.
On my 475 - 1.15, 275 - 1.16
I am trying to contact Lenovo support for information of downgrade BIOSā€¦

Im sorry to say it, but Lenovo dont support downgrading their BIOSā€™. Not officially anyway, but the BIOS itself will reject any lower versions being overwritten. As its business, I dont think youll be allowed to to flash a earlier bios as a later one either, youll know about this though.

AFAIK You can disable rollback prevention in the BIOS settings.

I was told about BIOS Flash Backā€¦ but weā€™ve live chat tried to find it, no success on A475/275. I could assume, if in such a case we have an issue, I suppose a buggy ACPI S4, this somehow must be solved?..
It is not working on Windows.

OpenRC (of course :wink: )

I donā€™t have that binary. I ran equery belongs hibernate and I didnā€™t get any hits. Where is that file from?

I honestly didnā€™t use Fedora long enough to say for sure that itā€™s working properly 100% of the time, but I will check what Fedora loads. Why do you think the Live-Image wouldnā€™t work?

Do you know of any resources about what kernel config I would need for it to work correctly? I searched for ā€œsuspendā€ and ā€œhibernateā€ and everything I saw that seemed to be potentially related, was enabled. :thinking:

I try to avoid both consolekit and policykit. :wink:

Yes.

I did ā€œwhitelistā€ the script I wrote that wraps the echo to /sys/power/state, or what exactly do you mean?

Anyways, I think that the problem is not really in userspace. I feel like the issue is probably how the kernel tries to turn off the hardware once it reached hibernation state, but I have no idea what the issue could be or how I could further debug this.
The logs donā€™t really say anything, they just seem to stop at one point. Maybe the issue is past the point where the sleep image is written, so any logs would be lost when rebooting the machine.

you right, thatā€™s my fault. but there is a script called /usr/sbin/pm-hibernate and it belongs to pm-utils.

I dont remember, but live images load all kind of modules. When you install genkernel the modules needed get activated not all, for example.

there is a hole section for power management in the kernel sources and there are some thinkpad drivers too.
zcat /proc/config.gz | grep -E "_HIBERNATION|_ACPI_AC|_THINKPAD_ACPI" .
Hope this will help.

1 Like

@Suleiman
Frankly, windows 7 and windows 10 cannot do hibernate on two notebooks A275 and A475 with recent BIOS.

Thanks for your reply!

Okay, so that script is a bit longer than others Iā€™ve found. It took a bit of tinkering before it worked with that command (following the Gentoo Wiki helped). The option that made it work was SLEEP_MODULE="kernel", which makes me think that they are just doing the same like what echoing to /sys did. Well, I will give it a try now and see if that script works long-term, because my previous solution only worked sometimes. :wink:

I only use genkernel for my initramfs, the rest is custom. What actually gets loaded will be determined by udev, but I donā€™t think itā€™s a problem with missing modules. I mean all resources I read so far, said you only need the two kernel settings (for suspend and hibernate), which I have both set.

I check my kernel config file (kernel 5.0.0) and this is what I got:

$ cat /usr/src/linux/.config | grep -E "HIBERNATION|ACPI_AC|THINKPAD"
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_HIBERNATION_HEADER=y
CONFIG_HIBERNATION=y
CONFIG_ACPI_AC=y
CONFIG_THINKPAD_ACPI=m
CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
# CONFIG_THINKPAD_ACPI_DEBUG is not set
# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
CONFIG_THINKPAD_ACPI_VIDEO=y
CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y

Looks like everything that could be useful is enabled.

I am starting to feel like this is really more a problem of the BIOS. Maybe I was just super lucky on Fedora, I mean after all, I only ran it for a few weeksā€¦ :thinking:

PS: I noticed that CONFIG_THINKPAD_ACPI was configured as a module. I canā€™t see why it would be a problem if itā€™s not built in, but since I use full disk encryption, I decided to have it built-in now. I mean I need to load it anyways, so why not? Maybe it fixes the issue, maybe it makes no difference. I will see soon enough.


That would be highly surprising to me, because hibernate is really not a very difficult thing. You simply store the whole memory to disk (which can be done by pretty much every setup) and then your turn off the machine (which should happen automatically, not manually like in my case).