Подключение 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
* 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)
Imported 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/003
sudo /usr/lib/linux-tools/'uname -r'/usbip list -l
Клиет для 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-2
new 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, имена устройств и портов вымышленные
любое совпадение случайно.