usbip

Средства управление сетью

Модераторы: Olej, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

usbip

Непрочитанное сообщение Olej » 24 июн 2019, 16:32

Укрощаем USB/IP
30 августа 2016 в 21:01
Регулярно возникает задача подключения USB-устройства к удаленному ПК через локальную сеть. Под катом изложена история моих поисков в этом направлении, и путь к готовому решению на базе open-source проекта USB/IP с описанием заботливо установленных различными людьми на этом пути препятствий, а также способов их обхода.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: usbip

Непрочитанное сообщение Olej » 24 июн 2019, 18:02

Debian 10

Код: Выделить всё

olej@ACER:~$ lsusb
Bus 003 Device 002: ID 8087:8000 Intel Corp. 
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 002: ID 1908:2310 GEMBIRD 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Вот тот GEMBIRD - это WEB камера, но вместе с встроенным микрофоном достаточно хорошего качества:
Изображение
Меня интересовало бы расшарить на сетевой хост не только видео камеру (с этим должно быть всё нормально), но и её микрофон:

Код: Выделить всё

olej@ACER:~$ lsusb -s 002:002 -vvv | grep -i audio
      bFunctionClass          1 Audio
      bInterfaceClass         1 Audio
      AudioControl Interface Descriptor:
      AudioControl Interface Descriptor:
      AudioControl Interface Descriptor:
can't get debug descriptor: Resource temporarily unavailable
      AudioControl Interface Descriptor:
      bInterfaceClass         1 Audio
      bInterfaceClass         1 Audio
      AudioStreaming Interface Descriptor:
      AudioStreaming Interface Descriptor:
       AudioStreaming Endpoint Descriptor:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: usbip

Непрочитанное сообщение Olej » 24 июн 2019, 18:04

Код: Выделить всё

olej@ACER:~$ aptitude search usbip
p   usbip                                                                 - USB device sharing system over IP network                                      

Код: Выделить всё

olej@ACER:~$ aptitude show usbip
Пакет: usbip                                     
Версия: 2.0+4.19.37-5
Состояние: не установлен
Приоритет: необязательный
Раздел: admin
Сопровождающий: Debian Kernel Team <debian-kernel@lists.debian.org>
Архитектура: amd64
Размер в распакованном виде: 418 k
Зависит: usbutils, libc6 (>= 2.7), libudev1 (>= 183), libwrap0 (>= 7.6-4~)
Описание: USB device sharing system over IP network
 USB/IP is a system for sharing USB devices over the network. 
 
 To share USB devices between computers with their full functionality, USB/IP encapsulates "USB requests" into IP packets and transmits them between
 computers. 
 
 Original USB device drivers and applications can be used for remote USB devices without any modification of them.  A computer can use remote USB devices
 as if they were directly attached. 
 
 Currently USB/IP provides no access control or encryption.  It should only be used in trusted environments. 
 
 This package provides the server component 'usbipd' and the client tool 'usbip'.
Домашняя страница: https://www.kernel.org/
Метки: implemented-in::c, role::program
В Debian 10 оно есть в стандартном дистрибутиве - не нужно корячиться...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: usbip

Непрочитанное сообщение Olej » 24 июн 2019, 18:06

Olej писал(а):В Debian 10 оно есть в стандартном дистрибутиве - не нужно корячиться...

Код: Выделить всё

olej@ACER:~$ sudo apt-get install usbip
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Следующие НОВЫЕ пакеты будут установлены:
  usbip
Обновлено 0 пакетов, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 307 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 418 kB.
Пол:1 http://deb.debian.org/debian buster/main amd64 usbip amd64 2.0+4.19.37-5 [307 kB]
Получено 307 kB за 0с (657 kB/s)
Выбор ранее не выбранного пакета usbip.
(Чтение базы данных … на данный момент установлено 384388 файлов и каталогов.)
Подготовка к распаковке …/usbip_2.0+4.19.37-5_amd64.deb …
Распаковывается usbip (2.0+4.19.37-5) …
Настраивается пакет usbip (2.0+4.19.37-5) …
Обрабатываются триггеры для man-db (2.8.5-2) …

Код: Выделить всё

olej@ACER:~$ which usbip

olej@ACER:~$ ls /usr/sbin/usbip

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: usbip

Непрочитанное сообщение Olej » 24 июн 2019, 18:08

Грузим:

Код: Выделить всё

root@ACER:~# modprobe usbip-core
root@ACER:~# modprobe usbip-host
root@ACER:~# modprobe vhci-hcd

Код: Выделить всё

root@ACER:~# lsmod | grep vhci
vhci_hcd               53248  0
usbip_core             32768  2 usbip_host,vhci_hcd
usbcore               290816  9 xhci_hcd,ehci_pci,snd_usb_audio,snd_usbmidi_lib,uvcvideo,ehci_hcd,xhci_pci,usbip_host,vhci_hcd
usb_common             16384  3 usbip_core,usbcore,vhci_hcd

Код: Выделить всё

