These instructions are provided "as-is", have been tested and proven working at the time of writing. For any support or issues, an Expert Agreement will be required.
- To install AnywhereUSB Manager on Linux please follow the Digi website and download the Linux package at this URL:
https://hub.digi.com/support/products/infrastructure-management/digi-anywhereusb-8-plus/?path=/support/asset-collection/anywhere-usb-plus-os-specific-drivers
TAR compressed archive contains .DEB and .RPM files
- This example will install on Ubuntu and use a DEB package file. Copy the .DEB file to your Linux server and install it with the dpkg utility:
root@otp:/home/rna# dpkg -i ./40003060_B_amd64.deb
Selecting previously unselected package awusbmanager.
(Reading database ... 72301 files and directories currently installed.)
Preparing to unpack ./40003060_B_amd64.deb ...
Unpacking awusbmanager (0.6) ...
Setting up awusbmanager (0.6) ...
Prerequisites
- Kernel version >= 4.13
- vhci_hcd driver available for the running kernel.
To verify run the command:
modinfo vhci_hcd
This command will display information about the module, rather than “Module vhci_hcd
not found”
root@otp:/home/rna# modinfo vhci_hcd
filename: /lib/modules/5.4.0-148-generic/kernel/drivers/usb/usbip/vhci-hcd.ko
license: GPL
description: USB/IP 'Virtual' Host Controller (VHCI) Driver
author: Takahiro Hirofuchi
srcversion: F715FD76638E24FF10BDBA2
depends: usbip-core
retpoline: Y
intree: Y
name: vhci_hcd
vermagic: 5.4.0-148-generic SMP mod_unload modversions
If the Manager is installed from the DEB or RPM package, the process will automatically create the "awusb" Linux group (if it doesn't already exist). In order to have full access to the AnywhereUSB® Plus devices, Manager users must belong to this group.
To add a user to the awusb group: sudo usermod -a -G awusb where "" should be replaced with the name of the user who will run the Manager.
root@otp:/home/rna# getent group awusb
awusb:x:1001:
We see executable file in the directory:
rna@otp:~$ locate awusbmanager
/usr/sbin/awusbmanager
- The key problem is that awusbmanager is a program that requires an X11-based graphical environment. Attempts to launch awusbmanager will lead to errors in calling missing libraries since our server system has no full-fledged graphical shell.
We will run a manager that requires a graphical environment in an environment without a full-fledged graphical environment using the xvfb-run utility from the xvfb package.
Let's install the xvfb and libgtk2.0-0 packages.
root@otp:/home/rna# apt-get install xvfb libgtk2.0-0
After that, using xvfb-run, we will try to call awusbmanager in help mode.
root@otp:/home/rna# /usr/bin/xvfb-run /usr/sbin/awusbmanager --help
AnywhereUSB Manager, ver 3.1.20.1
Usage: awusbmanager [-h] [-c <str>] [-t <str>] [-e] [-g] [-r <str>] [-l <str>] [-n] [command......]
-h, --help Display this help
-c, --config=<str> Configuration file to use
-t, --control=<str> Issue command (in quotes) to running client
-e, --autofind-off Start with auto-find off
-g, --start-minimized Start the Manager minimized
-r, --redirect=<str> When used with option t, redirect output to file instead of console
-l, --log=<str> Log file (or "OSEventLog" for syslog, "MemoryLog" for Memory log)
-n, --daemon Run as a daemon
- Due to the absence of the ability to assign the Client ID value via the command line interface, we should prepare a special directory that will store the configuration file for awusbmanager.
If you run awusbmanager in graphical mode from the root user account and configure the connection to a USB hub in this mode, the following file structure will be created in the default configuration:
root@otp:~# tree /etc/awusbmanager/
/etc/awusbmanager/
- awusbcerts
- AW24-000000.pem
- awusb_client_cert.pem
- awusb.ini
Let`s create a directory for configuration file
# mkdir /etc/awusbmanager
Next, create a configuration file there
# nano /etc/awusbmanager/awusb.ini
The file content must have the following format:
[General]
AutoFind=0
MainFrameWidth=640
MainFrameHeight=480
MainFrameX=0
MainFrameY=27
AutoMinimize=0
HideUnathorized=0
AutoRegisterHubCert=1
AutoRefreshLookupPeriod=30
BonjourLookupTimeout=4
[Settings]
ClientId= <the name of the host`s Client ID>
ManualHubs=<IP address/or DNA hostname of the Digi device>:18574
[Transport]
KeepAlivePeriod=3
KeepAliveTimeout=10
[AutoConnect]
AW24-000000.10=1 < ======== Serial Number of Digi device and USB Port Group number (value is 10 in the example)
Syntax: SerialNumber.GroupNumber=[0,1] - Disabled/Enabled.
- Add a new client in Web UI on Digi AnywhereUSB Plus Hub: System > AnywhereUSB Configuration.
-
Let`s run awusbmanager for the first time with the command
# /usr/bin/xvfb-run /usr/sbin/awusbmanager --log=OSEventLog --autofind-off --config=/etc/awusbmanager/awusb.ini
We use the --log option to specify that the awusbmanager process log should be written to the standard syslog. If this is not explicitly specified, the awusb.log log file will be created in the /root/.AnywhereUSB directory.
We use the --autofind-off option to disable unnecessary network polling to detect hubs.
We use the --config option to specify the location of the awusb.ini configuration file we configured earlier. If this is not explicitly specified, the awusbmanager process will look for the file in the /root/.AnywhereUSB directory.
root@otp:~# /usr/bin/xvfb-run /usr/sbin/awusbmanager --log=OSEventLog --autofind-off --config=/etc/awusbmanager/awusb.ini
Creating cert in /etc/awusbmanager/awusb_client_cert.pem
Certificate /etc/awusbmanager/awusb_client_cert.pem generation complete.
A self-signed client certificate awusb_client_cert.pem will be automatically generated in the configuration file directory, then an attempt will be made to contact the hub and bind using the client certificate. If the procedure for binding the client to the hub was successful, then in the web console of the hub on the client management page, we will see the status of the client certificate change to Available:
You must see Hub`s certificate in the directory awusbcerts:
root@otp:~# tree /etc/awusbmanager/
/etc/awusbmanager/
- awusbcerts
- AW24-000000.pem
- awusb_client_cert.pem
- awusb.ini
1 directory, 3 files
- Configuring the systemd service for AnywhereUSB Manager
To solve the problem of automating the launch of the awusbmanager process during server boot/reboot, let's create a simple systemd unit:
# nano /etc/systemd/system/awusbmanager.service
Add the configuration below to the unit.
[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
Next, we turn on the automatic start of the service and start it (before starting the service, the process that we started earlier manually must be interrupted):
# systemctl enable awusbmanager.service
# systemctl start awusbmanager.service
Let`s check the service and connection status:
root@otp:~# systemctl status awusbmanager.service
● awusbmanager.service - Digi AnywhereUSB Manager Service
Loaded: loaded (/etc/systemd/system/awusbmanager.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2023-05-30 12:21:24 UTC; 1h 17min ago
Main PID: 643 (xvfb-run)
Tasks: 14 (limit: 4610)
Memory: 94.1M
CGroup: /system.slice/awusbmanager.service
├─643 /bin/sh /usr/bin/xvfb-run /usr/sbin/awusbmanager --log=OSEventLog --autofind-off --config=/etc/awusbmanager/awusb.ini
├─702 Xvfb :99 -screen 0 1280x1024x24 -nolisten tcp -auth /tmp/xvfb-run.q21vh9/Xauthority
└─752 /usr/sbin/awusbmanager --log=OSEventLog --autofind-off --config=/etc/awusbmanager/awusb.ini
May 30 13:35:05 otp awusbmanager[752]: AnywhereUSB Manager: Could not connect to 192.168.41.1:8000
May 30 13:35:35 otp awusbmanager[752]: AnywhereUSB Manager: Could not connect to 192.168.41.1:8000
May 30 13:36:05 otp awusbmanager[752]: AnywhereUSB Manager: Could not connect to 192.168.41.1:8000
May 30 13:36:35 otp awusbmanager[752]: AnywhereUSB Manager: Could not connect to 192.168.41.1:8000
May 30 13:37:05 otp awusbmanager[752]: AnywhereUSB Manager: Could not connect to 192.168.41.1:8000
May 30 13:37:35 otp awusbmanager[752]: AnywhereUSB Manager: Could not connect to 192.168.41.1:8000
May 30 13:38:05 otp awusbmanager[752]: AnywhereUSB Manager: Could not connect to 192.168.41.1:8000
May 30 13:38:35 otp awusbmanager[752]: AnywhereUSB Manager: Could not connect to 192.168.41.1:8000
May 30 13:38:58 otp awusbmanager[752]: AnywhereUSB Manager: Using client cert /etc/awusbmanager/awusb_client_cert.pem
May 30 13:38:59 otp awusbmanager[752]: AnywhereUSB Manager: 192.168.41.1:18574 connected as connection 156 (secure)
Linux host is connected to the AnywhereUSB Plus Hub:
To allow USB devices to work for multiple users on the server, you need to add these USB rules:
cat /etc/udev/rules.d/50-myusb.rules
KERNEL=="ttyUSB[0-9]*",MODE="0666"
KERNEL=="ttyACM[0-9]*",MODE="0666"