When ESXi Secure Boot Fails Because Your Server Thinks It’s 1998

ESXi 9 PSOD on a Dell PowerEdge R640: UEFI Secure Boot failed at time 1998-01-10, failed to verify signatures of many VIBs, all tardisks validated.

A power cut, an empty CMOS battery and two purple screens on a Dell PowerEdge R640 running ESXi 9

TL;DR – A Secure Boot PSOD listing dozens of “unsigned” VIBs is not always a broken image. Read the timestamp in the error first. If it shows a date decades in the past, your RTC/CMOS battery is dead and the fix starts in the BIOS, not in ESXi. And if a second PSOD follows (“A security violation was detected”), the ESXi encryption recovery key is what gets you out – so make sure you have it before you need it.

The setup

ComponentValue
ServerDell PowerEdge R640, 2 × Xeon Gold 6240, 512 GB RAM
HypervisorVMware ESXi 9.0.2 (build 25148076)
FirmwareUEFI boot, Secure Boot enabled, TPM 2.0 enabled
RoleHost being prepared for a vSAN ESA cluster

After a power cut, the host came back up with a purple screen.

PSOD #1 – “UEFI Secure Boot failed”

ESXi 9 PSOD on a Dell PowerEdge R640: UEFI Secure Boot failed at time 1998-01-10, failed to verify signatures of many VIBs, all tardisks validated.
PSOD #1: Secure Boot rejects almost every VIB – note the date.

The relevant part, as text:

The system has found a problem on your machine and cannot continue.

UEFI Secure Boot failed at time 1998-01-10T00:54:12.967Z:
Failed to verify signatures of the following vib(s): [atlantic bcm-mpi3 bmcal bnxtnet
... esx-base esx-update ... nsx-* ... vsan vsanhealth vsipfwlib]. All tardisks validated

At first glance this looks like a seriously broken image: VMware, Intel, Broadcom and NSX VIBs all failing signature checks at once. Two details say otherwise:

  • The timestamp: 1998. A server built in 2019 does not legitimately live in 1998.
  • “All tardisks validated”. The payloads themselves are intact. It is the signature validity check that fails – and certificates have a validity period.

Secure Boot checks every VIB signature against the current system time. If the hardware clock jumps back decades, the moment is before the signing certificates became valid, so every perfectly good VIB is rejected. Broadcom documents exactly this failure: a depleted CMOS battery resets the hardware clock to a factory default date, and Secure Boot rejects the VIB signatures because that date predates the certificates’ validity period (KB 445564 – their example shows 2000-01-01; mine showed 1998).

Rule of thumb: don’t start removing VIBs or rebuilding images until you’ve read the date in the PSOD.

Fixing the clock

Reboot, press F2 → System Setup → System BIOS → Miscellaneous Settings and set the system date and time. Use UTC – ESXi treats the hardware clock as UTC.

KB 445564 lists three resolutions: set the UEFI time manually, temporarily disable Secure Boot so ESXi can boot and correct the time via NTP, and replace the CMOS battery. I’d strongly prefer the first one on a TPM host: changing firmware security settings is exactly what can trigger the next problem.

I corrected the time, left Secure Boot enabled and rebooted.

PSOD #2 – “A security violation was detected”

ESXi 9 PSOD on a Dell PowerEdge R640: Unable to restore the system configuration. A security violation was detected.
PSOD #2 after fixing the clock: the TPM-sealed configuration can't be restored.

The PSOD even points straight to the Broadcom KB that explains the fix:

The system has found a problem on your machine and cannot continue.

Unable to restore the system configuration. A security violation was detected.
https://knowledge.broadcom.com/external/article/312109

This is a different mechanism. On a host with a TPM 2.0, ESXi encrypts its configuration and seals the key to the TPM and the firmware’s security state. If that state doesn’t match what was sealed, ESXi refuses to decrypt its configuration (Broadcom KB 312109).

Fixing the clock didn’t cause this. The first PSOD happened so early that it hid the second one; once the signatures validated, boot progressed to the next security check and failed there.

How to recover: the encryption recovery key

