Usb anywhere 14 linux

Подключение USB концентратора Digi AnywhereUSB 24 Plus к Debian GNU/Linux 11 (Bullseye)

Возникла задача трансляции лицензионного USB-ключа Guardant, подключенного к USB концентратору Digi AnywhereUSB 24 Plus, в виртуальный сервер на базе Debian GNU/Linux 11. В силу особенностей реализации утилиты «AnywhereUSB Manager» для Linux и нашего понимания того, что полновесная графическая среда на Linux-сервере — это излишество, выполнение этой задачи оказалось немного более сложным, чем просто «потыкать мышкой».

Где найти драйвер Digi AnywhereUSB 24 Plus для Linux

Есть две лаконичные статьи Digi KB: «Does the AnywhereUSB Support Linux?» и «Are there any Linux or iOS drivers for the AnywhereUSB products?», говорящие о том, что работа USB-концентраторов Digi AnywhereUSB в Linux не поддерживается. Но это статьи 2019 года, и, вероятно, они относятся в предыдущему поколению устройств линейки AnywhereUSB G1 и G2. В более свежей статье «Digi AnywhereUSB 24 Plus Linux limitations» мы можем найти информацию о том, что Linux официально поддерживается на 2-портовых и 8-портовых устройствах современной линейки AnywhereUSB Plus. Здесь же отмечено, что, на самом деле, поддерживается и 24-портовая модель, но с учётом ограничения, что на один удалённый хост можно транслировать не более 8 USB-портов.

Как ни странно, на сайте Digi в разделе драйверов для AnywhereUSB 24 Plus мы не найдём драйвера для Linux. Но если перейдём на страницу Digi AnywhereUSB 8 Plus, то обнаружим, что там присутствует возможность загрузки «AnywhereUSB Manager» для Linux.

Download Linux Driver for Digi AnywhereUSB 8 Plus

На данный момент времени, для загрузки доступна версия Linux Version 0.6 (August 31, 2021) / Beta Release. В архиве 40003060_B.tgz мы найдём 2 пакета — 40003060_B_amd64.deb и 40003060_B-1.x86_64.rpm.

Установка AnywhereUSB Manager на Linux Debian

В файле заметок о выпуске (93001346_B.pdf) указано, что требуется ядро Linux версии 4.13 и выше. Последний протестированный дистрибутив Debian10.9. Мы рассмотрим пример установки на Debian 11.7.

Чтобы установить deb-пакет, можно вручную скопировать файл пакета на наш Linux сервер и выполнить его установку через утилиту dpkg:

# dpkg -i ./40003060_B_amd64.deb

Но в нашем распоряжении имеется локальный репозиторий, и поэтому мы разместим пакет там, предварительно переименовав его в более вменяемый вид (например, awusbmanager_0.6_amd64.deb). В этом случае выполнить установку пакета на сервер мы сможем из локального репозитория через apt:

# apt-get install awusbmanager

На Debian 11 пакет установился без каких-либо проблем, и теперь давайте посмотрим какие в системе произошли изменения в результате установки пакета.

1) В системе должен быть доступен драйвер vhci_hcd, представленный в виде модуля ядра. Проверяем загрузку модуля:

# modinfo vhci_hcd filename: /lib/modules/5.10.0-22-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: 5.10.0-22-amd64 SMP mod_unload modversions sig_id: PKCS#7 signer: Debian Secure Boot CA sig_key: 32:A0:28:7F:84:1A:03:6F:A3:93:C1:E0:65:C4:3A:E6:B2:42:26:43 sig_hashalgo: sha256 signature: 39:8C:8D:BF:77. 

2) Должен появиться файл 70-awusb.rules, описывающий правила udev:

# cat /etc/udev/rules.d/70-awusb.rules SUBSYSTEM=="platform", DRIVERS=="vhci_hcd", RUN+="/bin/chgrp awusb /sys%p/attach" SUBSYSTEM=="platform", DRIVERS=="vhci_hcd", RUN+="/bin/chmod 0220 /sys%p/attach" SUBSYSTEM=="platform", DRIVERS=="vhci_hcd", RUN+="/bin/chgrp awusb /sys%p/detach" SUBSYSTEM=="platform", DRIVERS=="vhci_hcd", RUN+="/bin/chmod 0220 /sys%p/detach"

3) При успешной загрузке драйвера в системе мы должны увидеть 8 устройств «USB/IP Virtual Host Controller» (vhci_hcd.*):

# ls -la /sys/devices/platform/ | grep vhci_hcd drwxr-xr-x 5 root root 0 May 5 12:23 vhci_hcd.0 drwxr-xr-x 5 root root 0 May 5 12:23 vhci_hcd.1 drwxr-xr-x 5 root root 0 May 5 12:23 vhci_hcd.2 drwxr-xr-x 5 root root 0 May 5 12:23 vhci_hcd.3 drwxr-xr-x 5 root root 0 May 5 12:23 vhci_hcd.4 drwxr-xr-x 5 root root 0 May 5 12:23 vhci_hcd.5 drwxr-xr-x 5 root root 0 May 5 12:23 vhci_hcd.6 drwxr-xr-x 5 root root 0 May 5 12:23 vhci_hcd.7

