Всё конечно прикольно - винить можно много кого, но давайте не винить то что не надо!
Проблемма собственно в програмной реализации USB, а точнее в её ограниченности! :
- Low-Sped!,
- 1 control endpoint
- 2 interrupt/bulk-in endpoints
- 7 interrupt/bulk-out endpoints
В тоже время стандарт USB.
- Bulk endpoints are forbidden for low speed devices by the USB standard.
(тоесть - Bulk endpoints - опущенны для медленных устройств!)
В результате, по честному, остаётся:
- Low-Sped!,
- 1 control endpoint
- 2 interrupt-in endpoints
- 7 interrupt-out endpoints
Теперь об устройствах:
- USB HID (устройства интерфейса для человека клава/мышь/...) работают с : interrupt-out endpoint, и иногда и с : interrupt-in endpoints.
- USB CDC (основные устройства связи) работают с : bulk-in/out endpoint, по честному, в програмной реализации это не возможно.
- USBASP - с чем работает не знаю, но в коде "interrupt-in/out endpoints" не используются.

По честному получется если только - 1 control endpoint

, в чем я очень сомневаюсь.
Теперь о том, как оно и с кем всётаки работает:
Для медленных устройств есть два стандарта - OHCI и UHCI (не путаем с EHCI). Эти стандорты - первый изначальный типа открытый и изначально внедренный в Microsoft - сырой и дырявый, второй же исправленный и предпочтителен Intel и Via, а также базовый в Линуксе как-то редко внедряется в железо. Тоесть, для дешёвых чипсетов с неопределенной реализацией - OHCI, а для упомянутых и человечных - UHCI.
Статистики не подводил, но с Intel и Via всё работает, допускаю, что на многих OHCI тоже всё работает, но требуется статистика и проверка!
EHCI - это USB 2 High speed ! И никакого отношения к нашим устройствам не имеет !!! И его не обижать, хоть он и не такой уж и быстрый