KB 312109 gives the order of checks:

  1. Make sure the firmware security settings are what they were before: UEFI boot, Secure Boot enabled, TPM enabled. A power loss with a dead battery, or your own troubleshooting in the BIOS, may have changed something.
  2. If the settings are correct and it still fails, boot with the recovery key: when the ESXi boot loader appears, press Shift+O (the letter O), append encryptionRecoveryKey=<your-recovery-key> to the existing boot options and press Enter. ESXi decrypts the configuration and boots.
  3. Once up, re-seal and persist the configuration with esxcli system settings encryption set --mode=TPM followed by /sbin/auto-backup.sh.

Tip: the iDRAC9 virtual console clipboard makes pasting that long key much less painful.

And the catch, straight from Broadcom: if you don’t have the recovery key, the only option is to reinstall ESXi.

What I did

This host was being prepared for a new vSAN ESA cluster, with no workloads or configuration worth saving. I performed a clean ESXi 9.0.2 install and it booted normally. On a production host – especially one in a VCF environment, where a reinstall means decommissioning and recommissioning the host – the recovery key would have saved hours.

Root cause: the RTC/CMOS battery

The hardware clock is kept by the real-time clock (RTC), powered by a coin cell on the system board (a CR2032 on the R640) whenever the server has no AC power. A depleted battery is invisible while the server is plugged in. The moment you lose mains power – a power cut, a PDU swap, a move – the clock resets.

Don’t confuse it with the PERC controller’s cache battery: for this problem only the system board battery matters.

Checking the battery

  • iDRAC System Event Log / Lifecycle Log – look for a CMOS battery failure event (Dell’s diagnostics report it as DIAG0213 – System board CMOS battery failure detected). The absence of an event does not prove the battery is healthy.
  • A simple power test: set the correct date/time in the BIOS (UTC), shut down normally, remove AC power from both PSUs, wait several minutes, reconnect power, press F2 and check the date. If the clock has reverted to an old default date, replace the battery. It’s a few euros and a five-minute job.

Prevention checklist

Before a Dell host with Secure Boot and TPM goes into production or a vSAN cluster:

[ ] UEFI boot mode, Secure Boot enabled, TPM 2.0 enabled
[ ] BIOS date/time correct and set to UTC
[ ] RTC clock survives complete AC power removal (test above)
[ ] ESXi NTP configured and time verified
[ ] Encryption recovery key retrieved and stored OFF the host
[ ] iDRAC NTP, SEL monitoring and email/SNMP/Redfish alerts configured
[ ] Hosts monitored outside ESXi (iDRAC / OpenManage Enterprise)

Get the recovery key on every TPM host – today, while it’s healthy:

esxcli system settings encryption get             # Mode: TPM means the config is sealed
esxcli system settings encryption recovery list # store the key in your password vault

A few useful checks once ESXi is running:

date                                       # ESXi system time
esxcli hardware clock get # hardware (RTC) clock
esxcli software vib signature verify # VIB signature status

Two notes on monitoring:

  • NTP cannot help a host that doesn’t boot. ESXi only gets to NTP after Secure Boot has passed – and Secure Boot depends on the RTC.
  • iDRAC is independent of ESXi. Configure NTP on the iDRAC too (it has its own clock, which keeps its logs and certificates sane – it does not correct the host BIOS clock), and send its hardware alerts somewhere you actually read. For multiple servers, Dell OpenManage Enterprise centralises this.

Troubleshooting flow

PSOD: “UEFI Secure Boot failed … Failed to verify signatures”

  • Timestamp wrong? Stop. Fix the BIOS date/time (UTC), check the iDRAC log for a CMOS battery event, plan a battery replacement. Don’t touch the VIBs.
  • Timestamp correct? Now investigate the image: recent upgrades, OEM/async drivers, NSX VIBs, firmware changes, Secure Boot configuration.

PSOD: “Unable to restore the system configuration. A security violation was detected”

  1. Verify UEFI, Secure Boot and TPM are enabled and unchanged.
  2. Boot with encryptionRecoveryKey= via Shift+O.
  3. Re-seal with esxcli system settings encryption set --mode=TPM and run /sbin/auto-backup.sh.
  4. No recovery key → reinstall (and in VCF: decommission/recommission).

