I'm a new subscriber to seabios.org so feel free to straighten me out if needed.
I've been debugging an problem we've been seeing with not being able to boot (Ubuntu specifically) off of a variety of "newer" USB thumb drives. I've been specifically looking at an older/newer pair of Sandisk Cruzer 4GB drives. I've been adding dprintf's to narrow down the problem to the blockcmd.c file. The function scsi_init_drive() queries the USB device to determine stuff like vendor/device/size/etc. Near the end of the function is a call to cdb_mode_sense_geom(&dop, &geomdata) to retrieve the info related to cyl/head type stuff. On the older/working thumbdrive it returns zeroes for all of the values that get used by the code. The newer/failing drive generates a "stall" on the USB bus, which it never recovers from. The cdb_mode_sense_geom() function is sending a SCSI CDB Mode Sense (CMD=0x5A) to the device.
As a hack of a test, I removed the call to cdb_mode_sense_geom() and filled the buffer it should have returned with zeroes and the failing thumbdrive now boots.
I have some searching I need to do to find out... 1) Is there a SCSI command to determine what protocols are supported? 2) Is there another SCSI command that might return similar required data?
Has anyone out there experienced similar booting difficulties? Or does anyone have any recommendations on what approach I should take?