Hi, with "CONFIG_USB_SUSPEND=y", since commit:
8dfe4b14869fd185ca25ee88b02ada58a3005eaf usb-storage: implement autosuspend This patch (as930) implements autosuspend for usb-storage. It is adapted from a patch by Oliver Neukum. Autosuspend is allowed except during LUN scanning, resets, and command execution. my USB photo-camera gets automagically disconnected before I can do anything with it ;) Relevant dmesg (what I get by just attaching it): [ 70.722898] scsi 8:0:0:0: Direct-Access HP PHOTOSMART E317 A001 PQ: 0 ANSI: 0 CCS [ 70.727880] sd 8:0:0:0: [sdb] 488448 512-byte hardware sectors (250 MB) [ 70.730876] sd 8:0:0:0: [sdb] Write Protect is off [ 70.730879] sd 8:0:0:0: [sdb] Mode Sense: 00 46 00 00 [ 70.730882] sd 8:0:0:0: [sdb] Assuming drive cache: write through [ 70.742874] sd 8:0:0:0: [sdb] 488448 512-byte hardware sectors (250 MB) [ 70.745873] sd 8:0:0:0: [sdb] Write Protect is off [ 70.745876] sd 8:0:0:0: [sdb] Mode Sense: 00 46 00 00 [ 70.745878] sd 8:0:0:0: [sdb] Assuming drive cache: write through [ 70.745882] sdb: sdb1 [ 70.755192] sd 8:0:0:0: [sdb] Attached SCSI removable disk [ 70.755446] sd 8:0:0:0: Attached scsi generic sg3 type 0 [ 70.755657] usb-storage: device scan complete [ 73.071490] usb 6-2: usb auto-suspend [ 73.321445] hub 6-0:1.0: state 7 ports 2 chg 0000 evt 0004 [ 73.321453] uhci_hcd 0000:00:1d.1: port 2 portsc 108a,00 [ 73.321462] hub 6-0:1.0: port 2, status 0100, change 0003, 12 Mb/s [ 73.321465] usb 6-2: USB disconnect, address 2 [ 73.321467] usb 6-2: unregistering device The relevant differences of dmesg between pre and post "autosuspend" patch: @@ -1,4 +1,4 @@ - Linux version 2.6.22-gb0e2a705 ... + Linux version 2.6.22-g8dfe4b14 ... @@ -606,6 +606,12 @@ hub 1-0:1.0: hub_suspend usb usb1: bus auto-suspend ehci_hcd 0000:00:1a.7: suspend root hub + hub 4-0:1.0: hub_suspend + usb usb4: bus auto-suspend + usb usb4: suspend_rh + hub 5-0:1.0: hub_suspend + usb usb5: bus auto-suspend + usb usb5: suspend_rh hub 6-0:1.0: hub_suspend usb usb6: bus auto-suspend usb usb6: suspend_rh @@ -618,12 +624,6 @@ hub 3-0:1.0: hub_suspend usb usb3: bus auto-suspend usb usb3: suspend_rh - hub 4-0:1.0: hub_suspend - usb usb4: bus auto-suspend - usb usb4: suspend_rh - hub 5-0:1.0: hub_suspend - usb usb5: bus auto-suspend - usb usb5: suspend_rh usb usb3: uevent usb 3-0:1.0: uevent usb 3-0:1.0: uevent @@ -686,6 +686,7 @@ usb-storage 6-2:1.0: usb_probe_interface - got id scsi8 : SCSI emulation for USB Mass Storage devices drivers/usb/core/inode.c: creating file '002' + hub 6-0:1.0: state 7 ports 2 chg 0000 evt 0004 usb-storage: device found at 2 usb-storage: waiting for device to settle before scanning hub 2-0:1.0: hub_suspend @@ -704,3 +705,22 @@ sd 8:0:0:0: [sdb] Attached SCSI removable disk sd 8:0:0:0: Attached scsi generic sg3 type 0 usb-storage: device scan complete + usb 6-2: usb auto-suspend + hub 6-0:1.0: state 7 ports 2 chg 0000 evt 0004 + uhci_hcd 0000:00:1d.1: port 2 portsc 108a,00 + hub 6-0:1.0: port 2, status 0100, change 0003, 12 Mb/s + usb 6-2: USB disconnect, address 2 + usb 6-2: unregistering device + usb 6-2: usb_disable_device nuking all URBs + usb 6-2: unregistering interface 6-2:1.0 + usb_endpoint usbdev6.2_ep82: ep_device_release called for usbdev6.2_ep82 + usb_endpoint usbdev6.2_ep03: ep_device_release called for usbdev6.2_ep03 + usb 6-2:1.0: uevent + usb 6-2:1.0: uevent + usb_endpoint usbdev6.2_ep00: ep_device_release called for usbdev6.2_ep00 + usb 6-2: uevent + hub 6-0:1.0: debounce: port 2: total 100ms stable 100ms status 0x100 + usb usb6: suspend_rh (auto-stop) + hub 6-0:1.0: hub_suspend + usb usb6: bus auto-suspend + usb usb6: suspend_rh config for 2.6.22-gb0e2a705 attached -- Paolo Ornati Linux 2.6.23-rc3 on x86_64
config-usb.gz
Description: GNU Zip compressed data