root@ACER:~# modinfo vhci_hcd
filename:       /lib/modules/4.19.0-5-amd64/kernel/drivers/usb/usbip/vhci-hcd.ko
license:        GPL
description:    USB/IP 'Virtual' Host Controller (VHCI) Driver
author:         Takahiro Hirofuchi
depends:        usbip-core,usbcore,usb-common
retpoline:      Y
intree:         Y
name:           vhci_hcd
vermagic:       4.19.0-5-amd64 SMP mod_unload modversions 
sig_id:         PKCS#7
signer:         Debian Secure Boot CA
sig_key:        A7:46:8D:EF
sig_hashalgo:   sha256
signature:      27:AD:88:24:48:B4:7C:F5:9D:2A:4A:6C:0F:C0:71:88:92:E6:A4:C8:
		1B:CD:57:D9:4F:2D:C0:60:7B:FA:A2:44:CD:3E:3F:BC:D6:03:4F:1E:
		7C:F6:FC:0F:26:BC:D4:E8:23:52:A3:BC:77:94:F1:24:90:6D:21:C4:
		8E:89:92:CF:49:EA:D8:D8:95:A1:32:5B:5D:9E:22:F4:0F:0E:53:1D:
		30:8F:DD:4D:38:FB:2A:01:DB:3D:46:8A:26:13:02:47:A5:11:E4:1E:
		AE:BD:74:6E:F4:BE:0C:51:B4:03:2A:37:5B:50:70:63:60:57:FC:2D:
		02:08:B2:26:70:AE:3F:8D:9B:AA:7D:D9:F7:78:05:89:8E:D6:CB:F3:
		37:0B:71:0F:C2:27:DC:35:86:5E:A1:34:FE:D8:38:BC:44:26:60:18:
		3B:B2:47:C4:A1:AD:E5:34:6C:59:F7:9A:55:55:C2:3D:32:ED:02:63:
		8E:B1:8D:D7:57:68:15:DF:ED:EE:9E:10:6F:5D:6F:AC:BE:BC:16:EF:
		DE:2F:74:75:BB:3E:70:26:DF:20:5E:2F:A1:D0:92:AC:56:18:E1:EA:
		2E:F3:75:B0:A0:9B:EC:1A:7C:CD:39:8A:B9:8E:5E:25:D2:81:9F:32:
		81:2E:B0:7A:D4:0C:C9:F9:98:3A:4D:BD:6F:28:47:70

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: usbip

Непрочитанное сообщение Olej » 24 июн 2019, 18:10

Для того, чтобы впредь оно грузилось при старте системы...

Код: Выделить всё

root@ACER:~# cat /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
Правлю:

Код: Выделить всё

root@ACER:/etc# cat /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

# 24.06.2019
usbip-core
usbip-host
vhci-hcd
Но с этим как-раз можно не спешить - сделать когда проверить работоспособность всего...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: usbip

Непрочитанное сообщение Olej » 24 июн 2019, 18:17

Старт сервера расшаривания USB устройств:

Код: Выделить всё

root@ACER:/etc# usbipd -D

root@ACER:/etc# ps -A | grep usb
17752 ?        00:00:00 usbip_event
19847 ?        00:00:00 usbipd
Расшариваю свою WEB камеру ... но делаю это хитро:

Код: Выделить всё

olej@ACER:~$ lsusb -s 002:002 
Bus 002 Device 002: ID 1908:2310 GEMBIRD 

olej@ACER:~$ /usr/sbin/usbip list -l
 - busid 2-3 (1908:2310)
   GEMBIRD : unknown product (1908:2310)
ID для расшаривания (2-3) - это совсем не то, что мы знаем про своё USB устройство!

Код: Выделить всё

root@ACER:/etc# usbip bind --busid=2-3
usbip: info: bind device on busid 2-3: complete
Убеждаемся:

Код: Выделить всё

olej@ACER:~$ /usr/sbin/usbip list -l
 - busid 2-3 (1908:2310)
   GEMBIRD : unknown product (1908:2310)
Или так:

Код: Выделить всё

olej@ACER:~$ /usr/sbin/usbip list -r localhost
Exportable USB devices
======================
 - localhost
        2-3: GEMBIRD : unknown product (1908:2310)
           : /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3
           : Miscellaneous Device / ? / Interface Association (ef/02/01)
Всё!
На этом с серверной, экспортирующей частью - закончили.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: usbip

Непрочитанное сообщение Olej » 24 июн 2019, 18:22

Olej писал(а): Всё!
На этом с серверной, экспортирующей частью - закончили.
А вот импортировать USB устройство я хочу на совсем другом дистрибутиве, даже другого семейства:

Код: Выделить всё

[olej@dell .ssh]$ lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	Fedora
Description:	Fedora release 27 (Twenty Seven)
Release:	27
Codename:	TwentySeven

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/WaterBiz/Video$ cat usbip-fedora.hist 
[olej@dell ~]$ dnf search usbip
...    
Последняя проверка окончания срока действия метаданных: 0:00:00 назад, Пн 24 июн 2019 12:32:03.
================================================ Имя точное соответствие: usbip ================================================
usbip.i686 : USB/IP user-space
usbip.x86_64 : USB/IP user-space
==================================================== Имя совпадение: usbip =====================================================
usbip-devel.i686 : USB/IP headers and development libraries
usbip-devel.x86_64 : USB/IP headers and development libraries

