大容量記憶装置が特定のホストで機能しない理由は2つあります。
最も単純な理由は、ベンダーと製品IDブロックです。iTunesなどの一部のソフトウェアは、提示されたベンダーと製品IDに基づいてデバイスが同期するのを防ぎます。これは非常に基本的な防止策であり、ベンダー/製品IDのなりすましによって簡単に回避されます。
特にXbox360の場合、その理由はXbox360SCSIの実装とUSBデバイスドライバーの実装の組み合わせです。USBマスストレージの仕様には、コマンドブロックラッパーと呼ばれる構造が含まれています。この構造には、実行するコマンドブロックの長さを宣言するメンバーbCBWCBLengthが含まれています。仕様によると、これには1から16までの値を合法的に含めることができます。
コマンドブロックの長さは合法的に1〜16ですが、CDBの従来の長さは6、10、12、または16バイトです。長さはコマンドによって異なります。たとえば、TEST UNIT READYコマンドは6バイトですが、MODESENSEには6バイトと10バイトのバージョンがあります。
Xbox 360は、TEST UNIT READYなどの特定のコマンドを6ではなく10バイトとして送信します。古いドライバー(Palm PreやAndroidなど)を搭載したUSBデバイスの場合、ドライバーが何をすべきかわからないため、問題が発生する可能性があります。これらの奇妙なサイズのCDB。
最終的に問題となるのは、デバイス側での不十分なドライバ処理とホスト側での奇妙なSCSI実装が混在していることです。Microsoftでない限り、修正は、奇妙なサイズのCBW長さフィールドを処理するように大容量記憶装置ドライバーを変更することです。
バルクのみのエンドポイントとバルク割り込みエンドポイントに関する観察は単なる偶然であり、問題、解決策、またはその間の何かとは何の関係もありませんでした。