Don’t clear the TPM on a production host without understanding the consequences – it destroys the sealed key for good.

Lessons learned

  1. Read the timestamp on a Secure Boot PSOD. A wall of failed VIB signatures looks like a software problem; the date tells you it’s hardware.
  2. Secure Boot makes the hardware clock part of your security chain. It’s not just a BIOS checkbox.
  3. The first PSOD can hide the second. Fixing one security check lets the boot reach the next one.
  4. The recovery key is the difference between a reboot and a rebuild. Collect it for every TPM host and keep it off the host.
  5. Test the RTC battery – a €5 coin cell can take a host out after the next power cut.

And if your PSOD says UEFI Secure Boot failed at time 1998…, look at the clock before you blame ESXi.

References

Updating Intel 700 Series NIC Firmware on ESXi (NVM 9.57) on a Miniforum MS-A2

Full nvmupdaten64e run: X710 adapter 01 at 9.32(9.20) Update available; selection A, backup Y; after the update 9.87(9.57) Update successful, reboot required

This guide brings an Intel Ethernet 700 Series adapter (X710, XL710, XXV710, X722-based LOMs) on an ESXi host to NVM 9.57 with 700Series_NVMUpdatePackage_v9_57_ESX.tar.gz, released by Intel on 26 May 2026. Expect about 15 minutes per host plus one reboot.

Driver or firmware?

The 9.57 package updates the firmware (the NVM image stored on the card), not the driver that ESXi loads. They are separate things with separate version numbers:

LayerLives inESXi nameUpdated with
Firmware (NVM)Flash on the NICFirmware Version, e.g. 9.57 0x8000xxxx 1.3xxx.0Intel NVM Update Package (this guide)
DriverESXi hosti40enVIB/component from Broadcom, Intel or the server vendor, or vLCM

The two must be a supported pair. Check the Broadcom Compatibility Guide (IO devices) for your ESXi version: it lists which i40en driver goes with which firmware. Update the driver first if the guide asks for a newer one, then the firmware.

Before you start

  • Download 700Series_NVMUpdatePackage_v9_57_ESX.tar.gz (links in Where to download below). It already contains the ESXi update tool component (Intel-esx-nvmupdaten64e_*.zip).
  • Check the card is a retail Intel adapter. OEM cards (Dell, HPE, Lenovo, Cisco) usually refuse the Intel package. Use the server vendor’s firmware tool (e.g. Dell DUP, HPE SPP) for those.
  • Check the Broadcom Compatibility Guide for the matching i40en driver version.
  • Enable SSH on the host (vSphere Client → host → Configure → Services → SSH → Start).
  • Put the host in maintenance mode and evacuate VMs. The NIC ports reset during the flash and you lose network on that card.
  • Have console access (iDRAC, iLO, IPMI) in case the management vmk sits on the NIC you update.
  • Free space on a datastore. The unpacked package is about 75 MB; avoid /tmp, which is a small ramdisk.

Update one host at a time and check it before moving to the next.

Where to download

WhatFileWhere
NVM 9.57 package for ESXi (firmware images + update tool + ESXi component)700Series_NVMUpdatePackage_v9_57_ESX.tar.gzIntel download ID 18638 – 700 Series NVM Update Utility, VMware ESX
Same, all operating systems in one bundle700Series_NVMUpdatePackage_v9_57.zipIntel download ID 18190 – 700 Series NVM Update Utility
NVM update tool component for ESXiIntel-esx-nvmupdaten64e_*.zipInside the ESX package above, in the ESXi_x64 folder. No separate download needed.
Intel esxcli plug-in (optional, adds esxcli intnet commands)Intel-esx-intnetcli_<8.0 or 9.0>-*-package.zipIntel download ID 19380 – Intel esxcli plug-in
i40en driverDriver component for your ESXi releaseVersion from the Broadcom Compatibility Guide (Step 2); download from the Broadcom Support Portal or your server vendor
Downgrade, if needed9.57 → 9.56 … 9.50 packagesIntel download ID 683939 – 700 Series NVM downgrade packages