4) Должна появится локальная группа awusb. Предполагается, что для получения доступа к транслируемым USB-устройствам непривилегированный пользователь должен быть включен в эту группу командой вида sudo usermod -a -G awusb )

# getent group awusb awusb:x:1001:

5) Ну и, наконец, сам исполняемый файл «AnywhereUSB Manager» сможем найти по пути /usr/sbin/awusbmanager.

Читайте также:  Arch linux pacman команды
Подключение AnywhereUSB Manager к USB-концентратору

Ключевой проблемой в нашем случае является то, что awusbmanager — это программа, требующая наличия графической среды на базе X11. То есть попытки запуска awusbmanager в нашей ситуации будут приводить к ошибкам вызова отсутствующих библиотек, так как на нашей серверной системе полноценной графической оболочки нет и не планируется.

Вопрос, заданный на официальном форуме поддержки Digi пока остался без ответа. Но, понимая то, что текущая версия «AnywhereUSB Manager» для Linux уже 2 года находится в стадии бета-релиза, на оперативное решение вопроса рассчитывать не приходится.

Проведя ряд экспериментов и наблюдая за поведением утилиты awusbmanager на тестовом сервере с активированной графической средой Gnome, была апробирована схема с запуском в среде без полноценной графической оболочки.

Запуск программы, требующей графической среды в окружении без полноценной графической среды будем выполнять с помощью утилиты xvfb-run из пакета xvfb. Выполним установку пакетов xvfb и libgtk2.0-0 (его требует сам awusbmanager), в ходе которой подтянется около 90 дополнительных пакетов размером примерно 280 MB:

# apt-get install xvfb libgtk2.0-0

После этого с помощью xvfb-run попробуем вызвать awusbmanager в режиме справки. При этом, как минимум, мы не должны получить никаких явных ошибок.

# /usr/bin/xvfb-run /usr/sbin/awusbmanager --help

Running awusbmanager with xvfb-run

Теперь нам следует подготовить специальный каталог, в котором будет хранится настроенный нами конфигурационный файл для работы awusbmanager.

Если запускать awusbmanager в графическом режиме из под учётной записи root-пользователя и конфигурировать в этом режиме подключение к USB-концентратору, то в конфигурации по умолчанию будет создана следующая структура файлов:

/root/.AnywhereUSB/ ├── awusbcerts │ └── AW24-000000.pem ├── awusb_client_cert.pem ├── awusb.ini └── awusb.log

Наша задача – воспроизвести эту структуру, не имея доступа к графическому режиму работы awusbmanager, отвязавшись при этом от профиля root.

Читайте также:  Лабораторная работа настройка linux

1) Создадим в удобном для нас месте каталог для хранения конфигурации:

2) Создадим главный конфигурационный файл:

# nano /etc/awusbmanager/awusb.ini

Содержимое файла должно иметь следующий формат:

[General] AutoFind=0 MainFrameWidth=640 MainFrameHeight=480 MainFrameX=0 MainFrameY=27 AutoMinimize=0 HideUnathorized=0 AutoRegisterHubCert=1 AutoRefreshLookupPeriod=30 BonjourLookupTimeout=4 [Settings] ClientId=vss2L!nuX ManualHubs=digi01.holding.com:18574 [Transport] KeepAlivePeriod=3 KeepAliveTimeout=10 [AutoConnect] AW24-000000.10=1

Секции [General] и [Transport] можно оставить без изменений.

В секции [Settings] изменяем ClientId (этот же ID должен быть указан на USB-концентраторе при регистрации клиента). В ManualHubs пропишем адрес и порт USB-концентратора, к которому подключается клиент.

3) Регистрируем нового клиента в веб-интерфейсе USB-концентратора в разделе System > AnywhereUSB Configuration.

Adding a New Client to AnywhereUSB Configuration

4) Выполняем первый запуск awusbmanager в рабочем режиме:

# /usr/bin/xvfb-run /usr/sbin/awusbmanager --log=OSEventLog --autofind-off --config=/etc/awusbmanager/awusb.ini

Пояснения по опциям запуска:

Опцию —log мы используем для указания того, что писать лог процесса awusbmanager следует в стандартный системный лог syslog. Если этого не указать в явном виде, то файл лога awusb.log будет создан в каталоге /root/.AnywhereUSB.

Опцию —autofind-off используем для отключения ненужного нам опроса сети на предмет обнаружения концентраторов.

