I've written the upower utility allows you to selectively suspend usb 
ports.  It acts similar to the Windows "Stop Removable Device" 
process.  It has only been tested on 7.0-RELEASE.

WARNING: This program may eat your lunch and kick your dog.  You've 
been warned.

Download and compile.

fetch http://am-productions.biz/docs/upower.c
gcc -o upower upower.c

You will need to be root or have rw access to the uhub devices. 
eg. /dev/usbX

Use "usbdevs -v" to find the port/device to suspend.
# usbdevs -v
Controller /dev/usb0:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), 
Intel(0x0000), rev 1.00
 port 1 powered
 port 2 powered
Controller /dev/usb1:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), 
Intel(0x0000), rev 1.00
 port 1 powered
 port 2 addr 2: low speed, power 100 mA, config 1, product 0x0009
(0x0009), vendor 0x045e(0x045e), rev 1.05
Controller /dev/usb2:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), 
Intel(0x0000), rev 1.00
 port 1 powered
 port 2 addr 2: full speed, power 100 mA, config 1, Fingerprint 
Sensor(0x2580), vendor 0x08ff(0x08ff), rev 6.23
Controller /dev/usb3:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), 
Intel(0x0000), rev 1.00
 port 1 powered
 port 2 powered
Controller /dev/usb4:
addr 1: high speed, self powered, config 1, EHCI root hub(0x0000), 
Intel(0x0000), rev 1.00
 port 1 powered
 port 2 powered
 port 3 addr 2: high speed, self powered, config 1, product 
0x005a(0x005a), vendor 0x0409(0x0409), rev 1.00
  port 1 powered
  port 2 powered
  port 3 powered
  port 4 powered
 port 4 powered
Controller /dev/usb5:
addr 1: high speed, self powered, config 1, EHCI root hub(0x0000), 
Intel(0x0000), rev 1.00
 port 1 powered
 port 2 powered
 port 3 powered
 port 4 addr 2: high speed, power 320 mA, config 1, Sirius USB2.0 
Camera(0x3343), Vimicro Corp.(0x0ac8), rev 1.00


Since my built-in USB camera draws power when not in use, I'll suspend 
it to save battery time.

# ./upower /dev/usb5 4 suspend

# usbdevs -v
Controller /dev/usb0:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), 
Intel(0x0000), rev 1.00
 port 1 powered
 port 2 powered
Controller /dev/usb1:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), 
Intel(0x0000), rev 1.00
 port 1 powered
 port 2 addr 2: low speed, power 100 mA, config 1, product 0x0009
(0x0009), vendor 0x045e(0x045e), rev 1.05
Controller /dev/usb2:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), 
Intel(0x0000), rev 1.00
 port 1 powered
 port 2 addr 2: full speed, power 100 mA, config 1, Fingerprint 
Sensor(0x2580), vendor 0x08ff(0x08ff), rev 6.23
Controller /dev/usb3:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), 
Intel(0x0000), rev 1.00
 port 1 powered
 port 2 powered
Controller /dev/usb4:
addr 1: high speed, self powered, config 1, EHCI root hub(0x0000), 
Intel(0x0000), rev 1.00
 port 1 powered
 port 2 powered
 port 3 addr 2: high speed, self powered, config 1, product 
0x005a(0x005a), vendor 0x0409(0x0409), rev 1.00
  port 1 powered
  port 2 powered
  port 3 powered
  port 4 powered
 port 4 powered
Controller /dev/usb5:
addr 1: high speed, self powered, config 1, EHCI root hub(0x0000), 
Intel(0x0000), rev 1.00
 port 1 powered
 port 2 powered
 port 3 powered
 port 4 addr 2: high speed, power 320 mA, config 1, product 0x3343
(0x3343), vendor 0x0ac8(0x0ac8), rev 1.00

Thanks to Andriy Gapon for pointing me in the correct direction.
-- 
Anish Mistry
[EMAIL PROTECTED]
AM Productions http://am-productions.biz/

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to