Compare the SHA256 on the Intel page with sha256sum on your copy before you upload it.

Step 1 – Record the current versions

SSH to the host and list the NICs. The 700 Series ports use the i40en driver:

esxcli network nic list
esxcli network nic list: vmnic1 and vmnic2 are the X710 ports on the i40en driver

On my lab host, vmnic1 and vmnic2 are the two X710 SFP+ ports (driver i40en); vmnic0 is the on-board I226-V on cndi_igc and is not touched by this update.

Show driver and firmware for every i40en port in one go:

for n in $(esxcli network nic list | awk '/i40en/{print $1}'); do
  echo "== $n"
  esxcli network nic get -n $n | grep -E 'Driver:|Version:'
done
esxcli software vib list | grep -i i40en

Example output:

Driver and firmware versions of vmnic1 and vmnic2: NVM 9.20, i40en 2.6.0.46

In Firmware Version, 9.20 is the NVM version, 0x8000d8c5 the eTrack ID and 1.3602.0 the combo image (boot agent). The driver is i40en 2.6.0.46, the inbox VMware driver (2.6.0.46-1vmw.911.0.25714478). Write these down; you’ll compare them after the reboot.

Step 2 – Check the card in the Broadcom Compatibility Guide

The compatibility guide matches a card on four PCI IDs: Vendor ID (VID), Device ID (DID), Sub-Vendor ID (SVID) and Sub-Device ID (SSID). Read them per vmnic:

vmkchdev -l | grep vmnic
vmkchdev -l: vmnic1 and vmnic2 are 8086:1572 with subsystem 8086:0000

The columns are PCI address, VID:DID, SVID:SSID, owner and vmnic. On my lab host the X710 ports vmnic1 and vmnic2 show VID 8086, DID 1572 (X710 for 10GbE SFP+), SVID 8086, SSID 0000. vmnic0 (8086:125c) is the on-board I226-V.

An SSID of 0000 means no specific Intel board ID is programmed, which is common on generic or white-label X710 cards. Retail Intel boards report e.g. 0001 or 0007. In the compatibility guide, search on VID/DID/SVID and leave SSID empty or as a wildcard; the 8086 SVID still tells you the Intel NVM package applies.

For more detail (card name, NUMA node, all four IDs labelled):

esxcli hardware pci list | grep -B 4 -A 14 'Device Name: Ethernet Controller X710 for 10GbE SFP+'
esxcli hardware pci list for the two X710 ports: Vendor 0x8086, Device 0x1572, SubVendor 0x8086, SubDevice 0x0000

Bus 0x05, Slot 0x00 and Function 0x0 / 0x1 are PCI address 0000:05:00.0 and 0000:05:00.1, so vmnic1 and vmnic2 in the vmkchdev output above. The four IDs match: 0x8086 / 0x1572 / 0x8086 / 0x0000.

Read the Sub-Vendor ID first – it tells you who built the card and therefore whose firmware to use:

SVIDCard fromFirmware source
8086Intel (retail)Intel NVM package – this guide
1028DellDell Update Package / Lifecycle Controller
1590 or 103cHPEHPE SPP / HPE firmware smart component
17aaLenovoLenovo XClarity / UpdateXpress
1137CiscoCisco UCS HUU / firmware bundle
15d9SupermicroMostly Intel package; check Supermicro first

Common 700 Series Device IDs: 1572 X710 SFP+, 1589 / 15ff X710-T 10GBASE-T, 1583 / 1584 XL710 QSFP+, 158b XXV710 25G, 37d0 / 37d2 X722 (on-board LOM).

Look it up:

  1. Open the Broadcom Compatibility Guide and choose IO Devices.
  2. Enter VID, DID, SVID and SSID in the ID fields, and select your Product Release Version (e.g. ESXi 8.0 U3 or ESXi 9.0).
  3. Open the matching entry and check the driver / firmware table. Each line pairs an i40en driver version with a supported firmware version.
  4. Confirm NVM 9.57 is listed with the i40en version you run (Step 1). If 9.57 is not listed yet for your release, the latest listed firmware is the supported one – decide whether to wait.

