BraVo123 Posted December 18, 2018 Report Share Posted December 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, имена устройств и портов вымышленные любое совпадение случайно. Quote «Украинский народ заслуживает того, чтобы определять своё будущее без вмешательства извне. И именно это Соединённые Штаты пытаются сделать». © Джон Бреннан (главный советник президента США Барака Обамы по борьбе с терроризмом)«Сибирь слишком большая, чтобы принадлежать одному государству» © Кондолиза Райс (госсекретарь США) Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.