You are not logged in.

#1 2010-05-28 17:57:35

Wraul
Member
Registered: 2010-03-11
Posts: 7

Wake from suspend using USB

Hi
Hopefully I post this at the correct place.

I have happily been waking my HTPC from suspend using my USB remote for a while now.
A while ago this stopped working. It appears like there isn't any power to the IR-reviever when the computer sleeps.
I can wake the computer using the power button on the computer or the PS2 keyboard if I enable it in /proc/acpi/wakeup

I have sort of located the problem.
It happens when I upgrade the kernel to kernel26-2.6.33.4-1-x86_64
If I downgrade to kernel26-2.6.33.3-2-x86_64 the problem goes away and everything works as before.

Should this be reported somewhere? If so, where and how?
Is there any chance for me to fix this or should I just hang on to kernel26-2.6.33.3-2-x86_64 and try agin when there is a new update?

Thanks in advance

Offline

#2 2010-05-29 15:07:05

xvello
Member
Registered: 2010-05-15
Posts: 81
Website

Re: Wake from suspend using USB

Hello

Here is an extract of the 2.6.33.4 changelog you can download at http://www.kernel.org/pub/linux/kernel/ … g-2.6.33.4 :

commit 2b454d9a5f0507c1bc3f01c06a2e6c464d2a2641
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Apr 30 12:09:23 2010 -0400

    USB: fix remote wakeup settings during system sleep
   
    This is a backport of commit 5f677f1d45b2bf08085bbba7394392dfa586fa8e.
    Some of the functionality had to be removed, but it should still fix
    the webcam problem.
   
    This patch (as1363b) changes the way USB remote wakeup is handled
    during system sleeps.  It won't be enabled unless an interface driver
    specifically needs it.  Also, it won't be enabled during the FREEZE or
    QUIESCE phases of hibernation, when the system doesn't respond to
    wakeup events anyway.
   
    This will fix problems people have reported with certain USB webcams
    that generate wakeup requests when they shouldn't, and as a result
    cause system suspends to fail.  See
   
        https://bugs.launchpad.net/ubuntu/+sour … bug/515109
   
   
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

You might wanna contact the author(s). Seems like there have to be a specific information to add to the driver in order to allow resume. They should know more.

Cheers

Offline

#3 2010-07-27 01:27:42

ould
Member
Registered: 2007-05-22
Posts: 124

Re: Wake from suspend using USB

There's a patch to fix this issue. I tested it on the latest kernel and it works and solves the issue. Here is the patch:

--- linux-2.6.34/drivers/usb/core/driver.c    2010-07-17 00:50:09.000000000 +0200
+++ linux-2.6.34/drivers/usb/core/driver.c.mce    2010-07-17 01:09:20.407000116 +0200
@@ -1266,9 +1266,7 @@
 
 static void choose_wakeup(struct usb_device *udev, pm_message_t msg)
 {
-    int            w, i;
-    struct usb_interface    *intf;
-
+    
     /* Remote wakeup is needed only when we actually go to sleep.
      * For things like FREEZE and QUIESCE, if the device is already
      * autosuspended then its current wakeup setting is okay.
@@ -1279,23 +1277,11 @@
         return;
     }
 
-    /* If remote wakeup is permitted, see whether any interface drivers
+    /* Allow remote wakeup if it is enabled, even if no interface drivers
      * actually want it.
      */
-    w = 0;
-    if (device_may_wakeup(&udev->dev) && udev->actconfig) {
-        for (i = 0; i < udev->actconfig->desc.bNumInterfaces; i++) {
-            intf = udev->actconfig->interface[i];
-            w |= intf->needs_remote_wakeup;
-        }
-    }
-
-    /* If the device is autosuspended with the wrong wakeup setting,
-     * autoresume now so the setting can be changed.
-     */
-    if (udev->state == USB_STATE_SUSPENDED && w != udev->do_remote_wakeup)
-        pm_runtime_resume(&udev->dev);
-    udev->do_remote_wakeup = w;
+    
+    udev->do_remote_wakeup = device_may_wakeup(&udev->dev);
 }
 
 /* The device lock is held by the PM core */

Hope this helps, thanks to the guys on the XBMC forums for getting this done!

Kevin

Offline

Board footer

Powered by FluxBB