No entry for your exact SVID/SSID usually means an OEM card: use the vendor’s firmware and driver, not Intel’s.

Step 3 – Copy and extract the 9.57 package

Upload the package with the ESXi Host Client: browse to https://<esx-host>/ui, log in as root, go to Storage → datastore1 → Files and click Upload. Pick 700Series_NVMUpdatePackage_v9_57_ESX.tar.gz; when the upload finishes the file shows in the datastore root (about 75 MB).

ESXi Host Client, datastore1 Files tab: Upload button and the uploaded 700Series_NVMUpdatePackage_v9_57_ESX.tar.gz

Prefer the command line? scp 700Series_NVMUpdatePackage_v9_57_ESX.tar.gz root@<esx-host>:/vmfs/volumes/datastore1/ does the same.

On the host, check the hash against the Intel download page, extract and look inside:

cd /vmfs/volumes/datastore1
sha256sum 700Series_NVMUpdatePackage_v9_57_ESX.tar.gz
tar -xzf 700Series_NVMUpdatePackage_v9_57_ESX.tar.gz
find . -name 'nvmupdate*' -o -name '*.zip'
Extracting the 9.57 package: sha256sum, tar -xzf and find showing the component zip, nvmupdate.cfg and nvmupdaten64e in 700Series/ESXi_x64

The prompt shows the datastore UUID instead of datastore1 – that’s normal, /vmfs/volumes/datastore1 is a symlink to it. Compare the sha256sum result with the SHA256 on the Intel download page.

The ESXi_x64 folder holds nvmupdaten64e, nvmupdate.cfg (which card gets which image), the NVM image files and the ESXi component Intel-esx-nvmupdaten64e_<version>.zip. If your file is a plain .tar, use tar -xf.

Step 4 – Install the update tool component

ESXi 8.0 and later only run binaries that are installed as a VIB, so the copy of nvmupdaten64e on the datastore won’t execute. Install the component from the package with the full path:

cd /vmfs/volumes/datastore1/700Series/ESXi_x64
ls Intel-esx-nvmupdaten64e_*.zip
esxcli software vib install -d /vmfs/volumes/datastore1/700Series/ESXi_x64/Intel-esx-nvmupdaten64e_1.43.36.0-800.20613240.zip
Installing the nvmupdaten64e component: VIB INT_bootbank_nvmupdaten64e_1.43.36.0-1OEM.800.1.0.20613240 installed, Reboot Required: true

The result lists the installed VIB INT_bootbank_nvmupdaten64e_1.43.36.0-1OEM.800.1.0.20613240 and Reboot Required: true. Reboot the host now (it is already in maintenance mode) so /opt/nvmupdaten64e/bin/nvmupdaten64e becomes available, then SSH back in for Step 5.

Gotcha: a relative file name fails with MetadataDownloadErrorV2 ... No such file or directory: '/var/log/vmware/...zip'. esxcli resolves relative paths against its own working directory, /var/log/vmware, not your shell’s. Always pass an absolute path, or use -d $(pwd)/<file>.zip.

If you get an acceptance-level error, check and lower it:

esxcli software acceptance get
esxcli software acceptance set --level=PartnerSupported

Confirm the component and the tool are there:

esxcli software vib list | grep -i nvmupdate
ls -l /opt/nvmupdaten64e
After the reboot: nvmupdaten64e 1.43.36.0-1OEM.800.1.0.20613240 (INT, VMwareAccepted) installed, /opt/nvmupdaten64e/bin present

The VIB nvmupdaten64e is listed (vendor INT, acceptance level VMwareAccepted, so no change to the host acceptance level was needed) and the tool lives in /opt/nvmupdaten64e/bin.

After the reboot, both commands should return a result. If /opt/nvmupdaten64e/bin/nvmupdaten64e is still missing, check the VIB list and reinstall the component.

Step 5 – Run the inventory, then the update

Go to the installed tool and point it with -a at the extracted ESXi_x64 folder, where nvmupdate.cfg and the NVM images live:

