On Tuesday, October 19, 2021 at 3:32 PM "Alan Stern" <stern@xxxxxxxxxxxxxxxxxxx> wrote: > On Tue, Oct 19, 2021 at 12:15:09PM +0200, mark_k@xxxxxxxxx wrote: > > I have a Core Micro Systems USB2 Link USB-SCSI converter (07B4:0380). > > ... > > However in order to access multiple targets and LUNs, the USB2 Link uses > > byte 13 of the command block wrapper in a special way. > > > > Normally CBW byte 13 has bCBWLUN in bits [3:0] with bits [7:4] reserved. > > The USB2 Link expects the target ID in bits [3:0] and LUN in bits [7:4]. > > Why on earth does it use such a non-standard protocol? After all, the > USB mass-storage specifications have been available since 1999 or > earlier! And they haven't exactly been kept secret during all that > time. The bulk only transport doesn't have any way to access multiple targets. In theory mapping the LUN number in the CBW to a target ID could allow an unmodified driver to access multiple targets, as long as their IDs are contiguous from 0. (At the cost of not being able to access non-zero LUNs but most devices only have one LUN.) Maybe that didn't work out as compatible as the manufacturer hoped so they set bInterfaceClass to 0xFF not 0x08. Or maybe that was just done to prevent Windows automatically loading its built-in mass storage driver, so the vendor driver could be installed instead.