Mass-Storage Class

Mass-Storage Class は、USB 上で様々な Storage (FDD, HDD, CD-R,...) を制御するために定義された仕様です。

特徴については以下の通り。

  • OS 標準マスストレージドライバの存在
    最近、流行っている USB メモリーは、Storage Class に基づいて作成されています。Mass Storage Class に従うことにより独自にドライバをインストールすることなく、多くの OS で自動的に認識・動作させることが可能です。USB Mass Storage Class に従ってハードウェアを作成する限り、ドライバを独自に新規作成することなく多くの動作実績を積んだ OS 標準ドライバが使用出来るのは大きなメリットです。
  • ATAPI/SCSI のラッパー(埋め込み)
    USB Mass Storage Class の仕様の殆どは従来から存在する ATA/ATAPI/SCSI コマンドのラッパーとして動作します。ハードウェア側は ATAPI-USB Bridge や SCSI-USB Bridge チップを咬ますことで従来の Storage 機器を容易に USB 対応機器にすることが可能です。ソフトウェア側は、USB Mass Storage Class でラッピングされたコマンドを ATA/ATAPI/SCSI コマンドに復元することで従来から実績のある ATA/ATAPI/SCSI ドライバをそのまま使用することが可能です。
  • 転送方式は 2 通り
    Bulk-Only 転送と CBI (Control/Bulk/Interrupt) 転送の 2 通り存在します。話によると Bulk-Only 転送は SCSI コマンドのラッパーとして考案され、CBI は ATAPI コマンドのラッパーとして考案されたそうです。この辺の事情については BSD Magazine No.07 の記事「USB デバイスドライバプログラミング 第6回 umass」が詳しいです。
  • 複数 LUN (Multiple Logical Unit Number)
    複数 LUN は、1台の USB 機器で同時に複数のメディアをサポートする場合に用いられています。

Class Information

各 Device Class 仕様書 (USB.org) で公開されている Mass Storage Overview 1.2*1を参考にしました。

Descriptor値(16)詳細
bInterfaceClass0x8Mass-Storage Class
bInterfaceSubClass0x1Reduced Block Commands (RBC) T10 Project 1240-D*2
0x2SFF-8020i,MMC-2 (ATAPI)
0x3QIC-157*3
0x4UFI*4
0x5SFF-8070i*5
0x6SCSI transparent command set
bInterfaceProtocol0x0CBI (with command completion interrupt)
0x1CBI (with no command completion interrupt)
0x50Bulk-Only Transport
  • USB Storage - FAQ for Driver and Hardware Developers (WHDC)
    RBC(0x1) の問題点について「Q: Windows では、RBC プロトコル (USB 記憶装置仕様サブクラス 0x01) を使用する USB 記憶装置をサポートしていますか。」で言及されています。MEDIA SENSE が異なるらしい。

Practice

USB Storage 関連機器の殆どは Class = 0x08 (Mass Storage) / SubClass = 0x06 (SCSI) / Protocol = 0x50 (Bulk only) のケースのようです。Microsoft もこの組み合わせを推奨しているようです。

  • USB動作レポート (PC UNIX 使ってます)
    このサイトのレポートは興味深いです。8/6/50 のコンボ以外の USB Mass Storage 機器が数多く試されています。
    • BUFFALOのCD-RW: CRW-24U2
      Storage(8)/ATAPI(2)/Bulk(50)
    • yanoのMOドライブ: U640MO-02
      Vendor Specification で認識されるも UNUSUAL_DEV にて 8/2/0 で動作させる patch を当てて動作させています。どうも TEST_UNIT_READY が動作しないようです。
    • FUJITSUのMOドライブ
      Storage(8)/SFF-8070i(5)/Bulk(50)
  • FinePix4900Z:目玉の親父 (TsuruZoh Tachibanaya)
    FinePix4900Z は SFF-8070i を採用しているらしい。欲しい。

関連情報

用語

特集記事

OS 対応

Windows

Linux

BeOS

Firmware

USS-720/USS-725/ISD-200/ISD-300

In-System(現Cypress)の USB Bridge chip。USB-IEEE1284 や USB-ATAPI でも動作するらしい。Chip の詳細について知りたかったのですが仕様書はありませんでした。

USAT-1/2/3

Workbit 社等が OEM している USB-ATA Bridge chip。チップ表面に「優」のマークが入っていたらこの会社の OEM だと思って間違いないでしょう。

I-O DATA 社の USB-iCN がこのチップを使用しているようです。チップ内にマイクロカーネルを update することで ATAPI、IDE、SCSI モードで動作が可能のようです。アイディアは好きなんですが他の OS への対応を考えると融通が利きにくいですね。

Prolific PL-2506/PL-2507/PL-3507/PL-2571

USB-SCSI Converter

News


*1 www.usb.org/developers/devclass_docs/usb_msc_overview_1.2.pdf
*2 お目に掛かったことがない。仕様は「ftp://ftp.t10.org/t10/drafts/rbc/」にある。
*3 テープ?
*4 USB Floppy
*5 ATAPI リムーバブル書き換え型メディア?仕様は「ftp://ftp.seagate.com/sff/INF-8070.PDF」にある。

Last-modified: 2006.11.12 (日) 22:51:45 (6367d)