cd /opt/nvmupdaten64e/bin
./nvmupdaten64e -a /vmfs/volumes/datastore1/700Series/ESXi_x64

The tool runs an inventory, shows an interactive menu, flashes the adapter and then shows the inventory again. The full run on my lab host:

Full nvmupdaten64e run: X710 adapter 01 at 9.32(9.20) Update available; selection A, backup Y; after the update 9.87(9.57) Update successful, reboot required

Reading the table:

ColumnMy lab hostMeaning
Num01Adapter index you select in the menu
DescriptionIntel Ethernet Converged Network Adapter X710One line per adapter, not per port: both vmnic1 and vmnic2 are updated together
Ver.(hex)9.32(9.20)Current NVM; the value in brackets is the 9.20 that esxcli shows
DevId1572Same Device ID as in Step 2
S:B00:005PCI segment and bus, so bus 05 = 0000:05:00.x
StatusUpdate availableOther values: Up to date, Not supported (usually an OEM card)

At Enter selection type A (all adapters) or the adapter number (01, or a comma-separated list), then Enter.

When the tool asks whether to back up the current NVM images, answer Y. Keep that backup: it’s your way back to 9.20.

The backup files are written to the folder you start the tool from. Started from /opt/nvmupdaten64e/bin, they sit in the host’s RAM disk and are lost at the next reboot, so copy them to the datastore first: cp /opt/nvmupdaten64e/bin/*.bin /vmfs/volumes/datastore1/700Series/ESXi_x64/ (check with ls -lt which files are new).

Answer X instead to exit without changing anything – useful for a dry run on other hosts.

Unattended alternative – no prompts; logs, results and backup go to the package folder so they survive the reboot:

cd /vmfs/volumes/datastore1/700Series/ESXi_x64
/opt/nvmupdaten64e/bin/nvmupdaten64e -a /vmfs/volumes/datastore1/700Series/ESXi_x64 -u -b -l update.log -o update.xml
OptionMeaning
-a <folder>Folder with nvmupdate.cfg and the NVM images
-iInventory only, no update
-uUnattended: no prompts
-bBack up the current NVM images first
-l <file>Write a log
-o <file>Write results as XML

The flash takes a few minutes per adapter. Do not interrupt it and do not power off the host. When it’s done, the second table shows the new version – here 9.87(9.57) with status Update successful – followed by A reboot is required to complete the update process and All operations completed successfully. Press any key to exit, then go to Step 6.

Step 6 – Reboot and verify

The new NVM only loads after a full reboot (some cards need a cold power cycle; if the version hasn’t changed after a warm reboot, power the server off and on via iDRAC/iLO).

reboot

After the host is back, rerun the check from Step 1:

for n in $(esxcli network nic list | awk '/i40en/{print $1}'); do
  echo "$n: $(esxcli network nic get -n $n | grep 'Firmware Version')"
done
After the reboot: vmnic1 and vmnic2 both report Firmware Version 9.57 0x80010371 1.3602.0

Both ports now report 9.57 0x80010371 1.3602.0. Compared with Step 1:

PartBeforeAfter
NVM version9.209.57
eTrack ID0x8000d8c50x80010371
Combo image (boot agent)1.3602.01.3602.0 – unchanged, this package only updates the NVM

Also confirm the links are up:

esxcli network nic list
After the update: vmnic1 and vmnic2 (i40en, X710) Admin Up, Link Up, 10000 Mb/s Full duplex

vmnic1 and vmnic2 are back with Admin Status Up, Link Status Up at 10000 Mb/s full duplex – same as before the update. Then continue with the cleanup in Step 7.

In the vSphere Client the same information is under host → Configure → Networking → Physical adapters.

Step 7 – Clean up

Do this once the host runs 9.57 and its links are up. It removes everything the update added, so the host is back to a clean, compliant state.

1. Save the NVM backups and logs. They are your way back to the old firmware. From your workstation:

mkdir -p esx01-nvm-backup
scp -r root@esx01:/vmfs/volumes/datastore1/700Series/ESXi_x64/ esx01-nvm-backup/

The copy holds the backup images (created with -b or by answering Y), inventory.log, update.log and update.xml.

2. Remove the update tool component. Find its exact name, then remove it:

esxcli software component list | grep -i nvmupdate
esxcli software component remove -n Intel-esx-nvmupdaten64e
Removing the component: Intel-esx-nvmupdaten64e 1.43.36.0-800.20613240 removed, Reboot Required: true

The component is Intel-esx-nvmupdaten64e (Intel NVM Update Tool, 1.43.36.0-800.20613240). The result shows it under Components Removed with Reboot Required: true, so reboot the host once more before the check in step 5.

3. Restore the acceptance level if you lowered it in Step 4:

esxcli software acceptance get
esxcli software acceptance set --level=VMwareAccepted   # or whatever it was before

4. Delete the package files from the datastore:

rm -rf /vmfs/volumes/datastore1/700Series
rm -f  /vmfs/volumes/datastore1/700Series_NVMUpdatePackage_v9_57_ESX.tar.gz

5. Check the host is clean:

esxcli software vib list | grep -i nvmupdate   # no output expected
ls /opt/nvmupdaten64e/bin 2>/dev/null                  # gone or empty

6. Put the host back in service. Exit maintenance mode (esxcli system maintenanceMode set --enable false or in the vSphere Client) and stop SSH if you only enabled it for this.

7. vLCM clusters: run Check compliance on the cluster. The host should be compliant again now that the manual VIB is gone.

Then move to the next host.

Optional – Driver update and vLCM

Update the i40en driver if the compatibility guide pairs NVM 9.57 with a newer driver. Download the driver component for your ESXi version and install it with an absolute path:

esxcli software component apply -d /vmfs/volumes/datastore1/<i40en-component>.zip
reboot

vLCM-managed clusters (vSphere 8, VCF 9): a VIB installed by hand puts the host out of compliance with the cluster image. Remove the helper afterwards, or add the driver component to the cluster image instead of installing it by hand. Firmware itself is not tracked by the image unless you use a vendor Hardware Support Manager, so that part stays manual.

Troubleshooting

SymptomCause and fix
MetadataDownloadErrorV2 ... /var/log/vmware/...zip: No such fileRelative path. Use the full /vmfs/volumes/... path with esxcli.
Acceptance level error on VIB installesxcli software acceptance set --level=PartnerSupported
Adapter shows Not supported or isn’t listedOEM-branded card or unsupported model. Use the server vendor’s firmware package.
Access error or tool can’t open the deviceHelper component missing or not loaded. Check esxcli software vib list | grep nvmupdate; reinstall it.
Permission denied running the toolRun /opt/nvmupdaten64e/bin/nvmupdaten64e; ESXi 8+ won’t execute the datastore copy
Firmware version unchanged after rebootDo a cold power cycle (power off, wait 30 s, power on).
Links down after the updateCheck the i40en driver against the compatibility guide for NVM 9.57 and update it.
Need to go backUse Intel’s 700 Series NVM downgrade package (9.57 → 9.56 and earlier).

Sources

Homelab 2.0 – VCF 9.0.1 on Dell PowerEdge R640

Introduction

After a long period of not blogging and a compromised website I take a new start.

This post documents the baseline configuration of my homelab which is built around VMware Cloud Foundation (VCF) 9.0.1 running on Dell PowerEdge R640 servers. All future posts will assume this environment unless explicitly stated otherwise.

The primary goal of this homelab is to provide a realistic, repeatable platform for testing VMware features, validating upgrade paths, and developing automation workflows without impacting production environments. Also this lab is being rebuild regular as this is being used a demo material in The VCF trainings I teach. Sometimes things go crazy and things get broken. Luckily I have another smaller VCF environment that runs as a kind of production environment. This is run on MiniForum MS-A2 devices. I will give you more info how this is setup in another post.


Homelab Goals

This homelab is used for:

  • VMware Cloud Foundation (VCF) lifecycle management
  • vSphere and vCenter feature validation
  • HCX migration testing
  • PowerShell / PowerCLI automation
  • Patch, upgrade, and failure scenario testing
  • General infrastructure experimentation
  • Demo Material during the VCF training classes I teach as Broadcom VMware VCI

Hardware Overview

Physical Hosts

The homelab consists of multiple Dell PowerEdge R640 servers.

ComponentSpecification
Server ModelDell PowerEdge R640
CPUDual Intel(R) Xeon(R) Gold 6240 CPU @ 2.60GHz
Memory512 GB RAM per host
BootBOSS-S1 with mirrored M.2 SSDs
StorageLocal SSD / NVMe for vSAN (2×1.6TB)
NetworkingDual 25GbE SFP+ + Dual 10GbE + 1Gbe iDRAC

Out-of-Band Management

  • iDRAC 9 Enterprise
  • Dedicated management NIC
  • Static IP addressing

Network Architecture

My network infrastructure is based on Ubiquity material.

PurposeDevice
Router / FirewallDream Machine Pro
SFP+ AggregateUSW Pro Aggregation
28x10GbE + 4x25GbE
Network switchPro Max 48
32x1GbE + 16×2.5GbE + 4x10GbE SFP+

The network is segmented using VLANs to mirror production-style deployments.

VLAN & IP Plan

PurposeVLANSubnet
Management INFRA3192.168.3.0/24
Management VM4192.168.4.0/24
vMotion7192.168.7.0/24
vSAN6192.168.6.0/24
NSX Overlay12192.168.12.0/24
Storage (iSCSI – NFS)5192.168.5.0/24

All ESXi hosts are configured with redundant 10GbE and 25 GBE uplinks connected to a managed switch supporting VLAN trunking. the 25 GbE nics will be used for vSAN, vMotion, NSX Overlay. One 25GbE NIC is really 25GbE connected.


Software Stack & Versions

The following software versions are used as the baseline for this homelab:

ComponentVersion
VMware Cloud Foundation9.0.1
ESXiIncluded with VCF 9.0.1
vCenter ServerIncluded with VCF 9.0.1
NSXIncluded with VCF 9.0.1
vSANIncluded with VCF 9.0.1
Dell OpenManageLatest supported version

Note: Versions may change over time as upgrades are performed. This post will be updated accordingly.


Core Infrastructure Services

DNS

  • Internal DNS hosted on a Microsoft Windows 2025 server
  • Forward and reverse DNS configured for all infrastructure components

NTP

  • Central NTP source configured for all ESXi hosts, vCenter, and VCF components
  • I use 3 enteries, 0.be.pool.ntp.org, 1.be.pool.ntp.org and 2.be.pool.ntp.org
  • Time synchronization validated before any VCF deployment
  • Firewall allows servers to go to internet for the NTP configuration

Certificates

Certificates

  • Initial deployment uses VMware-generated certificates
  • Future posts will cover integration with an internal Certificate Authority on a Windows 2025 Server

Licenses

  • As vExpert I was happy I got a VMUG Advantage Package. And finishing up some VMware Certificates you get licenses in the VMUG Advantage program.

Authentication & Access

  • vCenter authentication via local SSO domain
  • ESXi root access enabled for troubleshooting
  • SSH access restricted and enabled only when required. 1 host has permanent SSH open as this makes it easier when doing demos.
  • API access used extensively for automation and scripting

VCF Deployment Assumptions

All future posts assume the following prerequisites are met:

  • Fully functional DNS with forward and reverse lookup
  • Reliable NTP configuration across all hosts
  • VLAN-backed networking with jumbo frames where applicable
  • iDRAC access for all physical servers
  • Administrative access to the VCF management domain

If your environment differs, adjustments may be required.


What’s Next

Upcoming posts will cover:

  • Preparing Dell PowerEdge R640 servers for VCF 9.0
  • How to get VCF 9.0 License Keys
  • VCF bring-up and management domain deployment
  • NSX configuration and workload domain creation
  • HCX deployment and migration testing
  • PowerShell and API-based automation examples

Change Log

  • v1.0 – Initial publication of homelab baseline

This post will be kept up to date as the homelab evolves.