ого. наконец-то тут усб обсуждают!
поделюсь своим опытом и спрошу совета:
Пытался я сделать usb gadget из raspberry zero. Задача простая - нужна приближенная к реалтайму скорость общения между малиной и пк (мак, вин, линукс).
На сколько понял, мне для этого нужно всего-то открывать два bulk-эндпоинта на чтени и запись.
Со стороны малины за это отвечает драйвер function_fs которому можно в конфиге указать множество усб-функций (HID mass storage CDC ...).
Хотелось сделать что-то вроде двунаправленного midi с высокой скоростью.
В драйверах линукса есть модуль f_serial который просто открывает искомые две bulk-endpoint. И даже удалось связаться с ним через libusb. Правда столкнулся с неприятным багом - если забыть считать данные с /dev/gs0 со стороны малины, то внутри драйвера что-то ломается, и далее на PC отдается какая-то ересь.
Дальше копаться внутри драйверов уже не было никакого настроения, так что отсановился на том что поднял g_ether и общаюсь через обычные соккеты, что конечно костыль.
Есть у кого релевантный опыт? буду благодарен если подскажете как с ноля писать свой усб-протокол, и вообще не наркомания ли это?
Нужно для пользовательского устройства, то есть что-бы любой человек воткнул эту малину к себе в компьютер, скачал моё приложение и смог пользоваться, очень желательно без установки дополнительных драйверов. А от протокола нужен "почти_реалтайм" в обе стороны.