How to check network driver and NIC firmware details in VMware ESXi

Posted by Paul Braren on Oct 31 2017 (updated on Nov 15 2017) in
  • HowTo
  • Networking
  • Virtualization
  • When working on my recent article,

    I quickly discovered that there seemed to be some shortcomings when checking the device driver versions for some network adapters, such as those that are found my set of two Xeon D servers. These SoC (System on a Chip) servers feature two integrated Intel I-350 1GbE ports and two integrated X552/X557 10GbE ports, details as seen at the Supermicro SuperServer SYS-5028D-TN4T Product Page. Googling around for network driver version esxi results in these 2 VMware Knowledgebase articles right at the top:

    Nope, that doesn't apply to any ESXi since 5.1, let's move on to the next KB article...

    Alright, now we're getting warmer. In KB 1034674, I jumped down to the section entitled "Obtaining Network card driver and firmware information," and spotted this:

    In ESXi 5.x, run this command to figure out your network name (column 1):

    esxcli network nic list
    esxcli-network-nic-list--TinkerTry
    esxcli network nic list

    Now use the desired network name here, substituting it for vmnic0

    esxcli network nic get -n vmnic0
    esxcli-network-nic-get--TinkerTry
    esxcli network nic get -n vmnic0

    This seemed very promising, at least at first. Then I soon realized that the detailed version of the igbn driver isn't there. Hmm.

    On a whim, I also tried looking at Intel's readme for the latest i350 10GbE 4.5.3 driver. Nope, turns out those instructions don't show driver details either:

    Use esxcli, vsish, or esxcfg-* to set or get the driver information, for example:

    • Get the driver info
      esxcli network nic get -n vmnic1

    • Get an uplink stats
      esxcli network nic stats get -n vmnic1

    • Get the Netqueue stats
      vsish -e get /net/pNics/vmnic1/stats

    the output is just 0.1.0.0.

    Time to come up with another way. My way, not necessarily the best or only way. If you have a better way, by all means, let us all know by dropping a comment below!

    My alternative approach works broadly across many systems by simply looking for all drivers with gb in the name:

    esxcli software vib list | grep gb
    esxcli-software-vib-list--TinkerTry
    esxcli software vib list | grep gb

    Tada, there it is! Between each of 3 screenshots, I glean all I need, with a lot of detail, including hints about where the driver came from. In the next 2 screenshots below, you'll see I've run all 3 commands, on each Xeon D system.

    How to check for network firmware and detailed driver info

    esxcli network nic list
    esxcli network nic get -n vmnic0
    esxcli software vib list | grep gb

    Let's have a look at the output of these 3 commands, for these 2 Xeon D systems.

    Example 1

    • Xeon D-1541
      • Intel I350 1GbE - fresh install of ESXi 6.5 Update 1
      • default inbox drivers
        Xeon-D-1541-networking-not-updated-Intel-I350-1GbE-highlighted--TinkerTry
      • nic name vmnic0
      • driver name igbn
      • nic firmware 1.63.0:0x800009fa
      • nic driver 0.1.0.0-14vmw.650.1.26.5969303
      • nic driver vendor VMW

    What's up with the INT and VMW that comes after the device driver?

    • INTel
    • VMWare

    I could also figure out all the same things about the 10GbE NICs too, using the same commands. But I use vmnic2 instead of vmnic0.

    Example 2

    • Xeon D-1567
      • Intel X557 10GbE - already updated to ESXi 6.5 Update 1 EP04
      • updated I350 0.1.0.0 driver and X557 4.5.3 driver
        Xeon-D-1567-networking-just-updated-Intel-X557-10GbE-highlighted--TinkerTry
      • nic name vmnic2
      • driver name ixgbe
      • nic firmware 0x800005ad
      • nic driver 4.5.3-1OEM.600.0.0.2494585
      • nic driver vendor INT

    Note that this time around, I can see the basics of the driver version from the esxcli network nic get -n vmnic2 command this time, showing 4.5.3-iov, but slightly lacking in details, so I still used the esxcli software vib list | grep gb command to get more.

    Ah, so it's the device driver provider, that makes sense. Contrast that with the driver names for the VMW drivers, aka inbox drivers, apparently first provided with the indicated ESXi Build Number.

    In my 1GbE example above, that's 5969303. Looking that up, that means it's from 6.5 Update 1.

    In my second 10GbE example, it's the older ESXi 6.0 GA build number 2494585 released 2015-03-12. In other words, this X557 driver family first arrived in the ESXi 6.0 GA days, which matches up nicely with exactly what happened.

    Hope you learned something, feedback left below is always appreciated!

    Netgear-XS708T-Device-View-by-TinkerTry
    Web view of my Netgear XS708T ProSAFE 8-Port 10-Gigabit Smart Managed Switch

    Footnotes

    • In my Xeon D-1567 example above, you'll also note that I've got newer I350 igbn 0.1.0.0-14vmw.650.1.26.5969303 VMWware driver and X557 ixgbe 4.5.3-1OEM.600.0.0.2494585 INTel drivers loaded, here's exactly how those were loaded.
    • The Intel I-350 is also known as i350 and i350-AM2.
    • The Intel X552/X557 is also known as 10GBASE-T PHY, Intel X557-AT/ X557-AT2.
      Source, Intel.

    Nov 05 2017 Update

    Nice shout-out from Michael White, in his most recent installment of his weekly newsletter:

    My approach is short, just 3 lines anybody can paste into XCLI. An admittedly much more thorough approach is what Michael is referring to, it's the vDocumentation tool that my colleague Ariel Sanchez came up with, uses PowerCLI (download 6.5.0R1 here), all the details here:


    See also at TinkerTry

    check-your-tcp-segmentation-offload
    check-nvme-ssd-firmware