# Установка apt install linux-tools-common linux-tools-generic # Версия usbip version # Вкл модуль ядра для сервера: modprobe usbip-host echo "usbip-host" >> /etc/modules # Вкл службу usbipd -D # Вкл модуль ядра для клиента: modprobe vhci-hcd echo "vhci-hcd" >> /etc/modules #modprobe usbip-vudc #echo "usbip-vudc" >> /etc/modules
Ставить сертификат и отключать цифровую подпись драйверов не нужно с версии usbip-win 0.3.6-dev
# Список локальных USB-устройств usbip list -l # Расшарить девайс из списка usbip bind -b 1-1 # Убрать общий доступ usbip unbind -b 1-1 # Список девайсов на сервере с клиента usbip list -r 192.168.1.24 # Примонтировать на клиенте usbip attach -r 192.168.1.24 -b 1-1 # Список примонтированных девайсов usbip port # Отмонтировать девайс по номеру порта из списка usbip detach -p 1
Идея монтирования скриптом по фильтрации ID устройства (здесь: 0529:0001) не подходит, т. к. ID бывают одинаковыми у нескольких устройств, а задать имя или псевдоним для устройства невозможно. Поэтому только по номеру (3-3, 3-4), и вести таблицу соответствия.
Exportable USB devices ====================== - 10.1.0.236 3-4: Aladdin Knowledge Systems : HASP copy protection dongle (0529:0001) : /sys/devices/pci0000:00/0000:00:14.0/usb3/3-4 : Vendor Specific Class / unknown subclass / unknown protocol (ff/00/00) 3-3: Aladdin Knowledge Systems : HASP copy protection dongle (0529:0001) : /sys/devices/pci0000:00/0000:00:14.0/usb3/3-3 : Vendor Specific Class / unknown subclass / unknown protocol (ff/00/00) : 0 - Vendor Specific Class / unknown subclass / unknown protocol (ff/00/00)
usbip: error: failed to open /usr/share/hwdata//usb.ids # Решение: mkdir /usr/share/hwdata ln -s /usr/share/misc/usb.ids /usr/share/hwdata/usb.ids
При попытке монтирования с клиента возникает ошибка
.\usbip.exe -a 10.1.0.236 3-3 usbip err: usbip_windows.c: 829 (attach_device) cannot find device # При этом устройство с клиента видно .\usbip.exe -l 10.1.0.236 - 10.1.0.236 3-3: Aladdin Knowledge Systems : HASP v0.06 (0529:0001) : /sys/devices/pci0000:00/0000:00:14.0/usb3/3-3 : Vendor Specific Class / unknown subclass / unknown protocol (ff/00/00)
Проблема решается путем проброса USB-девайса на сервере самому себе с его последующим отключением.
usbip attach --remote=localhost --busid=3-3 sleep 3 usbip detach --port=00 usbip: info: Port 0 is now detached!
При попытке монтирования с клиента возникает ошибка
.\usbip.exe -a 10.1.0.236 3-3 usbip err: usbip_windows.c: 62 (usbip_vbus_dev_node_name) usbvbus interface is not registered usbip err: usbip_windows.c: 654 (import_device) open vbus driver usbip err: usbip_windows.c: 840 (attach_device) query
Решение - необходимо поставить в систему «старое устройство» (USB/IP Enumerator), указав драйвер usbipenum.
Если просто установить usbipenum.inf, то это не поможет. Через pnputil «старое устройство» тоже не ставится.
Tutorial – USB/IP (LinuxMagazine)
Как предоставить общий доступ к USB-устройству по сети
Укрощаем USB/IP
USB/IP (ArchWiki)
Предоставление удалённого доступа к USB-носителям и токенам c помощью USB-over-IP (Astra Linux)
usbip startup with systemd
USB over IP для личного использования: организовываем клиент-серверный комплекс на Linux и Windows (31.05.2022)
USBIP на CentOS 7 (USB через сеть) (10.03.2021)
https://github.com/cezanne/usbip-win (releases)
https://github.com/dorssel/usbipd-win
https://nio-electronics.ru, клон https://www.virtualhere.com, который, в свою очередь, is most likely just a copy of usbip.
Модель NIO-EUSB 4ep
root@usb:~# lsb_release -a LSB Version: n/a Distributor ID: poky Description: Poky (Yocto Project Reference Distro) 3.1.17 Release: 3.1.17 Codename: dunfell root@usb:~# uname -a Linux usb 5.15.48 #1 SMP Thu Jun 16 11:30:35 UTC 2022 armv7l GNU/Linux root@usb:~# cat /proc/cpuinfo processor : 0 model name : ARMv7 Processor rev 4 (v7l) BogoMIPS : 37.89 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc07 CPU revision : 4 processor : 1 model name : ARMv7 Processor rev 4 (v7l) BogoMIPS : 37.89 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc07 CPU revision : 4 Hardware : Allwinner sun7i (A20) Family Revision : 0000 Serial : 165166450942d681 root@usb:~# cat /proc/meminfo MemTotal: 1026384 kB MemFree: 836840 kB MemAvailable: 870952 kB ...
root@usb:~# cat /opt/nioeusb/service/niousbsh.cfg AutoAttachToKernel=1 ClaimPorts=0 DisableEasyFind=1 HideClientInfo=${VHHideClientInfo} License=${VHLicense} MDNSServiceName=_rhusb._tcp ServerName=${VHServerName} TCPPort=${VHTCPPort} UseAVAHI=${VHUseAVAHI} UseAvahiServiceFile=0 clientAuthorization=/opt/nioeusb/service/clientAuthorization.sh "$VENDOR_ID$" "$PRODUCT_ID$" "$CLIENT_ID$" "$CLIENT_IP$" "$PRODUCT_SERIAL$" "$PASSWORD$" "$DEVPATH$" "$NICKNAME$" "$NUM_BINDINGS$" clientDeauthorization=/opt/nioeusb/service/clientDeauthorization.sh "$VENDOR_ID$" "$PRODUCT_ID$" "$CLIENT_ID$" "$CLIENT_IP$" "$PRODUCT_SERIAL$" "$PASSWORD$" "$DEVPATH$" "$NICKNAME$" onChangeNickname=/opt/nioeusb/service/onChangeNickname.sh "$VENDOR_ID$" "$PRODUCT_ID$" "$NICKNAME$" "$NEW_NICKNAME$" "$CLIENT_ID$" "$CLIENT_IP$" "$DEVPATH$" onDeviceIgnore=/opt/nioeusb/service/onDeviceIgnore.sh "$VENDOR_ID$" "$PRODUCT_ID$" "$CLIENT_ID$" "$CLIENT_IP$" onDeviceKick=/opt/nioeusb/service/onDeviceKick.sh "$VENDOR_ID$" "$PRODUCT_ID$" "$KICKER_ID$" "$KICKER_IP$" "$CLIENT_ID$" "$CLIENT_IP$" "$PRODUCT_SERIAL$" "$DEVPATH$" "$NICKNAME$" onServerRename=/opt/nioeusb/service/onServerRename.sh "$NEW_NAME$" It=1600598652 EasyFindId=KX1vnwHEhNimJz3HjRcHJ5 EasyFindPin=3yfYna root@usb:~# cat /opt/nioeusb/service/niousbsh.env VHLicense=02450942d681,4,MCICD...XP8 VHHideClientInfo=0 VHTCPPort=17602 VHServerName=usb VHUseAVAHI=0 SSLCert=/etc/niousb/niousbVH.pem SSLPort=17601 root@usb:~# cat /etc/niousb/niousbVH.pem cat: can't open '/etc/niousb/niousbVH.pem': No such file or directory
root@usb:~# cat /var/log/messages Mar 1 17:05:19 niousb syslog.info syslogd started: BusyBox v1.31.1 Mar 1 17:05:19 niousb cron.info crond[172]: (CRON) STARTUP (1.5.5) Mar 1 17:05:19 niousb cron.info crond[172]: (CRON) INFO (Syslog will be used instead of sendmail.) Mar 1 17:05:19 niousb cron.info crond[172]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 59% if used.) Mar 1 17:05:24 niousb user.info vhusbdarmpi2[214]: >>> Starting VirtualHere USB Server v4.4.7 (Built: Dec 10 2022, 21:26:07)<<< Mar 1 17:05:24 niousb user.info vhusbdarmpi2[214]: Using configuration /opt/nioeusb/service/niousbsh.cfg Mar 1 17:05:25 niousb user.info vhusbdarmpi2[217]: Server licensed to=02450942d681 max_devices=4 Mar 1 17:05:25 niousb user.info vhusbdarmpi2[217]: Using large URB's Mar 1 17:05:25 niousb user.info vhusbdarmpi2[217]: Listening on all network interfaces at TCP port 17602 Mar 1 17:05:25 niousb user.info vhusbdarmpi2[217]: Found Low speed device [0529:0001] "AKS, HASP HL 3.25" at address 212 Mar 1 17:05:25 niousb user.info vhusbdarmpi2[217]: Found High speed device [0c45:6341] "HD 720P Webcam, HD 720P Webcam" at address 213 Mar 1 17:05:25 niousb user.info vhusbdarmpi2[217]: Found Low speed device [0529:0001] "AKS, HASP 2.17" at address 211 Mar 1 17:05:25 niousb user.info vhusbdarmpi2[217]: Found High speed device [8564:1000] "JetFlash, Mass Storage Device" at address 214 Mar 1 17:05:31 niousb user.info vhusbdarmpi2[217]: 192.168.1.59 connected as connection 1 (Standard TCP) Mar 1 17:05:40 niousb user.info vhusbdarmpi2[217]: 192.168.1.138 connected as connection 2 (Standard TCP) Mar 1 17:09:29 niousb user.info vhusbdarmpi2[217]: Unmanaging device 214 [8564:1000] Mar 1 17:10:26 niousb user.info vhusbdarmpi2[217]: Unmanaging device 211 [0529:0001] Mar 1 17:10:27 niousb user.info vhusbdarmpi2[217]: Unmanaging device 212 [0529:0001] Mar 1 17:10:29 niousb user.info vhusbdarmpi2[217]: Unmanaging device 213 [0c45:6341] Mar 1 17:11:04 niousb user.info vhusbdarmpi2[217]: Connection 2 remotely disconnected gracefully (rx msg size) Mar 1 17:11:15 niousb user.info vhusbdarmpi2[217]: Connection 2 successfully removed (reason:timeout) Mar 1 17:23:51 niousb user.info vhusbdarmpi2[217]: Connection 1 remotely disconnected gracefully (rx msg size) Mar 1 17:23:53 niousb user.info vhusbdarmpi2[217]: 10.1.53.59 connected as connection 3 (Standard TCP) Mar 1 17:23:57 niousb user.info vhusbdarmpi2[217]: Connection 1 successfully removed (reason:timeout) Mar 1 17:30:01 niousb cron.info CROND[281]: (root) CMD (/usr/bin/ntpdate-sync silent) Mar 1 17:36:19 niousb auth.info sshd[287]: User root authorized keys /dev/null is not a regular file Mar 1 17:36:22 niousb auth.info sshd[287]: Accepted password for root from 192.168.1.138 port 55473 ssh2
# Имя службы rhclient # Отображаемое имя USB Hub Over Network USB Sharing # Описание Provides virtualized access to USB devices over a network # Параметры запуска службы "C:\Users\username\Downloads\rhcl64.exe\rhcl64.exe" -n --config="C:\Users\username\AppData\Roaming\rhcl.ini"
Help
USB Hub Over Network 5.2.8, USB Hub Over Network Usage: rhcl64 [-h][-c <str>] [а] [-t <str>] [-p] [-q <str>] [-e] [-g] [-r <str>] [-l <str>] [-m] [-d] [-x] [-i] [-b] [-u] [-y] [-w] [-n] -h, --help Display this help -c, --config=<str> configuration file to use -a, --admin administrator mode -t, --control=<str> Issue command to running client -p, --preferipv6 Prefer IPv6/IPv4 dual-stack -q, --language=<str> Set language [EN-US, ZH-CN, FR-FR, RU-RU, DE-DE, IT-IT, ES-AR] -e, --autofind-off Start with auto-find off -g, --start-minimized Start the client minimized -r, --redirect=<str> When used with arguments t/d/x/i/u, redirect output to file instead of console -l, --log=<str> log file to write ('OsEventLog'=Event Log) -m -d, --install-drivers install drivers -x, --extract-drivers extract drivers -i, --install-service Install client as a service (autofind on by default) -b, --install-service-na Install client as service (autofind off by default) -u, --uninstall-service Uninstall service -y, --uninstall-drivers Uninstall drivers -w -n
rhcl.ini
[General] AutoFind=0 MainFrameWidth=400 MainFrameHeight=250 MainFrameX=1096 MainFrameY=82 SSLClientCert= SSLCAFile= QualifyByName=1 QualifyByInterface=0 AutoUseDelaySec=0 RetryAutoUseDelaySec=2 AutoRefreshLookupPeriod=30 BonjourLookupTimeout=4 BonjourResolverTimeout=2 Language=RU-RU SSLPort=17601 ReverseLookup=0 AutoMinimize=1 [Settings] ManualHubs=usb.example.com:17602 [AutoShare] usb.212=0 usb.1.1321.212=0 usb.1.1321=0 All=1 [Transport] PingInterval=3 PingTimeout=10 CompressionLimit=384
Есть ERP-система Галактика, был проброшен ключ, всё работает, установлена служба и для ключа установлена опция Auto-Use Device/Port. Но после перезагрузки сервера клиент usb ключ видит и он подключен, а ERP-система - нет. Постановка службы ключа ERP в зависимость от службы USB Hub Over Network USB Sharing ничего не меняет.
reg add HKLM\SYSTEM\CurrentControlSet\Services\HWServer /v DependOnService /t REG_MULTI_SZ /d rhclient /f
Решение - переключить службу ключа ERP в ручной запуск, а в планировщике сделать запуск скрипта при загрузке компьютера (система очень старая, powershell нет):
ping 127.0.0.1 -n 20 net start hwserver
Настройки, например, ограничения порта на IP-адрес надо делать на обеих нодах отдельно? Синхронизации настроек между нодами не существует?
Настройки, сделанные в NIO-EUSB на кластерном IP синхронизируются с backup-нодой.
Если задавать алиас для USB-устройства, служба USB перезапускается. Это влияет на ключи, которые уже работают? Повлияет ли это на доступность сервисов, которым нужен доступ к ключам?
В разделе Admin ACL в разделе Rename можно добавить доверенный IP, и можно с этого IP с клиента без рестарта переименовывать устройства.
Без рестарта только с клиента? Если делать на вкладке Ports на сервере, то в любом случае будет рестарт?
Переименовывать alias да, смена acl и description не требует рестарт.
Каким образом keepalived переключается с одной ноды на другую? Если он переключился на вторую ноду, то обратно он не переключается, даже если первая опять доступна?
Keepalived переключает мастер на слейв при потере мастером сети или недоступностью мастера. Ноды равнозначны, после возврата старого мастера в строй, переключений не происходит, дабы избежать лишние.
Ранее вы мне сообщили, что алиас можно переименовывать с клиента без перезапуска службы USB. Я переименовал его с клиента, но на самом сервере алиас остаётся пустым.
Конфигурирование проводилось на кластерном IP. Почему алиас не прописывается на устройстве?
Необходимо обновить веб-страницу (Ctrl-R). Полоса загрузки сверху каждые несколько секунд - это проверка информации о подключенных usb-портах.
Постоянно конфигурацию считывать смысла нет, переименование со стороны клиента это скорее как внешнее событие, нам можно подумать, как считывать его, если повлияло внешнее событие.
Где можно найти changelog прошивок?
https://nio-electronics.ru/ru/support/changes-server.txt