Ethernet over usb linux

USB/IP Project

USB Request over IP Network

USB/IP Project aims to develop a general USB device sharing system over IP network. To share USB devices between computers with their full functionality, USB/IP encapsulates «USB I/O messages» into TCP/IP payloads and transmits them between computers.

Feb 21, 2011: Updated windows client driver to allow x64 operation. We have received signed versions from the ReactOS project. (This is needed to allow installation without workarounds on Win7/Vista x64.) ReactOS has the proper code signing certificate and offer its use to other open source projects React OS Driver Signing. Great initiative!

Jul 10, 2009: The preview release of usbip windows client is now available. See screenshots!

Jan 13, 2009: The latest drivers were recently included in the staging tree of Linux.

about

The USB/IP Project aims to develop a general USB device sharing system over IP network. To share USB devices between computers with their full functionality, USB/IP encapsulates «USB I/O messages» into TCP/IP payloads and transmits them between computers. Original USB device drivers and applications can be also used for remote USB devices without any modification of them. A computer can use remote USB devices as if they were directly attached; for example, we can .

  • USB storage devices: fdisk, mkfs, mount/umount, file operations, play a DVD movie and record a DVD-R media.
  • USB keyboards and USB mice: use with linux console and X Window System.
  • USB webcams and USB speakers: view webcam, capture image data and play some music.
  • USB printers, USB scanners, USB serial converters and USB Ethernet interfaces: ok, work fine.

It is currently implemented as Linux device drivers and available under the open source license GPL. Its I/O performance is enough practical in local area network for all types of devices, including isochronous devices, without any modification of Linux-original USB device drivers.

Documentation

Overview

In a client host, the VHCI (Virtual Host Controller Interface) driver is implemented as a USB host controller driver. The VHCI driver emulates a real USB host controller interface for virtual attachment/detachment, enumeration and initialization of remote USB devices. It encapsulates USB request blocks and then transmits USB/IP requests to remote server hosts. In a server host, the Stub driver is implemented as a USB per-device driver. The Stub driver decapsulates USB/IP requests into USB requests and then submit them to real USB devices.

USB/IP Design Overview

  • USB/IP — a Peripheral Bus Extension for Device Sharing over IP Network. Takahiro Hirofuchi, Eiji Kawai, Kazutoshi Fujikawa, and Hideki Sunahara. In the Proceedings of the FREENIX Track: USENIX Annual Technical Conference, pp. 47-60, April 2005. (Awarded FREENIX Track Best Paper!)
  • USB/IP: A Transparent Device Sharing Technology over IP Network. Takahiro Hirofuchi, Eiji Kawai, Kazutoshi Fujikawa, and Hideki Sunahara. IPSJ Transactions on Advanced Computing Systems, Vol. 46, No. SIG11(ACS11), pp. 349-361, August 2005. (Also appeared in IPSJ Digital Courier.)

  • «client» and «server» are confusing.
    A server host has physical USB devices which are exported to a client host. In the server host, load usbip_common_mod.ko and vhci-hcd.ko, and then use usbipd. The client host imports a USB device virtually; the client host may not have a real USB device. In the client host, load usbip_common_mod.ko and usbip.ko, and then use usbip.
  • USB/IP is stable?
    It basically works for most USB devices under LAN (Gb Ethernet is better). It has minimum features (e.g., attach/detach) and your contribution is welcome.
  • Is there a MS Windows client of USB/IP ?
    There is one now, it is in the early stage of development, you can try it. If it can’t work for your USB devices, please report bug to us.
  • Does your USB/IP implementation have compatibility with other similar products?
    No, currently.

Screenshots

usbview

A remote USB webcam with an ov511 chip is virtually attached to a computer. We can see ov511 under USB VHCI Root Hub.

Desktop

xawtv is working for a remote USB webcam. A remote USB-HDD is also attached to the computer.

Download

Linux

For Linux, the source code of usbip was merged into the staging tree, and finally has been moved to the mainline since Linux-3.17. Development is ongoing in the kernel community, not here. Linux distributions will provide binary packages of usbip. Just for historical records, the project page keeps old download files of the Linux version. Do not use them.

Windows

For Windows, the precompiled client-side program is available from the project page. You need a Linux machine for the server side.

  • File Releases and its RSS

See the git repository for the latest source code. Although, development has not been active lately. Feel free to fork the project.

Install and Usage

Mailing List

  • usbip-devel (the character) lists.sourceforge.net
  • Subscribe/Unsubscribe & Archives

Public Forum

  • Project Summary in sourceforge.net
    • RSS feeds | Public Forum | Mailing List
  • Old project home page mirrored from http://usbip.naist.jp/

Normally, please use the mailing list and forum (Recommended).

Источник

Настройка USB-сервера Ubuntu на базе usbip

