USBマスストレージドライバ


概要

USBマスストレージ(FDD、リムーバブルディスク、 メモリカードリーダなど)のドライバです。


要件

動作対象のデバイスとしては以下のようなものがあります。 ただし、すべての製品が動作するとは限りません。 特に、CD/DVDドライブはまだサポートしていません。

今のところ動作状況に関するデータがまだ全くないため、 「この製品は動くか?」「どの製品なら動くか?」といったような 個別の製品に関する質問にはお答えできません。 後述の説明に従って自分で確認してください。

作者は下記のデバイスでテストしています。


導入

初めてBeOSでUSBを使う場合は、まずUSBコントローラがUHCIであることを確認してください。 現在BeOSはOHCIをサポートしていません。 また、BIOS設定で「Plug and Play OS installed」という項目がある場合、Noに設定します。 BeOSで使えるUSBデバイス(キーボード、マウスなど)をお持ちの場合は、 それが動作することを確認してください。

本ドライバのインストールの前に、 USBKitのサンプルプログラムinfoでデバイスの種類を確認します。 なお、R5には新しいusb_rawドライバが入っているので、 USBKitのusbrawは不要です(コンパイルできません)。 デバイスを接続し、infoで[Interface 0]のデバイスクラスを見てください ([Device]の方は無視してください)。 下記のように、Classが8でProtocolが0であれば動作する可能性があります。

$ ./info /dev/bus/usb/0/0
[Device]
	:
	:
  [Configuration 0]
    [Interface 0]
    Class ............. 8
    Subclass .......... 4
    Protocol .......... 0
	:
	:

下記のように、Protocolが0でないものはまだ動作しません。

	:
	:
    [interface 0]
    Class ............. 8
    Subclass .......... 6
    Protocol .......... 80
	:
	:

下記のようなものは通常そのままでは動作しません。作者に連絡してください。

	:
	:
    [interface 0]
    Class ............. 255
    Subclass .......... 0
    Protocol .......... 0
	:
	:

動作しそうであれば、make installでドライバをインストールします。 再起動の必要はありません。 アンインストールにはmake uninstallします。


使用法

デバイスを接続します。 /dev/disk/usb/0/0/rawのようなデバイスファイルが現れるはずです。 lsで確認してください。 DriveSetupやmountvolumeを使ってデバイスをマウントします。 正常に動作せず止まってしまった場合はUSBコネクタを抜いてみてください。

開発の参考とするため、動作・不動作に関わらず、作者に報告をお願いします。 ハードウェア構成・infoの出力・動作状況を添えてください。 動作しない場合は/var/log/syslogも送ってください (~/config/settings/kernel/drivers/kernelsyslog_debug_output trueを有効にして再起動し、 syslogに現れるデバッグ出力を送ってください)。


注意

未実装・未テスト項目

今のBeOSのUSBバスマネージャには重大なバグがあるので、 それが直るまでは上記項目(とくにCBとBulk-onlyのサポート)は改善しないでしょう。

制限事項


USBマスストレージの基礎

ここでは、まずUSBマスストレージデバイスの基礎知識について解説し、 それに基づいてデバイスの動作可否の見通しを述べます。 本ドライバの動作状況を理解するために重要な内容ですのでぜひ読んでください。

USBデバイスは、「クラス」とよばれる分類がされており、 各クラスごとに制御手順が標準化されています。 そのため、同一のクラスに属するデバイスは、メーカーや製品の違いにかかわらず、 基本的には単一のドライバ(クラスドライバ)でサポート可能です (デバイスクラス標準に準拠しない製品は専用ドライバが必要になります)。 主なクラスの例は以下の通りです。

クラス番号クラス
0指定なし
1オーディオ
2コミュニケーション(モデム、LANなど)
3ヒューマンインタフェースデバイス(HID) (キーボード、マウス、ジョイスティックなど)
7プリンタ
8マスストレージ(大容量記憶装置) (FDD、CD/DVD、リムーバブルディスクなど)
9ハブ
255メーカー独自

本ドライバがサポートするのはクラス8のマスストレージクラスです。 ちなみに、このクラスに属するデバイスは、Windowsでは一般に 「USB大容量記憶装置」として認識されます(専用ドライバがない場合)。

クラスの下位分類として「サブクラス」があり、 さらに下位分類として「プロトコル」があります。 クラスによってサブクラスとプロトコルの詳細は異なりますが、 マスストレージクラスでは、サブクラスはコマンドセット(SCSI,ATAPIなど)、 プロトコルはUSBバス上でのコマンドやデータのやりとりの方式(トランスポート)を表します。 サブクラスはどれもSCSIを基にしているので大きな違いはありません。 これに対して、プロトコルは違いが大きく、 コマンド出力・データ入出力・ステータス入力のそれぞれに USBのどの転送方式を使うかによって、以下の3種類があります。

プロトコル番号プロトコル名称コマンドデータステータス
0CBIコントロール転送バルク転送インタラプト転送
1CBコントロール転送バルク転送なし
80Bulk-onlyバルク転送

CBIとCBは同じようなものですが、これらとBulk-onlyはまったく異なります。 したがって、USBマスストレージクラスのドライバは、大まかにいって CBIとBulk-onlyの両プロトコルに対応する必要があることになります。

このように、マスストレージクラスでは、ドライバと製品の動作可否は、 製品がCDであるかzipであるかといったこととは直接関係がなく、 その製品が採用しているサブクラスとプロトコル(とくにプロトコル)に左右されます。 市販のUSB製品のクラス・サブクラス・プロトコルが何であるかは、 ほとんどの場合、実際に製品にあたって調べてみなければ (それも、そのためのツールを使わなければ)わかりません。 BeOSでは、USBKitのサンプルプログラムinfoで調べることができます。 大まかな傾向としては、Linuxなどからの情報によると、 以下のようになっているようです。

以上の内容をふまえて、本ドライバでの動作可否ですが、 まずマスストレージクラスでないデジカメやオーディオプレーヤーは決して動作しません。 また、Bulk-onlyのサポートがまだ動作していないので、Bulk-onlyのデバイスも動作しません。 さらに、これはクラスとは直接関係ありませんが、 512バイト/セクタでない媒体に対応していないので、CD/DVDは動作しません。 ということで、現状で動く可能性が比較的高いデバイスはFDD・LS-120・デジカメということになります。


トラブルシューティング

このドキュメントをよく読んで、デバイスのサポート状況を確認してください。 それでも動かない場合は、ハードウェア構成、infoの出力、動作状況、 /var/log/syslogを添えて作者に報告してください。 ただし、対処できるとは限りません。


参考文献

規格

Be Newsletterの記事


使用条件

本パッケージはフリーソフトです。 Copyright (C) 2000 ITO, Takayuki. All rights reserved.


履歴

0.10
試験的リリース
0.11
ドキュメントを更新
0.12
unusual devicesのサポート、エンドポイントの判別
ToDo

作者

ITO, Takayuki (e-mail/ web)