This is driving me nuts:
I am having trouble with some SanDisk Cruzer Memory stick. I send it the READ_CAPACITY(10) command and it fails the data transfer Phase (8 Bytes of result info: LSB of last sector, sector size) with Input pipe stall which requires me to reset the IN endpoint (according to MSD spec). I then do the "read CSW" to properly finish the BBB Transmission protocol which works ok (but of course I did not get data in the first place). I then do a REQUEST_SENSE command which tells me that everything is fine (ha ha ha ...).
For any other USB stick or USB hard disk (well I tried about 10 different devices, "any other" is a relative term ...), the READ_CAPACITY(10) command works just fine and returns expected results (for example, it should return 512 for sector size or maybe 4096 for future devices). And if not, I would expect that a REQUEST_SENSE should tell me that SOMETHING went wrong.
What in the world makes this stick so different ? Are there either any unspoken timing issues or unknown command sequence mysteries to follow ?
I am beginning to believe that I have to precede the READ_CAPACITY(10) command with some other command for getting it to work (on this device). Maybe TEST_UNIT_READY command ? Does anyone know of any undocumented expectations of what commands can follow what other commands ?
USB MSD devices are a pain in the rear. They all behave a bit differently.
Lars