Страница 1 из 2
usbip
Добавлено: 24 июн 2019, 16:32
Olej
Укрощаем USB/IP
30 августа 2016 в 21:01
Регулярно возникает задача подключения USB-устройства к удаленному ПК через локальную сеть. Под катом изложена история моих поисков в этом направлении, и путь к готовому решению на базе open-source проекта USB/IP с описанием заботливо установленных различными людьми на этом пути препятствий, а также способов их обхода.
Re: usbip
Добавлено: 24 июн 2019, 18:02
Olej
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:
Re: usbip
Добавлено: 24 июн 2019, 18:04
Olej
Код: Выделить всё
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 оно есть в стандартном дистрибутиве - не нужно корячиться...
Re: usbip
Добавлено: 24 июн 2019, 18:06
Olej
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
Re: usbip
Добавлено: 24 июн 2019, 18:08
Olej
Грузим:
Код: Выделить всё
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
Re: usbip
Добавлено: 24 июн 2019, 18:10
Olej
Для того, чтобы впредь оно грузилось при старте системы...
Код: Выделить всё
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
Но с этим как-раз можно не спешить - сделать когда проверить работоспособность всего...
Re: usbip
Добавлено: 24 июн 2019, 18:17
Olej
Старт сервера расшаривания 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)
Всё!
На этом с серверной, экспортирующей частью - закончили.
Re: usbip
Добавлено: 24 июн 2019, 18:22
Olej
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
Re: usbip
Добавлено: 24 июн 2019, 18:25
Olej
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)
Re: usbip
Добавлено: 24 июн 2019, 18:26
Olej
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, которой у него отродясь не было!