ジャンル不定の日記です。

USBのプロトコル仕様書

AVRマイコンでPCとUSBで接続する機器なんかを作ろうと考えているが、
マウスやキーボードなんかはV-USBにサンプルコードがあるが、ジャンクカメラなんかの部品を使ってデジカメを自作できないかとかも考えているのだが、
ファイル転送が必要になるので調べていた。

USBメモリなどはUSBマスストレージという規格で実装されており、フォーマットなんかもできるようになっている。
USBマスストレージで実装されているデジカメというのもあるらしいのだが、
Picture Transfer Protocol(PTP)やMedia Transfer Protocol(MTP)などで実装されているものが主流の模様。
手元にある古いおもちゃデジカメはWindows用の専用ソフトがないと利用できないので汎用規格になっていない。

デバイス側でも記録領域が扱えるようにするため、フォーマットのできちゃうUSBマスストレージよりもPTPかMTPの方が適していると思ったが、
MTPはマイクロソフトがPTPを拡張して作ったものらしいので難しいと思って当初PTPを中心に調べていたのだが、
PTPはISO15740で国際標準規格となっているのだが、仕様書のPDFが有料しか発見できなかった・・・

PTPやMTPの実装が難しいならUSBマスストレージで実装で妥協かな・・・
とか考えながら調べていたが、
www.usb.orgの、
Developers > Documents > USB Device Class Specifications
にて、いろいろな規格書が無料配信されてた。
中には、MTPの仕様書もあった。(PTPは無い)

というわけで、興味のある規格のPDFは確保しておいた。
Mass Storageにはサブクラス?が複数あるが、USBメモリで一般的なのは"Mass Storage Bulk Only"らしい。
Media Transfer Protocol(MTP)のpdfももちろんダウンロードしたが、他にプリンター、キャプチャー、モニター、ぽいのも確保しておいた。
Communications Device Class(CDC)はUSARTとかそういうのかと思ったが、
"Ethernet"とか書いてあったりするんでUSB接続のLANアダプタとかの規格か?確保しといた。