HID использует прерывание IN / OUT для передачи отчетов. В USB передача прерываний опрашивается хостом каждые 1 мс. Каждый раз, когда конечная точка опрашивается, она может выдавать 64-байтовый отчет (для низкой / полной скорости). Вероятно, отсюда вы берете цифру 64 КБ / с. Фактически лимит составляет 1к отчетов в секунду. Также обратите внимание, что эти ограничения различаются для высокоскоростных и сверхскоростных устройств.
Дескриптор отчета - это одно. То, что вы на самом деле отправляете как прерывание, - это совсем другое. Он должен совпадать, но это ни к чему не приводит. Вероятно, вам следует изучить код, который создает полезную нагрузку передачи прерывания IN.
Примечание: все, что вам кажется интересным, это отправлять произвольные фрагменты данных, тогда HID, вероятно, не является релевантным профилем. Использование массовых конечных точек выглядит более подходящим (и вы не будете ограничены частотой опроса конечных точек прерываний).