В инструкции описан процесс настройки бесплатного решения для редиректа USB устройства с сервера на любой другой компьютер сети. Это может пригодиться, например, для проброса USB токена на виртуальную машину или несетевого принтера. В рамках примера сервер будет на Linux Ubuntu, клиент — на Windows (проверено на 7, 10, Server 2008 и 2012).

Установка и запуск

В Ubuntu установка инструмента проброса USB выполняется следующей командой:

apt-get install linux-tools-`uname -r`

* в моем случае была выполнена установка linux-tools-4.4.0-128-generic, где 4.4.0-128-generic — версия ядра, используемого в Ubuntu.

Подгружаем модули драйверов USB:

Запускаем usbip в качестве демона:

Смотрим список подключенных USB устройств:

root@usb:/usr/src# usbip list -l
— busid 2-1.3 (8564:1000)
Transcend Information, Inc. : JetFlash (8564:1000)

— busid 2-1.4 (1c4f:0026)
SiGma Micro : Keyboard (1c4f:0026)

Теперь можно расшарить флешку:

usbip bind -b 2-1.3

Должны увидеть на подобие:

usbip: info: bind device on busid 2-1.3: complete

Настройка клиента

Выполним настройку на базе операционной системы Windows.

Скачиваем драйвер и утилиту для Windows. Распаковываем архив usbip.zip.

Открываем диспетчер устройств (команда devmgmt.msc или правой кнопкой по Этот компьютер в проводнике — УправлениеДиспетчер устройств).

Кликаем по ДействиеУстановить старое устройство:

Выбираем ручную установку устройства — показать все устройства — Установка с диска и выбираем файл USBIPEnum.inf (находится в каталоге usbip, который мы распаковали ранее).

Будет обнаружено устройство USB/IP Enumerator — кликаем Далее, чтобы его установить. Мы должны его увидеть среди системных устройств.

Теперь открываем командную строку (cmd.exe) и переходим в распакованный каталог, например:

* где C:\Users\user\Downloads\usbip — полный путь до папки.

Смотрим список расшаренных USB устройств на сервере:

usbip -l 192.168.0.15

* где 192.168.0.15 — IP-адрес сервера USB.

Мы получим ответ, на подобие этого:

C:\Users\user\Downloads\usbip>usbip -l 192.168.0.15
— 192.168.0.15
2-1.3: unknown vendor : unknown product (8564:1000)
: /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3
: (Defined at Interface level) (00/00/00)

Теперь можно примонтировать устройство:

usbip.exe -a 192.168.0.15 2-1.3

* если увидим ошибку . cannot find device, переходим к решению.

Автозапуск

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

Автозапуск сервера

Добавляем модули в автозапуск:

usbip-core
usbip-host
vhci-hcd

Создаем юнит в systemd:

[Service]
ExecStart=/scripts/usbipd
Type=oneshot
RemainAfterExit=yes

Перечитываем конфигурацию systemd и разрешаем запуск созданного нами юнита:

systemctl enable usbipd

Создаем каталог хранения скрипта и сам скрипт:

usbipd -D
usbip bind -b $bindID

usbip attach —remote=localhost —busid=$bindID
sleep 2
usbip detach —port=00

Разрешаем запуск скрипта:

chmod +x /scripts/usbipd

systemctl start usbipd

systemctl status usbipd

Для окончательного тестирования можно перезагрузить сервер.

Автозапуск клиента Windows

Пишем небольшой батник:

cd C:\Users\user\Downloads\usbip
usbip.exe -a 192.168.0.15 2-1.3

* C:\Users\user\Downloads\usbip — путь, где хранится распакованная утилита; 192.168.0.15 — адрес сервера USB; 2-1.3 — идентификатор USB устройства на сервере.

Сохраняем скрипт с расширением bat или cmd. Запускаем планировщик заданий и добавляем новую задачу.

На вкладке Общие отмечаем Выполнять вне зависимости от регистрации пользователя и ставим галочку Выполнить с наивысшими правами:

В триггерах выбираем При запуске системы:

На вкладке Действия выбираем Запуск программы и прописываем путь до скрипта, который мы сохранили ранее:

На вкладке Параметры ставим галочку При сбое выполнения перезапускать через и снимаем галочку Останавливать задачу, выполняемую дольше:

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

Возможные проблемы

1. usbip_common_mod.ko and usbip.ko must be loaded

Ошибка появляется при попытке выполнить usbipd -D.

Причина: был установлен пакет usbip вместо linux-tools- .

Решение: удаляем usbip:

apt-get remove usbip

Ставим нужный пакет:

apt-get install linux-tools-`uname -r`

2. /usr/sbin/usbipd: No such file or directory

Данная ошибка также появляется при попытке выполнить usbipd -D.

Причина: Нужный бинарник для запуска находится по другому пути — /usr/bin/usbipd.

Решение: создаем симлинк:

ln -s /usr/bin/usbipd /usr/sbin/usbipd

3. usbip: error: failed to open /usr/share/hwdata//usb.ids

Выскакивает при попытке посмотреть список устройств командой usbip list -l.

