On 1/10/07, Alan Stern <[EMAIL PROTECTED]> wrote:
> There is no way to prevent a USB device without a driver from being
> suspended.  Perhaps we need one.  On the other hand, USB devices _are_
> supposed to be able to suspend and resume with no ill effects -- it's part
> of the spec.
>
> I still would like to figure out exactly what goes wrong when the device
> gets resumed just before snd-usb-audio is bound to it.  One way to attack
> this is to rename snd-usb-audio.ko so that it can't be loaded
> automatically.  Then after the device is plugged in and suspended, you can
> insmod the driver by hand and see what happens.

This doesn't help but it is complicated because the PSC805 also
includes a USBHID component. I can't skip binding the HID without
losing my keyboard.

> If nothing else, the driver could try to reset the device.  You can try
> testing that approach by hand as well.  I posted a program to reset a USB
> device here:
>
> http://marc.theaimsgroup.com/?l=linux-usb-users&m=116827193506484&w=2
>
> You could run that program immediately prior to insmod-ing the driver (in
> a shell script or separated by a ';') -- as long as the gap between the
> two commands is less than 2 seconds the device won't get suspended again.

This works and recovers the device.

from boot...
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: new full speed USB device
using uhci_hcd and address 2
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: ep0 maxpacket = 8
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: skipped 8 descriptors after interface
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: skipped 2 descriptors after interface
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: skipped 1 descriptor after endpoint
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: skipped 2 descriptors after interface
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: skipped 1 descriptor after endpoint
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: skipped 1 descriptor after interface
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: default language 0x0409
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: new device strings: Mfr=1,
Product=2, SerialNumber=0
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: Product: Philips PSC805
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: Manufacturer: Philips Electronics
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: uevent
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: usb_probe_device
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: configuration #1 chosen from 1 choice
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: adding 2-1:1.0 (config #1,
interface 0)
Jan 10 11:53:18 jonsmirl kernel: usb 2-1:1.0: uevent
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: adding 2-1:1.1 (config #1,
interface 1)
Jan 10 11:53:18 jonsmirl kernel: usb 2-1:1.1: uevent
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: adding 2-1:1.2 (config #1,
interface 2)
Jan 10 11:53:18 jonsmirl kernel: usb 2-1:1.2: uevent
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: adding 2-1:1.3 (config #1,
interface 3)
Jan 10 11:53:18 jonsmirl kernel: usb 2-1:1.3: uevent
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: usb auto-suspend
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: uevent
Jan 10 11:53:18 jonsmirl kernel: usb 2-1:1.0: uevent
Jan 10 11:53:18 jonsmirl kernel: usb 2-1:1.1: uevent
Jan 10 11:53:18 jonsmirl kernel: usb 2-1:1.2: uevent
Jan 10 11:53:18 jonsmirl kernel: usb 2-1:1.3: uevent

hid binds
Jan 10 11:53:18 jonsmirl kernel: usbhid 2-1:1.3: usb_probe_interface
Jan 10 11:53:18 jonsmirl kernel: usbhid 2-1:1.3: usb_probe_interface - got id
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: usb auto-resume
Jan 10 11:53:18 jonsmirl kernel: usb 2-1: finish resume
this resume did not work

I reset the device, insmod snd-usb-audio and everything works
Jan 10 12:00:44 jonsmirl kernel: usbhid 2-1:1.3: suspend
Jan 10 12:00:44 jonsmirl kernel: usb 2-1: reset full speed USB device
using uhci_hcd and address 2
Jan 10 12:00:44 jonsmirl kernel: usb 2-1: ep0 maxpacket = 8
Jan 10 12:00:44 jonsmirl kernel: usbhid 2-1:1.3: resume status 0
Jan 10 12:00:44 jonsmirl kernel: snd-usb-audio 2-1:1.0: usb_probe_interface
Jan 10 12:00:44 jonsmirl kernel: snd-usb-audio 2-1:1.0:
usb_probe_interface - got id

I'll do another reboot and load the snd driver automatically. I bet
that I just need a reset to get things going.

I am also working on the zd1211rw driver. There have been a bunch of
reports about that driver not initializing at boot. The main developer
has now added a USB reset to the driver when it first comes up to fix
things. This may be a related problem.

-- 
Jon Smirl
[EMAIL PROTECTED]

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to