Опцию —config используем для указания размещения настроенного нами ранее конфигурационного файла awusb.ini . Если этого не указать в явном виде, то процесс awusbmanager будет искать файл в каталоге /root/.AnywhereUSB.

Running awusbmanager with xvfb-run

Как минимум, при запуске мы не должны получить никаких явных ошибок.

При этом первом запуске произойдёт следующее:

1) В каталоге с конфигурационным файлом автоматически сгенерируется само-подписанный сертификат клиента awusb_client_cert.pem , затем будет предпринята попытка связаться с концентратором и выполнить привязку с использованием сертификата клиента. Если процедура привязки клиента к концентратору прошла успешно, то в веб-консоли концентратора на странице управления клиентами мы увидим изменение статуса клиентского сертификата на Available:

Client certificate in AnywhereUSB Configuration is available

2) В случае успешной связки клиента и концентратора в п.1, в каталоге с конфигурационным файлом появится подкаталог /awusbcerts и в него скопируется сертификат концентратора с именем в формате «.pem»

File structure of AnywhereUSB Manager on Linux

Так как мы запустили awusbmanager с опцией логирования в стандартный системный лог, можем заглянуть в syslog и увидеть информацию о генерации сертификата и успешном подключении к концентратору.

# cat /var/log/syslog | grep AnywhereUSB . AnywhereUSB Manager: AnywhereUSB Manager 3.1.20.1 starting (Compiled: Dec 22 2020 23:37:49) . AnywhereUSB Manager: Client OS is Linux 5.10.0-22-amd64 x86_64 . AnywhereUSB Manager: Using config at /etc/awusbmanager/awusb.ini . AnywhereUSB Manager: Failed to connect to session manager: SESSION_MANAGER environment variable not defined . AnywhereUSB Manager: Client certificate not found, generating self-signed cert . AnywhereUSB Manager: Using client cert /etc/awusbmanager/awusb_client_cert.pem . AnywhereUSB Manager: digi01.holding.com:18574 connected as connection 1 (secure)

Так же на стороне концентратора в разделе Status > AnywhereUSB в блоке «Groups in Use» мы должны увидеть активную клиентскую сессию с нашего Linux-сервера.

Читайте также:  Linux newest file in directory

View connected clients in the

На этом базовую настройку awusbmanager можно считать завершённой, но запуск awusbmanager при этом мы выполняли только вручную и нам потребуется дополнительно решить вопрос автоматизации запуска.

Настройка службы systemd для AnywhereUSB Manager

Чтобы решить задачу автоматизации запуска процесса awusbmanager в ходе загрузки/перезагрузки сервера, создадим простой юнит systemd:

# nano /etc/systemd/system/awusbmanager.service

Содержимое конфигурации юнита:

[Unit] Description=Digi AnywhereUSB Manager Service After=network.target Requires=network.target [Service] Type=simple User=root ExecStart=/usr/bin/xvfb-run /usr/sbin/awusbmanager --log=OSEventLog --autofind-off --config=/etc/awusbmanager/awusb.ini [Install] WantedBy=multi-user.target

Включаем автоматический запуск службы и выполняем её запуск (перед запуском службы, процесс, запущенный ранее нами вручную должен быть прерван):

# systemctl enable awusbmanager.service # systemctl start awusbmanager.service

Проверяем состояние службы:

# systemctl status awusbmanager.service

systemd service status for awusbmanager

Успешность подключения к концентратору при запуске службы, как и ранее, мы можем посмотреть в логе /var/log/syslog , а также на веб-консоли концентратора.

В качестве дополнительной проверки можем перезагрузить сервер, чтобы удостовериться в том, что в ходе загрузки системы наша служба успешно запускается в автоматическом режиме.

Подключение USB-ключа в порт концентратора AnywhereUSB Plus

По условиям нашей задачи, с помощью концентратора AnywhereUSB Plus нужно транслировать лицензионный USB-ключ Guardant, поэтому настало время подключить к порту концентратора этот ключ.

При подключении USB-ключа, для начала убедимся в том, что на стороне концентратора в разделе Status > AnywhereUSB в блоке «USB Devices» корректно отображается информация об этом ключе:

Viewing Connected USB Devices on AnywhereUSB Hub

Проверим сообщения ядра Linux об обнаружении нового USB-устройства:

Displaying Linux kernel messages when connecting a USB device to an AnywhereUSB hub

Как видим, ключ успешно обнаружен и подключен к системе, а благодаря ранее настроенной нами конфигурации awusb.ini и службе awusbmanager.service монтирование этого ключа должно будет выполняться в автоматическом режиме при каждой загрузке/перезагрузке нашего виртуального Linux-сервера.

Для корректной работы приложений с рассматриваемым в нашем случае USB-ключом Guardant, в Linux системе потребуется дополнительная конфигурация, но это, как говорится, уже совсем другая история.

Источник

Оцените статью
Adblock
detector