Причина: необходимый файл usb.ids находится в другой директории.

Решение: создаем каталог /usr/share/hwdata:

Создаем симлинк на существующий файл:

ln -s /usr/share/misc/usb.ids /usr/share/hwdata/usb.ids

4. usbip err . recv op_common

При попытке запустить утилиту в командной строке Windows получаем ошибки:

usbip err: usbip_network.c: 121 (usbip_recv_op_common) recv op_common, -1
usbip err: usbip.c: 216 (query_exported_devices) recv op_common
usbip err: usbip.c: 288 (show_exported_devices) query

Причина: ошибка в бинарном файле для Windows.

Решение: открыть exe-файл в HEX редакторе, например, HxD. И в адресах смещения 00000CBC и 00000E0A заменить 06 на 11:

5. (attach_device) cannot find device

При попытке монтирования устройства в Windows, выскакивает ошибка с похожим текстом:

usbip err: usbip_windows.c: 829 (attach_device) cannot find device

Причина: недоработка серверного ПО — при расшаривании USB не считывается количество дескрипторов.

Решение: примонтировать устройство на сервере с последующим отмонтированием:

usbip attach —remote=localhost —busid=2-1.3

* в моем случае устройство имеет идентификатор 2-1.3.

* смотрим номер порта, на котором висит наше примонтированное устройство.

usbip detach —port=00

6. udev_device_new_from_subsystem_sysname failed

При попытке монтирования устройства на клиенте получаем ошибку с текстом:

libusbip: error: udev_device_new_from_subsystem_sysname failed
usbip: error: open vhci_driver
usbip: error: query

Причина: не подключен модуль vhci-hcd.

Решение: разово выполняем команду:

и добавляем в файл /etc/modules строку vhci-hcd.

Источник

Установка EoU на Debian, Ubuntu, Linux Mint

Сначала давайте разберемся, что такое EoU. EoU — это Ethernet Over Usb. Данная утилита предназначена для организации канала между ОФД и ККТ при подключении по USB. В большинстве, стандартных, случаев используется именно данный канал, если только вы не устанавливаете прямой канал Ethernet или нет цели сетевого использования ККТ.
После установки драйверов ККТ, в нашем случае ATOL 10, запуска и тестирования кассы, переходим к установке и настройке службы EoU.
Сначала создаем нового пользователя с ограниченными права, нам же не нужно, чтобы пользователь сидел под администратором и мог менять настройки и работу системы. Назовем нашего пользователя POS-1.
Скачиваем архив с одноименным названием из Центра Загрузок.
В архиве находятся различные версии утилиты. Выбираем последнюю и переходим в директорию нужной нам архитектуры.

Разрядность необходимо выбирать исходя из разрядности операционной системы, а не приложения для кассы (как правило, 1С) и драйверов ККТ. Если у вас операционная система 64bit, то и выбирать нужно именно эту разрядность.

Войдя в каталог мы обнаружим различные бинарные файлы, библиотеки и файл настроек. Именно файл настроек settings.xml нас и интересует. Открываем файл настроек любым текстовым редактором и в начале документа должна присутствовать секция:

Эта опция включает автоматическое обнаружение касс на Linux.

Теперь нам необходимо разместить файлы в нужных местах системы и настроить работу утилиты в качестве сервиса.
В открытой папке выбираем «Файл», и в выпавшем контекстном меню выбираем открыть как Администратор, и запустить терминал от имени администратора. Это нам необходимо чтобы не мучиться с провисанием путей для команд, а так же для разблокировки файлов, чтобы они не выдавали ошибок запрета тех или иных действий при работе с ними.
Сначала создадим директорию /etc/ATOL/EoU и скопируем туда файл настроек settings.xml:

Саму утилиту EoU расположим в любом месте, но в нашем примере это будет директория opt:

Дадим файлам права на исполнение:

Зарегистрируем EoU в качестве сервиса:

Теперь нам нужно добавить службу в автозагрузку и обеспечить управление службой посредством системы. Для этого нам нужно написать юнит для systemd.
Создаем файл юнита:

Откроем его для редактирование и вносим настройки:

Сохраняем файл юнита и добавляем его в автозагрузку:

Теперь мы можем управлять службой используя привычные команды:

Для проверки автоматического запуска службы EoU и обнаружения утилитой касс — перезагружаем систему. После загрузки Linux ищем лог работы службы, который располагается в /var/log/EoU и проверяем запуск утилиты, обнаружение касс и обмен данными с ОФД.
Можем перезагрузить систему и убедиться, что служба запускается автоматически.
На этом установка и настройка утилиты EoU окончена, и можно начинать работать.
Если вы столкнулись с проблемой установки утилиты EoU на Debian-подобные системы, вы можете обратиться к нам за помощью.

Новость отредактировал: Легион — 12 августа 2020
Причина: Обновление информации о новых правилах в работе драйвера ATOL 10

Источник

Читайте также:  Не открывается pycharm windows 10
Оцените статью