トップ «前の日記(2011年05月24日) 最新 次の日記(2011年05月31日)» 編集
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|10|12|
2009|02|03|06|07|10|11|12|
2010|01|02|03|04|07|09|10|11|12|
2011|01|03|04|05|06|07|08|10|
2012|01|06|08|09|10|12|
2013|01|02|03|04|07|09|11|12|
2014|01|03|04|05|06|09|
2015|04|
2016|01|08|
ここは旧えびめもです。えびめも2に移行します(2016/12/1)

2011年05月30日

USBポートの電源を制御する_その1

gniibe先生が面白いことをやっていました。USBハブはポート毎に電源をON/OFFする機能を持っている製品があります(持っていないものもあります)。私の手持ち2台で確認したところ、バスパワー/セルフパワー共に電源制御機能を持っていました。
準備 (debian lenny)
 # apt-get install usbutils libusb-dev
 # lsusb -v
略して表示
 Bus 007 Device 011: ID 0409:0059 NEC Corp. HighSpeed Hub
    Per-port power switching          ← 電源制御あり
    Per-port overcurrent protection
    TT think time 16 FS bits
    Port indicators
  Hub Port Status:
    Port 1: 0000.0100 power
    Port 2: 0000.0100 power
    Port 3: 0000.0100 power
    Port 4: 0000.0503 highspeed power enable connect
 
 Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
 No power switching (usb 1.0)  ← 電源制御機能なし
ということで Bus 007 Device 011 のハブは Per-port power switching と Per-port overcurrent protection が使えそうです。

USBポートの電源を制御する_その2

http://www.gniibe.org/oitoite/ac-power-control-by-USB-hub/
gniibe先生のところから hub-ctrl.c を頂いてきます。GPLということなのでここにも載せておきます。
hub-ctl.c
 $ gcc -O2 -lusb hub-ctl.c -o hub-ctl
 $ su  (rootユーザで)
 # ./hub-ctl -b 7 -d 11    -P 4   -p 1      # 電源ON
 # ./hub-ctl -b 7 -d 11    -P 4   -p 0      # 電源OFF
            バス  デバイス ポート
先ほど Bus 007 Device 011 , Port 1-4 を確認したので -b 7 -d 11 となるようです。

USBポートの電源を制御する_その3

CAT724なら root-hub (2ポート)に電源制御回路が付いています。
# lsusb -v
Bus 002 Device 001: ID 1d6b:0002
Hub Descriptor:
  bLength               9
  bDescriptorType      41
  nNbrPorts             1
  wHubCharacteristic 0x0011
    Per-port power switching           ← 電源制御あり
同じく hub-ctl.c で5VのON/OFFがコントロール出来ました。