Songtao and I are happy to share that we now have a compatible version of the USB Network Native Driver for ESX v1.12 Fling that supports the latest ESXi 8.0 Update 1 release! 🥳
This release also includes a couple of minor enhancement and fixes which are listed below:
- Support for new DLINK RTL8156 device (0x2001:0xb301)
- Updated maximum supported USB Network devices from 8 to 12
- Resolved 2.5GbE link speed issue for RTL8156 adapter
Additionally, while ESXi 8.0 Update 1 has just been released, we know that not everyone will be on the latest version and these enhancement and fixes have also been ported to a version of USB Network Native Driver for ESX v1.12 Fling driver to also support ESXi 8.0, 8.0a, 8.0b, etc.
Use the following ESXi Component ZIP files based on your desired version of ESXi 8.x:
- ESXi 8.0 - ESXi800-VMKUSB-NIC-FLING-64098182-component-21668107.zip
- ESXi 8.0 Update 1 - ESXi80U1-VMKUSB-NIC-FLING-64098092-component-21669994.zip
Note: There are no plans to backport these enhancements/fixes to prior ESXi releases
Finally, if you are looking to create a custom ESXi ISO or Image Profile AND you either have an existing or can deploy a vCenter Server, please refer to this blog post for using vSphere Lifecycle Manager (vLCM) via the UI or PowerCLI to create your custom images.
If you do NOT have or can not deploy a vCenter Server (no hosts required), then you can refer to this blog post for using PowerCLI Image Builder to create your custom images, but make sure you update Python dependency to at least 3.7.9+ or you will run into this issue.
Superb! Thanks guys, this one was eagerly awaited.
Woah this is great news! Thanks guys.
Whenever I used the usb fling it would always get unmapped from my VDS after a reboot. At the time (7.0u1), I read that was a know behavior. Has that changed?
Have you looked at Fling instructions regarding persisting configurations?
Hi William.
I may have found a bug.
I have a homelab with 2 ESXi running 8.0b, one of them is an Intel NUC NUC12WSHI50Z00 with 2 usb to Ethernet adapters.
The adapters are from StarTech.com model USB31000S.
Everything is working fine and i have no problems with this configuration.
Since i upgraded to 8.0U1 my first ESXi is also working good but the esxi running on my NUC got serious troubles.
I did many tests and every time i Upgrade then add the USB Driver v1.12 Fling, the esxi lose all network connectivity.
I cannot reach the esxi and vCenter cannot detect it anymore.
If i reboot i still have the same problem. The only thing i can do to solve this problem is to downgrade the esxi by installing 8.0.0 and the previous usb driver.
I know you have many products and many NUC to create and test homelabs, do you have the possibility to test the driver with an Intel NUC like mine ?
By the way i really really want to thank you for sharing your hard work with the community.
Regards
When you say it loses connection, can you please be a bit more specific about the issue?
First, is the primary network adapter using the built-in NIC and bounded to vmk0? Is that fine after the upgrade?
Second, after upgrading and rebooting the host, did you check whether the USB NIC are still bounded to the vSwitch? If not, then most likely you're hitting the persistency issue which is already doc'ed on Fling webpage and steps should have been taken to persist those bindings, which certainly can impact connectivity.
Hi William,
First i'd like to say sorry for my english, i'll try to do my best.
I'm also sorry i don't have the same knowledge as you but i'll try to do my best to help and to know what's going on.
To be more specific about the issue, here is what happened :
I couldn't create a custom iso of vsphere 80U1 with the fling driver so i did a fresh install from 80U1 ISO (i had an issue with python and i didn't understand it).
The primary network adapter using the built-in NIC is bounded to vmk0 even after the new installation.
I also had vswitch0 bounded to my built-in NIC.
Then i added the usb driver v1.12 and started a ssh connected to add persistency.
After rebooting i could see the new VMNICs on the host and i also could bound them to vswitch1 / vswitch2 and also to other vmkernels :
vmk0 -> vswitch0 -> management -> built-in NIC
vswitch1 -> vlans for my VMs -> USB1
vmk1 -> vswitch2 -> vMotion -> USB2
vmk2 -> vswitch2 -> Storage -> USB2
I added the host to my vcenter cluster and started to get vm vmotion so my new esxi can host vms.
Then some times later, the issue happend ... i lost the network connectivity from all adapters including the built-in NIC.
I cannot contact the esxi, ping it, connect to ssh or whatever. Even vCenter cannot communicate with the host even if they are on the same network.
i did it twice to be sure and run into the same issue.
i did an new install of 8.0.0 and fling for 8.0.0, did the exact same configuration and have no issue.
Please let me know if you need more informations
thx for your help and sharing your work.
regards
This is a bit more helpful.
Why couldn't you create a custom ISO for 80u1 w/driver? There's references in the blog post above in how you can do so and hopefully you can without any problems
Secondly, the fact that your onboard NIC was impacted is also odd and the lost of connectivity is at a later point. To help narrow down the scope/problem, is it possible for you to install 8.0 (no USB Fling) and then upgrade to 8.0u1 (no USB Fling) and let it run and see if you lose any connectivity? If you have a spare USB key, you don't even have to touch your existing configuration (one of the nice benefits of USB-based install)
Hi William,
i had another USB key so i used it to install 8.0u1 without USB Fling, then i did all configuration of the new esxi with the only onboard NIC .
i still have the issue so i guess this bug comes from the 8.0u1 update and not from the USB Fling driver.
i'll have to check dcui if i can see any trouble but it's really late here and i will probably do it tomorrow (i'm in France).
Thank you for your time and for your help.
Once again nice work, thx for sharing it.
Hey, thanks for the great work. Can i ask for help with a reaktec8125 driver with esxi8? is it possible to add or a custom image? i am really new in this. thanks
No such driver exists, only USB support which is via Fling
Hi William,
Thank you for your hard work with this project.
I'm running ESXI 8 U1 on a Lenovo Tiny with a USB NIC connection to iSCSI which was working perfectly.
As a test, I decided to reboot my host. Everything appears to be active from the USB NIC side of things, but I have no connectivity - i.e. I can't even ping the iSCSI server anymore. I wonder if you'd very kindly be able to help me.
I have two NICs:
[[email protected]:~] esxcli network nic list
Name PCI Device Driver Admin Status Link Status Speed Duplex MAC Address MTU Description
------ ------------ ------ ------------ ----------- ----- ------ ----------------- ---- -----------
vmnic0 0000:00:1f.6 ne1000 Up Up 1000 Full 6c:4b:90:28:79:5b 1500 Intel Corporation Ethernet Connection (2) I219-LM
vusb0 Pseudo uether Up Up 1000 Full c8:4d:44:25:26:9e 1500 Realtek USB 101001G2.5G LAN
vmnic0 is the Management interface on vSwitch 0 and vusb0 is a Storage interface on vSwitch1
vmk0 maps to vSwitch0 and vmnic0
vmk1 maps to vSwitch1 and vusb0
esxcli network ip interface list
vmk0
Name: vmk0
MAC Address: 6c:4b:90:28:79:5b
Enabled: true
Portset: vSwitch0
Portgroup: Management Network
Netstack Instance: defaultTcpipStack
VDS Name: N/A
VDS UUID: N/A
VDS Port: N/A
VDS Connection: -1
Opaque Network ID: N/A
Opaque Network Type: N/A
External ID: N/A
MTU: 1500
TSO MSS: 65535
RXDispQueue Size: 2
Port ID: 67108871
vmk1
Name: vmk1
MAC Address: 00:50:56:6b:08:14
Enabled: true
Portset: vSwitch1
Portgroup: Storage Network
Netstack Instance: defaultTcpipStack
VDS Name: N/A
VDS UUID: N/A
VDS Port: N/A
VDS Connection: -1
Opaque Network ID: N/A
Opaque Network Type: N/A
External ID: N/A
MTU: 1500
TSO MSS: 65535
RXDispQueue Size: 2
Port ID: 100663304
[[email protected]:~] esxcli network ip interface ipv4 get
Name IPv4 Address IPv4 Netmask IPv4 Broadcast Address Type Gateway DHCP DNS
---- ------------ ------------ --------------- ------------ ----------- --------
vmk0 192.168.4.1 255.255.0.0 192.168.255.255 STATIC 192.168.0.1 false
vmk1 10.0.0.1 255.0.0.0 10.255.255.255 STATIC 192.168.0.1 false
I've set up persistantancy for the USB connection and my /etc/rc.local.d/local.sh script looks like this:
[[email protected]:~] cat /etc/rc.local.d/local.sh
#!/bin/sh ++group=host/vim/vmvisor/boot
# local configuration options
# Note: modify at your own risk! If you do/use anything in this
# script that is not part of a stable API (relying on files to be in
# specific places, specific tools, specific output, etc) there is a
# possibility you will end up with a broken system after patching or
# upgrading. Changes are not supported unless under direction of
# VMware support.
# Note: This script will not be run when UEFI secure boot is enabled.
#Enable Persistant USB NIC Binding
vusb0_status=$(esxcli network nic get -n vusb0 | grep 'Link Status' | awk '{print $NF}')
count=0
while [[ $count -lt 20 && "${vusb0_status}" != "Up" ]]
do
sleep 10
count=$(( $count + 1 ))
vusb0_status=$(esxcli network nic get -n vusb0 | grep 'Link Status' | awk '{print $NF}')
done
# Map USB NIC to switch
esxcli network vswitch standard uplink add --uplink-name=vusb0 --vswitch-name=vSwitch1
esxcfg-vswitch -R
if [ "${vusb0_status}" = "Up" ]; then
esxcli network vswitch standard uplink add --uplink-name=vusb0 --vswitch-name=vSwitch1
fi
exit 0
The iSCSI server is on 10.0.10.1 but is no longer accessible after the reboot. Everything worked fine before my test reboot to see if everything would come back up OK.
Rnning /etc/rc.local.d/local.sh doesn't seem to work after rebooting so I can;t seem get any connectivity at all now on vusb0.
Any help would be much appreciated.
Kind regards,
Neil
Do you have Secure Boot turned on? If so, you will need to turn it off as that prevents any custom code from running (by design as that is what Secure Boot is providing)
Thanks for the speedy reply. Secure Boot is off in the BIOS.
I've even reinstalled ESXI with a clean install and simplified my /etc/rc.local.d/local.sh file to contain:
[[email protected]:~] cat /etc/rc.local.d/local.sh
#!/bin/sh ++group=host/vim/vmvisor/boot
# local configuration options
# Note: modify at your own risk! If you do/use anything in this
# script that is not part of a stable API (relying on files to be in
# specific places, specific tools, specific output, etc) there is a
# possibility you will end up with a broken system after patching or
# upgrading. Changes are not supported unless under direction of
# VMware support.
# Note: This script will not be run when UEFI secure boot is enabled.
vusb0_status=$(esxcli network nic get -n vusb0 | grep 'Link Status' | awk '{print $NF}')
count=0
while [[ $count -lt 20 && "${vusb0_status}" != "Up" ]]
do
sleep 10
count=$(( $count + 1 ))
vusb0_status=$(esxcli network nic get -n vusb0 | grep 'Link Status' | awk '{print $NF}')
done
exit 0
Even running /etc/rc.local.d/local.sh from an SSH session doesn;t bring up the interface.
Many thanks,
Neil
Best way to troubleshoot things like this is NOT to just run the script as-is but go through each line and check the output manually after a reboot. I assume the issue you're seeing is that vusb0 is NOT being bound to vSwitch1 (confirm that by doing esxcfg-vswitch -l). If you were to manually bind it, does everything work? If that that's a yes, then we know we've at least narrow down the issue. Then, see if you're able to go through those commands and see if they're successfully, as they should equal the same thing you do manually (thats beauty of automation its LITERALLY the thing you'd do manually). If that's successful, then take a look at local.sh ... is there anything in the logs that states it didn't run or ran with errors? I'd go even simpler with your edit and simply echo to a file and see if that runs w/o issue before attempting to add the code back in
Thanks again for your reply.
One of the problems is I'm not getting much useful output. It looks like vusb0 is being bound to vSwitch1:
[[email protected]:~] esxcfg-vswitch -l
Switch Name Num Ports Used Ports Configured Ports MTU Uplinks
vSwitch0 2560 4 128 1500 vmnic0
PortGroup Name VLAN ID Used Ports Uplinks
VM Network 0 0 vmnic0
Management Network 0 1 vmnic0
Switch Name Num Ports Used Ports Configured Ports MTU Uplinks
vSwitch1 2560 4 1024 1500 vusb0
PortGroup Name VLAN ID Used Ports Uplinks
Storage Network 0 1 vusb0
I've now run the command again to bind the switch:
[[email protected]:~] esxcli network vswitch standard uplink add --uplink-name=vusb0 --vswitch-name=vSwitch1
Uplink already exists: vusb0
[[email protected]:~] esxcfg-vswitch -R
Then I've confirmed the bindings again:
[[email protected]:~] esxcfg-vswitch -l
Switch Name Num Ports Used Ports Configured Ports MTU Uplinks
vSwitch0 2560 4 128 1500 vmnic0
PortGroup Name VLAN ID Used Ports Uplinks
VM Network 0 0 vmnic0
Management Network 0 1 vmnic0
Switch Name Num Ports Used Ports Configured Ports MTU Uplinks
vSwitch1 2560 4 1024 1500 vusb0
PortGroup Name VLAN ID Used Ports Uplinks
Storage Network 0 1 vusb0
Those commands were in my original script - the other
This is very new territory to me and I really am lost as to where to look next in terms of logs or how to echo to a file. The other part of the script simply sets the persistence - all I have done is copy that from the VMFlings.
I've reinstalled cleanly but with no scripts or any commands run.
Here's what I've done so far from the web UI:
Checked vusb0 exists under Physical NICs - it does
Created a new virtual switch - I called it 'vSwitch1' and set the uplink to vusb0 (which reported as being Up - 1000 Mbps)
Created a new VMKernel NIC called vmk1 - I called the Port Group 'Storage Network' and assigned 'vSwitch1' as the virtual switch. Initially assigned it DHCP and it grabbed an IP off my DHCP server and I could ping the IP from another PC. Using that assigned address for a static IP also worked fine.
I then moved the USB NIC to a separate switch (this is a very basic unmanaged switch) with a test NAS box and set the vmk1 NIC to 10.0.0.2 and the test NAS box to 10.0.0.3. Neither can ping one another.
There's some very odd connectivity going on here.
Same issue here, single USB nic. If I go in throught the physical console and F2, reset management network it prompts to choose the (1) NIC and works from there.
There's something going on to prevent it from persisting. Even if I run the commands listed above, in a script or manually, it is not associating it with the Management network, even though it tags the port group as such.
Does anyone know the sequence of commands the console ESX shell is doing when you do the reset management network? If we can run those (via script), we should be able to force persistent, or at least recreate it the same way each time...
And fixed it. This is ugly and can be trimmed, but works. USB nic, persistent through reboots. Also enables ssh persistently to expedite troubleshooting. Replace your IPs as needed.
cat /etc/rc.local.d/local.sh
#!/bin/sh ++group=host/vim/vmvisor/boot
# local configuration options
# Note: modify at your own risk! If you do/use anything in this
# script that is not part of a stable API (relying on files to be in
# specific places, specific tools, specific output, etc) there is a
# possibility you will end up with a broken system after patching or
# upgrading. Changes are not supported unless under direction of
# VMware support.
# Note: This script will not be run when UEFI secure boot is enabled.
echo "test" > /test.txt
echo `date` >>/test.txt
echo "Waiting for USB NIC to come up" >> /test.txt
vusb0_status=$(esxcli network nic get -n vusb0 | grep 'Link Status' | awk '{print $NF}')
count=0
while [[ $count -lt 20 && "${vusb0_status}" != "Up" ]]
do
echo "COUNT=" $count >> /test.txt
sleep 5
count=$(( $count + 1 ))
vusb0_status=$(esxcli network nic get -n vusb0 | grep 'Link Status' | awk '{print $NF}')
done
# Map USB NIC to switch
echo "Mapping USB NIC vusb0" >> /test.txt
esxcli network vswitch standard uplink add --uplink-name=vusb0 --vswitch-name=vSwitch0 >> /test.txt
echo "Mapping USB NIC vmk0" >> /test.txt
esxcli network vswitch standard uplink add --uplink-name=vmk0 --vswitch-name=vSwitch0 >> /test.txt
echo "Mapping USB NIC vswitch dash r" >> /test.txt
esxcfg-vswitch -R
echo "Mapping USB NIC vswitch dash el" >> /test.txt
esxcfg-vswitch -l
echo "Mapping USB NIC vswitch dash big L" >> /test.txt
esxcfg-vswitch -Lvusb0 vSwitch0
#if [ "${vusb0_status}" = "Up" ]; then
#esxcli network vswitch standard uplink add --uplink-name=vusb0 --vswitch-name=vSwitch0
#fi
#and set ip
esxcli network ip interface ipv4 set --interface-name=vusb0 --ipv4=192.168.123.10 --netmask=255.255.255.0 --type=static >>/test.txt
esxcli network ip interface ipv4 set --interface-name=vmk0 --ipv4=192.168.123.10 --netmask=255.255.255.0 --type=static >>/test.txt
esxcfg-route -a default 192.168.123.1 >>/test.txt
esxcli network ip interface tag add -i vusb0 -t Management >>/test.txt
esxcli network ip interface tag add -i vmk0 -t Management >>/test.txt
esxcli network vswitch standard uplink add --uplink-name=vusb0 --vswitch-name=vSwitch0 >>/test.txt
esxcli network vswitch standard uplink add --uplink-name=vmk0 --vswitch-name=vSwitch0 >>/test.txt
#also enable sshd
/etc/init.d/SSH start > /dev/null 2>&1
exit 0