ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
22 ноября
792824 Топик полностью
Гyдвин, волшебник (08.11.2017 20:30, просмотров: 459) ответил vesago на А софт какой для этого и чем шить?
По софту: Беда этого проекта, что развитие тормознуло в 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 проще :) Если нужно, все перечисленное выложу здесь...