New fling: USB Network Native Driver for ESXi
Summary:
USB has become one the most widely adopted connection type in the world & USB network adapters are also popular among Edge computing platforms. In some platforms, there is either limited or no PCI/PCIe slots for I/O expansion & in some cases, an Ethernet port is not even available. Another advantage of a USB-based network adapter is that it can be hot-plugged into an system without a reboot which means no impact to the workload, same is true for hot-remove.
This Fling supports three of the most popular USB network adapter chipsets found in the market. The ASIX USB 2.0 gigabit network ASIX88178a, ASIX USB 3.0 gigabit network ASIX88179 & the Realtek USB 3.0 gigabit network RTL8153. These are relatively inexpensive devices that many of our existing vSphere customers are already using and are familiar with.
Requirements:
- VMware ESXi 6.5 or 6.7
- USB Network Adapter with AX88178a, AX88179 or RTL8153 Chipset
Any adapters using the following chipsets and with the following VID/PID are supported.
Vendor
Chipset
VendorID
ProductID
ASIX
ax88179
0x0B95
0x1790
DLINK
AX88179
0x2001
0x4A00
SITECOMEU
AX88179
0x0DF6
0x0072
ASIX
AX88178a
0x0B95
0x178A
Realtek
RTL8153
0x0BDA
0x8153
Instructions:
Step 1 - Download the ZIP file for the specific version of your ESXi host and upload to ESXi host using SCP or Datastore Browser
Step 2 - Place the ESXi host into Maintenance Mode using the vSphere UI or CLI (e.g. esxcli system maintenanceMode set -e true)
Step 3 - Install the Offline Bundle by running the following command on ESXi Shell:
1esxcli software vib install -d /path/to/the offline bundle
Step 4 - Plug-in the USB NIC and reboot for the change to go into effect. Once the host has rebooted, ESXi should automatically pickup and claim the USB NIC (e.g. vusb0)
Persisting USB NIC Bindings
Currently there is a limitation in ESXi where USB NIC bindings are picked up much later in the boot process and to ensure settings are preserved upon a reboot, the following needs to be added to /etc/rc.local.d/local.sh based on your configurations.
Below is an example which binds the physical USB NIC (vsub0) to vSwitch and the respective portgroups that are also attached on the VSS
1vusb0\_status=$(esxcli network nic get -n vusb0 | grep 'Link Status' | awk '{print $NF}')
2count=0
3while \[\[ $count -lt 20 && "${vusb0\_status}" != "Up" \]\] \]
4do
5 sleep 10
6 count=$(( $count + 1 ))
7 vusb0\_status=$(esxcli network nic get -n vusb0 | grep 'Link Status' | awk '{print $NF}')
8done
9
10if \[ "${vusb0\_status}" = "Up" \]; then
11 esxcfg-vswitch -L vusb0 vSwitch0
12 esxcfg-vswitch -M vusb0 -p "Management Network" vSwitch0
13 esxcfg-vswitch -M vusb0 -p "VM Network" vSwitch0
14fi