Код: Выделить всё

[olej@dell ~]$ sudo dnf install usbip
[sudo] пароль для olej: 
Последняя проверка окончания срока действия метаданных: 0:00:47 назад, Пн 24 июн 2019 12:41:33.
Зависимости разрешены.
================================================================================================================================
 Пакет                      Архитектура                 Версия                               Репозиторий                  Размер
================================================================================================================================
Установка:
 usbip                      x86_64                      4.18.9-2.fc27                        updates                       68 k

Результат транзакции
================================================================================================================================
Установка  1 Пакет

Объем загрузки: 68 k
Объем изменений: 153 k
Продолжить? [д/Н]: y
Загрузка пакетов:
usbip-4.18.9-2.fc27.x86_64.rpm                                                                  188 kB/s |  68 kB     00:00    
--------------------------------------------------------------------------------------------------------------------------------
Общий размер                                                                                     64 kB/s |  68 kB     00:01     
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно
Выполнение транзакции
  Подготовка       :                                                                                                        1/1 
  Установка        : usbip-4.18.9-2.fc27.x86_64                                                                             1/1 
  Запуск скриптлета: usbip-4.18.9-2.fc27.x86_64                                                                             1/1 
Running as unit: run-r207dc7c31a2447a1905bb6ecf563de41.service
  Проверка         : usbip-4.18.9-2.fc27.x86_64                                                                             1/1 

Установлено:
  usbip.x86_64 4.18.9-2.fc27                                                                                                    

Выполнено!

Код: Выделить всё

[olej@dell ~]$ ls /usr/sbin/usbip
/usr/sbin/usbip

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: usbip

Непрочитанное сообщение Olej » 24 июн 2019, 18:25

Olej писал(а): А вот импортировать USB устройство я хочу на совсем другом дистрибутиве, даже другого семейства:
Модули ядра ещё не загружены!

Код: Выделить всё

[olej@dell ~]$ lsusb
Bus 002 Device 005: ID 0a5c:5800 Broadcom Corp. BCM5880 Secure Applications Processor
Bus 002 Device 004: ID 413c:8187 Dell Computer Corp. DW375 Bluetooth Module
Bus 002 Device 003: ID 0d8d:0516 Promotion & Display Technology, Ltd 
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Но в списке возможных для экспорта устройств:

Код: Выделить всё

[olej@dell ~]$ /usr/sbin/usbip list -r 192.168.1.103
Exportable USB devices
======================
 - 192.168.1.103
        2-3: GEMBIRD : unknown product (1908:2310)
           : /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3
           : Miscellaneous Device / ? / Interface Association (ef/02/01)


Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: usbip

Непрочитанное сообщение Olej » 24 июн 2019, 18:26

Olej писал(а): Модули ядра ещё не загружены!

Код: Выделить всё

[olej@dell ~]$ sudo modprobe usbip-core
[sudo] пароль для olej: 

[olej@dell ~]$ sudo modprobe usbip-host

[olej@dell ~]$ sudo modprobe vhci-hcd

[olej@dell ~]$ lsmod | grep usbip
usbip_host             32768  0
usbip_core             32768  2 usbip_host,vhci_hcd

Код: Выделить всё

olej@ACER:~$ /usr/sbin/usbip help
usage: usbip [--debug] [--log] [--tcp-port PORT] [version]
             [help] <command> <args>

  attach     Attach a remote USB device
  detach     Detach a remote USB device
  list       List exportable or local USB devices
  bind       Bind device to usbip-host.ko
  unbind     Unbind device from usbip-host.ko
  port       Show imported USB devices

Код: Выделить всё

[olej@dell ~]$ /usr/sbin/usbip attach -r 192.168.1.103 -b 2-3
usbip: error: import device

[olej@dell ~]$ sudo /usr/sbin/usbip attach -r 192.168.1.103 -b 2-3
[sudo] пароль для olej: 

[olej@dell ~]$ /usr/sbin/usbip port
Imported USB devices
====================
libusbip: error: fopen
libusbip: error: read_record
Port 00: <Port in Use> at High Speed(480Mbps)
       GEMBIRD : unknown product (1908:2310)
       3-1 -> unknown host, remote port and remote busid
           -> remote bus/dev 002/002
И вот привычный список USB устройств на этом компьютере:

Код: Выделить всё

[olej@dell .ssh]$ lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 1908:2310 GEMBIRD 
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 005: ID 0a5c:5800 Broadcom Corp. BCM5880 Secure Applications Processor
Bus 002 Device 004: ID 413c:8187 Dell Computer Corp. DW375 Bluetooth Module
Bus 002 Device 003: ID 0d8d:0516 Promotion & Display Technology, Ltd 
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

У компьютера "появилась" WEB камера GEMBIRD, которой у него отродясь не было!

Ответить

Вернуться в «Сеть, сетевые службы и сервисы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость