Cannot suspend or hibernate Asus N61J Laptop

Recently got a new laptop for work, an Asus N61J, and I installed Ubuntu 9.10 on it. For whatever reason, the laptop will not suspend. I have no idea why, as it looks like it is going to, but ultimately dumps me back at the Unlock screen, as though I had just locked the computer, rather than suspending it.

However, it does kick me off my wireless network, so I think it *does* suspend, but only for a second or so.

Re: Cannot suspend or hibernate Asus N61J Laptop

Little more information: It also, for some bizarre reason, unmutes my sound when it 'resumes' from suspend, which is kind of odd. Doesn't seem to touch anything else, though I think it may have killed or failed to restart my Open VPN process once. Testing again, that doesn't seem to be happening, so maybe I was just imagining it.

Re: Cannot suspend or hibernate Asus N61J Laptop

Ok, it would seem to be a problem with one of the internal USB devices - I disabled all external ports in the BIOS, and it suspended! Yay!

However, I can't selectively disable them one by one in the BIOS - it's an all or nothing thing. So I need to tell Ubuntu to either not load the drivers for this particular USB device, or to completely disable it or something. Trouble is, I'm not sure how to go about doing that. Suggestions would be strongly appreciated.

What I would really like is some way to tell Linux that the USB Device(s) that are failing to suspend don't exist. I can't go into the case and unplug them, and I really, really would like to be able to suspend/hibernate this laptop.

As I said above, disabling all USB devices fixes this problem, but that in turn prevents me from using a USB keyboard and/or mouse, so that to is not an option.

Googling around, I can't seem to find any instructions for actually doing this, but it's possible I'm using the wrong search terms.

Re: Cannot suspend or hibernate Asus N61J Laptop

If anyone is reading this, this is just a quick reply because I'm hungry and tired, but it seems I was wrong (:O), and that usb3 may actually refer to USB 3.0.

Blacklisting the XHCI driver seems to support this theory, as things work differently when it tries to suspend or hibernate. Unfortunately, it still doesn't work but at least the behaviour is different!

Actually, Hibernate technically works. Very, very technically. Not something I'd use every day.

Hibernate spits out a bunch of messages when I select it, and starts eating the hard drive. Eventually it stops and does nothing else, leaving the text on the screen with a blinking underscore. If I manually power off and power back on, it does actually restore from the hibernate file! Only downside is my wireless doesn't like that (and I imagine there are a few other things that don't either), and it just seems like a really bad idea. But it does work.

The problem is about the ehci builtin controller and xhci module.
The better solutions is to disable all devices that uses ehci_hcd from Kernel, and to unload module xhci, before suspend/hibernate. For the last, you can use the nuage6's solution, but I prefer to use the "config.d", as I describe in section 2. Another solution is to complete disable usb support in BIOS, but I guess you don't need to do this.

1. Unbind ehci_hcd from kernel:

First, verify what devices you need to unload from kernel. Simple list the directory "/sys/bus/pci/drivers/ehci_hcd/" and pick all devices id that has names like "0000:00:1a.0". You may have more than one device listed.

Re: Cannot suspend or hibernate Asus N61J Laptop

Holy crap. That worked! Thanks a lot! That is going to make my life so, so much easier. Thus far everything works as expected after a resume, with the one (very minor!) annoyance that it unmutes my sound, and sets it to the lowest volume. Since I almost never use my work laptop for anything sound-related (not even IM notifications or anything), that's not actually a problem.

The only thing you missed in your instructions is that you need to make the "/etc/pm/sleep.d/20_custom-ehci_hcd" file executable (or, at least, I believe you do - the other files in that directory were), so it would be wise to execute the following command:

Code:

sudo chmod +x /etc/pm/sleep.d/20_custom-ehci_hcd

For others wondering, I just followed steps 1 & 2 in the above post, and everything worked.