> also, according to the linux kernel, we should not be looking for > configurations on anything that's not a hub.
Personally I wouldn't look to the linux kernel as guidance for correct behaviour. Especially when there's a published specification available. Every usb device has at least one configuration descriptor. The usb spec allows for more than one, with a well-defined method for choosing between them (not supported by plan 9 usb infrastructure). In practice though, it seems common for devices to ignore this and use some bizarre proprietary and undocumented way to switch configurations instead. Hence the need for abominations like the linux usb_modeswitch utility.