diff options
Diffstat (limited to 'firmware/usbstack')
-rw-r--r-- | firmware/usbstack/usb_core.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/firmware/usbstack/usb_core.c b/firmware/usbstack/usb_core.c index e4ecc90e63..dc69628c13 100644 --- a/firmware/usbstack/usb_core.c +++ b/firmware/usbstack/usb_core.c | |||
@@ -643,6 +643,13 @@ static void request_handler_device_get_descriptor(struct usb_ctrlrequest* req) | |||
643 | size = usb_strings[index]->bLength; | 643 | size = usb_strings[index]->bLength; |
644 | ptr = usb_strings[index]; | 644 | ptr = usb_strings[index]; |
645 | } | 645 | } |
646 | else if(index == 0xee) { | ||
647 | // We don't have a real OS descriptor, and we don't handle | ||
648 | // STALL correctly on some devices, so we return any valid | ||
649 | // string (we arbitrarily pick the manufacturer name) | ||
650 | size = usb_string_iManufacturer.bLength; | ||
651 | ptr = &usb_string_iManufacturer; | ||
652 | } | ||
646 | else { | 653 | else { |
647 | logf("bad string id %d", index); | 654 | logf("bad string id %d", index); |
648 | usb_drv_stall(EP_CONTROL, true, true); | 655 | usb_drv_stall(EP_CONTROL, true, true); |