Comment 31 for bug 427327

Revision history for this message
Jorge Juan (jjchico) wrote :

Hi,

I have advanced quite a lot on finding the origin of the bug. It seems to be a bug in the uvcvideo module. From my dmesg:

At boot time, webcam is detected correctly: a Bison NB Pro:
...
[ 8.975626] Linux video capture interface: v2.00
[ 9.008304] uvcvideo: Found UVC 1.00 device BisonCam, NB Pro (5986:0203)
[ 9.024768] input: BisonCam, NB Pro as /devices/pci0000:00/0000:00:1d.7/usb1/1-5/1-5:1.0/input/input8
[ 9.025136] usbcore: registered new interface driver uvcvideo
[ 9.025150] USB Video Class driver (v0.1.0)
...

At suspend time, PM informs some devices (bison cam) failed to suspend, and it wakes up inmediatly:
...
[ 231.266406] PM: Entering mem sleep
[ 231.266427] Suspending console(s) (use no_console_suspend to debug)
[ 231.284163] uvcvideo: Failed to set UVC commit control : -108 (exp. 26).
[ 231.284178] uvcvideo 1-5:1.1: resume error -5
[ 231.284201] pm_op(): usb_dev_suspend+0x0/0x10 returns -108
[ 231.284211] PM: Device 1-5 failed to suspend: error -108
[ 231.284219] PM: Some devices failed to suspend
[ 231.338519] uvcvideo: Failed to set UVC commit control : -108 (exp. 26).
[ 231.338533] uvcvideo 1-5:1.1: resume error -5
[ 231.456330] PM: resume devices took 0.172 seconds
[ 231.456350] PM: Finishing wakeup.
[ 231.456354] Restarting tasks ... done.
...

I can (de)activate the web cam pressing FN+F6. When the cam is not active it does not show in lsusb (like unplugging a USB cam). I have tried some combinations and this is what happens:

Scenario 1: Camera is not attached
  - lsusb does not shows the camera (lsusb_cam_off.log)
  - Suspend works
  - USB storage works (I can use my USB stick)
  - The web cam (with cheese) does not work, as expected.

Scenario 2: Camera is attached (lsusb_cam_on.log, dmesg_cam_on_uvcvideo_on.log)
  - lsusb does show the camera
  - uvcvideo is loaded at boot time
  - Suspend does not work (dmesg summary above)
  - USB storage does not work (connecting a USB stick does nothing - no trace in dmesg)

Scenario 3: Camera is attached but uvcvideo is configured not to load at boot time (dmesg_cam_on_uvcvideo_off.log)
  - lsusb does show the camera
  - uvcvideo is not loaded (blacklisted in /etc/modprobe.d/)
  - Suspend works
  - USB storage works

So the workaround by now is to create a file /etc/modprobe.d/local_options that includes a line:
blacklist uvcvideo so that the webcam is disabled.

I change from S1 to S2 by pressing the webcam button (FN+F6).
I change from S2 to S1 by pressing the button and rebooting.

Once in one scenario, the netbook will remember the state from boot to boot.

I attach lsusb and dmesg output in all the cases.