BraVo123 Опубликовано 18 декабря, 2018 Жалоба Поделиться Опубликовано 18 декабря, 2018 Подключение USB сканера по сети с помощью USBIP, может кому пригодится ...Серверная часть есть только под Linux , а клиентская и под linux и под windowsКопался с этим долго, поэтому "многбукфф" под спойлером. На сервере:Если не установлено ставим sudo apt install usbipили sudo apt install linux-tools-genericПроверяем наличие необходимых модулей cd /lib/modules/$(uname -r)/kernel/drivers/usb/usbip/ lsВидим: итого 176K drwxr-xr-x 2 root root 4,0K фев 22 11:29 ./ drwxr-xr-x 20 root root 4,0K фев 22 11:29 ../ -rw-r--r-- 1 root root 51K фев 13 03:58 usbip-core.ko -rw-r--r-- 1 root root 49K фев 13 03:58 usbip-host.ko -rw-r--r-- 1 root root 64K фев 13 03:58 vhci-hcd.koДобавляем модули в /etc/modules , для того что бы они подгружались при загрузке sudo nano /etc/modulesДобавляем строки # USBIP Client/Server usbip-host usbip-core vhci-hcdНу или подгружаем модули в ручную modprobe usbip-host modprobe usbip-core modprobe vhci-hcdили sudo insmod usbip-core.ko sudo insmod usbip-host.ko sudo insmod vhci-hcd.koЗапускаем демон: sudo /usr/lib/linux-tools/'uname -r'/usbipd -DЕсли хотите загружать демон автоматически при загрузке: sudo nano /etc/init.d/usbipd#!/bin/sh ### BEGIN INIT INFO # Provides: usbipd # Required-Start: $network # Required-Stop: $network # Default-Start: 2 3 5 # Default-Stop: 0 1 6 # Description: ###END INIT INFO case "$1" in 'start') # export OSVER = 'uname -r' /usr/lib/linux-tools/'uname -r'/usbipd -D ;; 'stop') unset OS pkill usbip ;; *) echo "Usage: $0 { start | stop }" ;; esac exit 0и обновляем update-rc.d usbipd defaultsСмотрим что у нас есть: sudo /usr/lib/linux-tools/'uname -r'/usbip list -lВидим примерно следующее: - busid 3-2 (15c2:0038) SoundGraph Inc. : GD01 MX LCD Display/IR Receiver (15c2:0038) - busid 5-1 (09da:9090) A4Tech Co., Ltd. : XL-730K / XL-750BK / XL-755BK Mice (09da:9090) - busid 1-8 (04b8:0119) Seiko Epson Corp. : GT-X750 [Perfection 4490 Photo] (04b8:0119)Биндим например наш сканер GT-X750 [Perfection 4490 Photo]: sudo /usr/lib/linux-tools/'uname -r'/usbip bind -b 1-8Видим: usbip: info: bind device on busid 1-8: completeАвтоматический бинд, при подключении сканераСоздаём правило для UDEV sudo nano /etc/udev/rules.d/99-usbip.rulesДобавляем туда: # Бинд при подключении сканера ACTION=="add", ENV{ID_BUS}=="usb", ENV{ID_VENDOR}=="EPSON", RUN+="/etc/usbip_bind %E{ID_VENDOR_ID$} %E{ID_MODEL_ID}"Здесь : * ACTION=="add" - Действие при подключении* ENV{ID_BUS}=="usb" - Устройства usb* ENV{ID_VENDOR}=="EPSON" - Производитель Epson здесь нужно указывать то что реально выдаёт устройство при подключении udevadm monitor --environment --udevвыхлоп UDEV [262232.750592] add /devices/pci0000:00/0000:00:1d.7/usb1/1-7 (usb) ACTION=add BUSNUM=001 DEVNAME=/dev/bus/usb/001/005 DEVNUM=005 DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb1/1-7 DEVTYPE=usb_device DRIVER=usb ID_BUS=usb ID_MODEL=EPSON_Scanner ID_MODEL_ENC=EPSON\x20Scanner ID_MODEL_FROM_DATABASE=GT-X750 [Perfection 4490 Photo] ID_MODEL_ID=0119 ID_REVISION=0100 ID_SERIAL=EPSON_EPSON_Scanner ID_USB_INTERFACES=:ffffff: ID_VENDOR=EPSON ID_VENDOR_ENC=EPSON ID_VENDOR_FROM_DATABASE=Seiko Epson Corp. ID_VENDOR_ID=04b8 ....* RUN+="/etc/usbip_bind %E{ID_VENDOR_ID$} %E{ID_MODEL_ID}" - Ну и соответственно какой скрипт с какими параметрами выполнять Создаём скрипт sudo nano /etc/usbip_bindДобавляем туда: #!/bin/sh export OSV='uname -r' BUSID='/usr/lib/linux-tools/$OSV/usbip list -l | grep $1:$2 | awk '{print $3}' | grep -' export USB_IP='pgrep "usbipd"' # Если демон запущен, биндим наш сканер if [ -n "$USB_IP" ]; then /usr/lib/linux-tools/$OSV/usbip bind -b $BUSID sleep 3 else # возможно сначала нужно подгрузить модули #modprobe usbip-core #modprobe usbip-host #modprobe vhci-hcd # Иначе сначала запускаем демон а потом биндим #service usbipd start ??? /usr/lib/linux-tools/$OSV/usbipd -D # что-то тут не так, ибо демон не запускается автоматически. sleep 3 /usr/lib/linux-tools/$OSV/usbip bind -b $BUSID fi Разрешаем выполнение файа sudo chmod 755 /etc/usbip_bind Здесь я хотел проверить, запущен ли демон и по результату либо просто биндить, либо сначала запустить демон, но так и не разобрался с запуском демона USBIPD бинд работает, а демон не запускается. Но так как демон запускается при старте системы, а модули добавлены в загрузку, на это пока забил ... Перечитываем правила UDEV.rules sudo udevadm control --reload-rules На клиенте:Установка и загрузка модулей, по аналогии с сервером.Смотрим что мы можем подключить с сервера sudo /usr/lib/linux-tools/'uname -r'/usbip list -r 192.168.1.218Видим что-то вроде: Exportable USB devices ====================== - 192.168.1.218 1-8: Seiko Epson Corp. : GT-X750 [Perfection 4490 Photo] (04b8:0119) : /sys/devices/pci0000:00/0000:00:1d.7/usb1/1-7 : Vendor Specific Class / Vendor Specific Subclass / Vendor Specific Protocol (ff/ff/ff)Подключаем наш сканер: sudo /usr/lib/linux-tools/'uname -r'/usbip attach -r 192.168.1.218 -b 1-8Проверяем: sudo /usr/lib/linux-tools/'uname -r'/usbip portImported USB devices ==================== Port 00: <Port in Use> at High Speed(480Mbps) unknown vendor : unknown product (04b8:0119) 4-1 -> usbip://192.168.1.218:3240/1-8 -> remote bus/dev 001/003sudo /usr/lib/linux-tools/'uname -r'/usbip list -l - busid 2-3 (04f2:b3f6) Chicony Electronics Co., Ltd : HD WebCam (Acer) (04f2:b3f6) - busid 2-7 (046d:c52b) Logitech, Inc. : Unifying Receiver (046d:c52b) - busid 4-1 (04b8:0119) Seiko Epson Corp. : GT-X750 [Perfection 4490 Photo] (04b8:0119)Всё видим что наш сканер подключен, можно пользоваться :) Статья о том как собрать USBIP-UTILS 2.0 из исходниковhttps://blog.danman.eu/usbip-utils-2-0-on-ubuntu/ Клиент для Windows (не подписанный, с патчем от вылетов)Dropbox - usbip.zipОригинальный подписаный клиентDownload The USB/IP Project from SourceForge.net Клиет для WindowsТеперь остался последний штрих в нашем нелегком деле - настроить клиента. Клиентом в данном случае будет Windows.Итак, идём вот сюда и скачиваем usbip_windows_v0.2.0.0_signed.zip. Распакуем это "добро" в каталог C:\ (желательно, чтобы название каталога было usbip, а не usbip_win..., это просто для дальнейшего удобства). Теперь добавим новое "старое устройство". 1. Открываем "Панель управления" - "Диспетчер устройств"2. Правой кнопкой мыши на имени компьютера - "Установить старое устройство"3. Откроется мастер, жмёте "Далее"4. В следующем окне выбираете "Установка оборудования, выбранного из списка вручную" и жмёте "Далее"5. Выбираете "Системные устройства" - "Далее"6. "Установить с диска" указываете путь, куда распаковали клиента, и снова "Далее"7. Выберите "USB/IP Enumerator", нажмите "ОК", "Далее" и "Готово" Теперь необходимо подключить наше устройство, присоединенное к серверу. Открываем командную строку и пишем: cd c:\usbip usbip -l 10.10.10.10Выхлоп - 10.10.10.10 2-2: Canon, Inc. : CanoScan LIDE 25 (04a9:2220) : /sys/devices/pci0000:00/0000:00:1d.1/usb2/2-2 : Vendor Specific Class / unknown subclass / unknown protocol (ff/00/ff) : 0 - Vendor Specific Class / unknown subclass / unknown protocol (ff/00/ff)usbip -a 10.10.10.10 2-2new usb device attached to usbvbus port 1 Receive sequence: 3900Командой "usbip -l 10.10.10.10" мы вывели список всех устройств с нашего ТК, "расшаренных" через usbip (10.10.10.10 - ip нашего ТК).Командой "usbip -a 10.10.10.10 2-2" мы примапили это устройство к себе на наш терминальный сервер (2-2 это тот самый busid, необходимый для присоединения устройства).Теперь в диспетчере устройств у вас есть новое неопознанное устройство. Ставите на него драйвера и оно должно заработать как ему и положено.Коммандую строку закрывать нельзя, иначе связь обрывается Оффтопик:Все IP, имена устройств и портов вымышленные любое совпадение случайно. Цитата «Украинский народ заслуживает того, чтобы определять своё будущее без вмешательства извне. И именно это Соединённые Штаты пытаются сделать». © Джон Бреннан (главный советник президента США Барака Обамы по борьбе с терроризмом)«Сибирь слишком большая, чтобы принадлежать одному государству» © Кондолиза Райс (госсекретарь США) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.