I have a "bulk only" MSD device which is a "virtual CD-ROM". When I do an SCSI "READ TOC" command and specifying a length of 512 bytes, that device apparently does not return any data.
Windows ... eventually does the SCSI "READ TOC" specifying a length of 804 (?) bytes which apparently succeeds.
You have to be aware of MSF and FORMAT fields of the READ TOC command block.
There are four types of this command, identified by these parameters
1) MSF:0, FORMAT:0
2) MSF:0, FORMAT:1
3) MSF:1, FORMAT:0
4) MSF:1, FORMAT:2 (format field is assigned to MSb 2bits of Control byte - legacy form)
The return data blocks are slightly different each other.
- Windows and Linux ask 1),2),3)
- MacOSX retrieves 1),4)
As of the details of this command, refer to SCSI MMC-6 (mmc6r02g.pdf)
In this post, I wrote on the implementation of READ TOC emulation on Device side.
http://www.keil.com/forum/58452/usb-msc-class-and-cd-rom-subclass/Tsuneo