Linux Tips

USB 2.0のデバイスを使うには

北浦訓行
2003/12/4

 USBのハードディスクを接続するにはでは、USB 1.1でハードディスクを接続する方法を紹介した。しかし、USB 1.1のデータ転送速度は遅い。

 そこで、外付けのUSB 2.0インターフェイスを追加して、Red Hat Linux、Turbolinux、Vine Linuxで使えるかどうかを試してみた。外付けのUSB 2.0インターフェイスは、ラトックシステムのREX-PCIU4(http://www.ratocsystems.com/products/subpage/pciu4.html)だ。

 REX-PCIU4は、外部4ポート、内部1ポートの計5ポートを持つ。正式なサポートOSにLinuxは含まれていないが、上記のWebサイトには「Linux Ready」というマークが表示されている。また、NECのUSB 2.0コントローラを搭載しているので、最近のディストリビューションには大抵含まれているehci-hcd.oというUSB 2.0ドライバが利用できる。接続テストに使用したのは、バッファロー(旧メルコ)のUSB 2.0/1.1対応外付けハードディスクDUB2-B160G(http://buffalo.melcoinc.co.jp/products/catalog/item/d/dub2-b/)だ。

 Red Hat Linux 9では、kudzuがREX-PCIU4を自動認識してくれた。サービスでkudzuを有効にしていない場合は、rootでログインしてkudzuコマンドを実行すればいい。そして、念のためシステムを再起動してDUB2-B160Gを接続し、lsusbコマンドで確認したところ、REX-PCIU4とDUB2-B160Gが共に認識された。

 Turbolinux 10 DesktopおよびTurbolinux 8 Workstationは、REX-PCIU4を挿してPCの電源をオンにするだけで自動的に認識した。DUB2-B160Gを接続してcatコマンドで/proc/bus/usb/devicesを確認すると、REX-PCIU4とDUB2-B160Gが共に認識されていた。

 Vine Linux 2.6r1は、Red Hat Linuxと同様にkudzuコマンドでREX-PCIU4が認識され、設定も行うことができた。ところが、catコマンドで/proc/bus/usb/devicesを確認するとREX-PCIU4が認識されていない。そこで、

# modprobe ehci-hcd

としてUSB 2.0用のドライバをインストールすると、REX-PCIU4とDUB2-B160Gが共に認識されるようになった。

 Red Hat Linux 9による/proc/bus/usb/devicesおよび/proc/scsi/scsiは以下のとおり。

$ cat /proc/bus/usb/devices
T:  Bus=05 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh= 5
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 2.04
S:  Manufacturer=Linux 2.4.20-18.9 ehci-hcd
S:  Product=NEC Corporation USB 2.0 ←NECのUSB 2.0コントローラを認識
S:  SerialNumber=00:0a.2
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=256ms
T:  Bus=05 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#=  2 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0411 ProdID=002a Rev= 1.01
S:  Manufacturer=MELCO INC.
S:  Product=MELCO INC. USB2-IDE Bridge ←バッファローのハードディスクを認識
S:  SerialNumber=0000000E42A7
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=  2mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=125us
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
(省略)
$ cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: USB-HS   Model: SAMSUNG SV1604N  Rev: 0.01 ←サムソンのハードディスクを認識
  Type:   Direct-Access                    ANSI SCSI revision: 02

 USBハードディスクを使用するには、マウントが必要だ。USBのハードディスクを接続するにはで説明したとおり、USBハードディスクはSCSIデバイスとして認識される。DUB2-B160GはFAT32でフォーマットされているため、-t vfatオプションを付けてmountコマンドを実行する。

# mkdir /mnt/usb
# mount -t vfat /dev/sda1 /mnt/usb

 ディスクの状態は、dfコマンドなどで確認できる。

# df
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/hda2              5882276   4614916    968552  83% /
/dev/hda1               101089     11272     84598  12% /boot
none                     62996         0     62996   0% /dev/shm
/dev/sda1            156250144        32 156250112   1% /mnt/usb

 USBのハードディスクを接続するにはと同様のベンチマークでは、

# hdparm -ft /dev/sda1

/dev/sda1:
 Timing buffered disk reads:  64 MB in 3.57 seconds = 17.91 MB/sec

という結果だった。USB 1.1のハードディスクでhdparmコマンドを実行したときは、

 Timing buffered disk reads:  64 MB in 82.09 seconds =798.34 kB/sec

だったことを考えると、USB 2.0ではかなり高速になっていてる。

 アンマウントは、以下のとおり、通常の手続きで可能だ。

# umount /mnt/usb

Linux Tips Index



 Linux Squareフォーラム Linux Tipsカテゴリ別インデックス
インストール/RPM ブート/ブートローダ
ファイル操作 環境設定
ユーザー管理 コンソール/ターミナル
X Window System セキュリティ
トラブルシューティング 他OS関係
ネットワーク ハードウェア
Webサーバ Samba
GNOME KDE
OpenOffice.org エミュレータ
ソフトウェア そのほか/FAQ
全Tips公開順インデックス Linux Tips月間ランキング
Linux Squareフォーラム全記事インデックス

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間