По софту: Беда этого проекта, что развитие тормознуло в 2012 году. Отсюда и всяческие шаманства. Например, в последних официальных версиях OpenWrt ("бздюлинка" требует Chaos Calmer) есть только модули ядра USBIP, а готовых пакетов с настроечной утилитой и демоном сервера нет. Я пытался компильнуть из исходников, но так как линуксоид из меня никудышный, так и не осилил. Задолбался ловить разные мессаги кросс-компиляции в виртуалке с убунтой. Посему порыскал и нарыл вот этот польский сайт: http://eko.one.pl/
Там есть уже скомпилированные образы для много чего и в пакетах есть поддержка USBIP. Например, для "бздюлинки" вот тут: http://dl.eko.one. …i/chaos_calmer/ramips/
(luci-15.05-ramips-rt305x-wt1520-8M-squashfs-sysupgrade.bin) - с WEB мордой. Там же есть и без нее, но все равно пакет USBIP в 4 МБ памяти (в китайской "бздюлинке")не влезет. Посему я уже давно припаял 8 МБ с альтернативным загрузчиком - заливать эти стандартные образы OpenWrt очень просто с помощью китайской утилитки по протоколу TFTP.
Залил образ, установил из польского же репозитория пакеты USBIP (модули ядра, клиента и сервера). Надо еще установить оттуда же модуль ядра USB OHCI. В "бздюлинке" вроде все задышало - подключенные usb девайсы видит, USBIP сервер запускается, встроенный клиент USBIP локально подключается. Качнул с официального сайта клиента и драйвер под Windows (аж две версии). Ни та, ни другая версия "бздюлинку" не видят. Что-то там линуксоиды дальше развивали, а виндусячее ПО тормознуло раньше. Видимо изменились протоколы. Порыска по тырнетам, нашел usbip.exe под win, который наконец увидел "бздюлинку" по сети. Но подключиться не может. Опять порыскал - на хабре нашел хак. Дело в том, что при подключении с win клиента, сервер в OpenWrt не заполняет таблицы дескрипторов usb устройства. Если предварительно подключиться при старте встроенным клиентом OpenWrt и сразу отключиться, то таблицы заполняются. После этого действа виндусячий клиент легко подключается.
Вот содержимое "автостарта" в OpenWrt (/etc/rc.local):
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
usbipd -D &
sleep 1
usbip bind -b 2-1
sleep 1
usbip attach -r localhost -b 2-1
sleep 1
usbip detach --port=00
sleep 1
exit 0
Корявенько и "в лоб", но срабатыывает.
Запускается серверный демон usbipd.
После запуска биндится подключенное usb устройство, чтобы его мог видеть клиент.
После этого подключается локальный клиент и сразу отключается.
Правильнее было бы написать скрипт, который сначала(а еще лучше постоянно, чтобы можно было перетыкать "на ходу") сканировал подключенные устройства, и корректно проделывал бы вышеприведенную операцию с нужным BUSID. Вот тугда можно было бы подключить и usb хаб.
И нужна помощь линусоидов :)
Сейчас просто передергиваю питание. Для осциллографа и J-Link BUSID после старта всегда "2-1".
Грузится все около минуты. Для HS флэшки BUSID="1-1", что требует правки /etc/rc.local (можно из web морды).
Далее все работает очень стабильно - сам драйвер WIN весьма неплох. При подключении в винде появляется usb девайс, который подключен удаленно, и к нему без проблем подключатся ПО. Закрываешь окно клиента Ctrl+C - винда "выдергивает" usb девайс. Глюков не обнаружил. При недолгом обрыве сети ничего не отваливается.
Как я уже говорил, после создания стабильной конфигурации проще слить содержимое флэш и клонировать, чтобы не красноглазить. Ибо сдуть/запаять SOIC8 проще :)
Если нужно, все перечисленное выложу здесь...