ESXi 7.0 + R8168 / R8169 Installation Notes

Installing ESXi on an unsupported device is a matter of luck. Unfortunately, I found that my computer’s built-in NIC is a Realtek R8168 — a network card no longer supported by ESXi.

In the ESXi 6.x era, we could add the net55-r8168 driver to make ESXi support this NIC, but after ESXi 7.x disabled all Linux-dependent drivers, this method no longer works.

USB Network Native Driver for ESXi

USB NIC

Fortunately, ESXi now provides native drivers for several popular USB NICs (ASIX88179, RTL8152/RTL8153, AQC111U). We can purchase a supported USB NIC adapter and create an image with the VMKUSB-NIC-FLING (Backup) driver to install ESXi.

The installation process can be referenced from Tips for using USB Network Adapters with VMware ESXi.

After installation, if you need to manually select the NIC to connect to the network after each boot, you can refer to this guide to add a boot script to make the system automatically recognize the USB NIC:

# /etc/rc.local.d/local.sh

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

esxcfg-vswitch -R

R8168 Passthrough

To avoid wasting the R8168 NIC’s port and improve performance (USB NICs can impact performance), we can passthrough the R8168 NIC to a virtual machine in ESXi for continued use.

However, after configuring it, this problematic NIC started causing issues again — the network would drop every few minutes. In the virtual machine’s /var/log/kern.log, the following error was observed:

ubuntu kernel: [ 2581.050902] ------------[ cut here ]------------
ubuntu kernel: [ 2581.050905] NETDEV WATCHDOG: ens100 (r8169): transmit queue 0 timed out
ubuntu kernel: [ 2581.050921] WARNING: CPU: 0 PID: 0 at net/sched/sch_generic.c:472 dev_watchdog+0x270/0x280

After searching, I found that the issue might be with the Linux built-in driver. We can try installing the driver provided by Realtek to resolve it. On Ubuntu, you can install it directly using the apt command:

apt install r8168-dkms

After rebooting, the issue was resolved.

Coxxs

Leave a Reply

Your email address will not be published. Required fields are marked *