Skip to content
Client Panel

ESXi Update Guide (Online & Offline)

This guide covers updating VMware ESXi using the command-line interface (ESXCLI). Since Broadcom acquired VMware, the public online depot (hostupdate.vmware.com) has been shut down. All updates now go through the Broadcom Support Portal using offline patch files uploaded to a datastore.

Version key: 🟢 = ESXi 6.x · 🔵 = ESXi 7.x · 🟣 = ESXi 8.x · 🟠 = ESXi 9.x

The old hostupdate.vmware.com online depot no longer exists : the domain has no DNS resolution and returns nothing. This means:

  • esxcli software profile update -d https://hostupdate.vmware.com/... no longer works
  • You must download patch bundles manually from the Broadcom Support Portal
  • The offline datastore method is now the only supported approach via ESXCLI
  • A Broadcom account with valid VMware entitlements is required to download patches

If your host has internet access, you can set up a self-hosted HTTP depot using nginx or Python’s http.server and point ESXCLI at it. See Method 2 below.


update vs install: Patch or Major Upgrade?

Section titled “update vs install: Patch or Major Upgrade?”

ESXCLI has two profile commands with different behaviours:

CommandPurposeSame-version patchMajor upgrade (6→7, 7→8)
esxcli software profile updateApply newer content only✅ Yes❌ No
esxcli software profile installFull overwrite, any version✅ Yes (overkill)✅ Yes
  • update applies only newer VIBs than what’s currently installed. It skips packages with lower revision numbers. Use this for patching within the same major version (e.g., 8.0U2 → 8.0U3).
  • install overwrites all packages regardless of version. It can install older, newer, or entirely different versions. Use --allow-downgrades if the target profile has any older packages. This is what you need for cross-version upgrades (6.x → 7.x, 7.x → 8.x, etc.).

Hardware compatibility check: Always verify your hardware is supported on the target ESXi version before a major upgrade. Check the VMware Compatibility Guide. ESXi 8.x dropped support for many older CPUs — upgrading a 6.x host to 8.x may fail on unsupported hardware.

Same version? (e.g. 8.0U2 → 8.0U3)
└─ Use: esxcli software profile update -p <profile> -d <depot.zip>
Cross-version? (e.g. 7.0 → 8.0, 6.7 → 7.0)
└─ Use: esxcli software profile install -p <profile> -d <depot.zip> --allow-downgrades

All steps (download, upload, maintenance mode, reboot) are the same for both commands: only the final apply command changes.


Method 1: Offline Update (Datastore Patch) : Primary

Section titled “Method 1: Offline Update (Datastore Patch) : Primary”

This is the standard method: download the patch from Broadcom, upload to a datastore, and apply via ESXCLI.

Step 1: Download the Patch from Broadcom 🟢🔵🟣🟠

Section titled “Step 1: Download the Patch from Broadcom 🟢🔵🟣🟠”
  1. Log in to support.broadcom.com

  2. Go to SoftwareVMware vSphereESXi

  3. Choose your ESXi version (e.g., 8.0, 7.0, 6.7)

  4. Download the Offline Bundle (depot ZIP). Filenames look like:

    VMware-ESXi-8.0U3d-24585383-depot.zip

    or for earlier/update bundles:

    ESXi800-202503001.zip
    update-from-esxi8.0-8.0U3d.zip

🟠 ESXi 9.x: the portal structure is the same. Look under VMware vSphereESXi 9.x.

Step 2: Upload Patch to a Datastore 🟢🔵🟣🟠

Section titled “Step 2: Upload Patch to a Datastore 🟢🔵🟣🟠”

Upload the ZIP to an ESXi datastore. SCP is recommended for large files:

Terminal window
scp VMware-ESXi-8.0U3d-24585383-depot.zip root@192.168.0.100:/vmfs/volumes/datastore1/patches/

Or use the vSphere Client: Storage → datastore → Files → Upload.

Create a dedicated patches/ directory on the datastore to keep things organized.

Step 3: SSH into ESXi and Check Current Version 🟢🔵🟣🟠

Section titled “Step 3: SSH into ESXi and Check Current Version 🟢🔵🟣🟠”

Enable SSH (Host → Actions → Services → Enable Secure Shell), then connect:

Terminal window
ssh root@192.168.0.100
vmware -v
### Example output
# VMware ESXi 8.0.2 build-23825572

Verify the patch file is accessible:

Terminal window
ls -lh /vmfs/volumes/datastore1/patches/

Step 4: Shut Down VMs and Enter Maintenance Mode 🟢🔵🟣🟠

Section titled “Step 4: Shut Down VMs and Enter Maintenance Mode 🟢🔵🟣🟠”

Power off all VMs on the host, then:

Terminal window
esxcli system maintenanceMode set --enable=true

Or with vim-cmd:

Terminal window
vim-cmd /hostsvc/maintenance_mode_enter
vim-cmd /hostsvc/hostsummary | grep inMaintenanceMode # verify

Step 5: List Profiles in the Patch Bundle 🟢🔵🟣🟠

Section titled “Step 5: List Profiles in the Patch Bundle 🟢🔵🟣🟠”

List the image profiles inside the offline bundle:

Terminal window
esxcli software sources profile list -d /vmfs/volumes/datastore1/patches/VMware-ESXi-8.0U3d-24585383-depot.zip

Example output:

Name Vendor Acceptance Level
ESXi-8.0U3d-24585383-standard VMware, Inc. PartnerSupported
ESXi-8.0U3d-24585383-no-tools VMware, Inc. PartnerSupported

Pick -standard for a full update (includes VMware Tools). Use -no-tools for a minimal update.

🟣🟠 ESXi 8.0U2+: use esxcli software profile update. The esxcli software vib commands are deprecated and no longer work.

Profile-based (recommended for ESXi 7.0+, required for 8.0U2+):

For same-version patching (e.g., 8.0U2 → 8.0U3):

Terminal window
esxcli software profile update \
-p ESXi-8.0U3d-24585383-standard \
-d /vmfs/volumes/datastore1/patches/VMware-ESXi-8.0U3d-24585383-depot.zip

For major version upgrades (e.g., 7.0 → 8.0, 6.7 → 7.0), use install instead:

Terminal window
esxcli software profile install \
-p ESXi-8.0U3d-24585383-standard \
-d /vmfs/volumes/datastore1/patches/VMware-ESXi-8.0U3d-24585383-depot.zip \
--allow-downgrades

--allow-downgrades is needed because the target profile may contain VIBs with lower revision numbers than what’s installed. Without it, the install will fail if ANY VIB would be downgraded.

VIB-based (ESXi 6.x and 7.x only):

Terminal window
# 🟢 ESXi 6.x / 🔵 ESXi 7.x (pre-8.0U2)
esxcli software vib update \
-d /vmfs/volumes/datastore1/patches/ESXi700-202503001.zip

Dry run first (optional): add --dry-run to preview without applying:

Terminal window
esxcli software profile update -p ESXi-8.0U3d-24585383-standard \
-d /vmfs/volumes/datastore1/patches/VMware-ESXi-8.0U3d-24585383-depot.zip \
--dry-run

If you get [HardwareError] (unsupported CPU warning), add --no-hardware-warning:

Terminal window
esxcli software profile update \
-p ESXi-8.0U3d-24585383-standard \
-d /vmfs/volumes/datastore1/patches/VMware-ESXi-8.0U3d-24585383-depot.zip \
--no-hardware-warning

Step 7: Reboot and Verify 🟢🔵🟣🟠

Section titled “Step 7: Reboot and Verify 🟢🔵🟣🟠”
Terminal window
reboot
# Or with a reason string:
esxcli system shutdown reboot -r "patch ESXi 8.0U3d"

After the host boots back up, exit maintenance mode:

Terminal window
esxcli system maintenanceMode set --enable=false
# Or:
vim-cmd hostsvc/maintenance_mode_exit

Verify the update:

Terminal window
vmware -v
esxcli software profile get
esxcli software vib list | grep esx-base

Power on your VMs.


Method 2: Self-Hosted HTTP Depot (Optional)

Section titled “Method 2: Self-Hosted HTTP Depot (Optional)”

If you want an “online-like” workflow (e.g., multiple hosts pulling from a central server), host the depot ZIP on an internal HTTP server:

Extract the downloaded ZIP to a directory and serve it:

Terminal window
# On your Linux server/workstation
mkdir -p /srv/esxi-depot
cd /srv/esxi-depot
unzip /path/to/VMware-ESXi-8.0U3d-24585383-depot.zip
# Serve with Python (no auth, LAN-only)
python3 -m http.server 8080

Or with nginx:

server {
listen 80;
server_name depot.internal.lan;
root /srv/esxi-depot;
autoindex on;
}

On the ESXi host:

Terminal window
esxcli software sources profile list -d http://192.168.0.50:8080/index.xml
esxcli software profile update -p ESXi-8.0U3d-24585383-standard -d http://192.168.0.50:8080/index.xml

The depot ZIP contains an index.xml at the root. ESXCLI reads it to discover profiles and VIBs, same as it did with the old VMware online depot.


Method 3: Single VIB File (Legacy Drivers) 🟢🔵

Section titled “Method 3: Single VIB File (Legacy Drivers) 🟢🔵”

For applying individual driver updates or async VIBs (e.g., NIC drivers, HBA firmware):

Terminal window
# 🟢🔵 ESXi 6.x & 7.x : from a local VIB file
esxcli software vib install -v /vmfs/volumes/datastore1/drivers/DriverName.vib
# 🟢🔵 ESXi 6.x & 7.x : from a local ZIP bundle
esxcli software vib update -d /vmfs/volumes/datastore1/drivers/driver-bundle.zip

🟣🟠 ESXi 8.0U2+: individual VIB installation is no longer supported. Use esxcli software profile update with the full depot ZIP instead.


When listing profiles from a large depot (online or self-hosted), ESXi 8.x may throw [MemoryError]. The default ESXCLI memory limit is 300MB:

Terminal window
grep 'mem=' /usr/lib/vmware/esxcli-software
# #!/usr/bin/python ++group=esximage,mem=300

Increase it to 500MB:

Terminal window
esxcli system settings advanced set -o /VisorFS/VisorFSPristineTardisk -i 0
cp /usr/lib/vmware/esxcli-software /usr/lib/vmware/esxcli-software.bak
sed -i 's/mem=300/mem=500/g' /usr/lib/vmware/esxcli-software.bak
mv /usr/lib/vmware/esxcli-software.bak /usr/lib/vmware/esxcli-software -f
esxcli system settings advanced set -o /VisorFS/VisorFSPristineTardisk -i 1

Feature🟢 ESXi 6.x🔵 ESXi 7.x🟣 ESXi 8.x🟠 ESXi 9.x
esxcli software vib update✅ Supported✅ Supported❌ Deprecated (8.0U2+)❌ Not available
esxcli software profile update✅ Supported✅ Supported✅ Required (8.0U2+)✅ Required
Offline datastore patch
Self-hosted HTTP depot
Broadcom portal downloads
Old hostupdate.vmware.com❌ Dead❌ Dead❌ Dead❌ Dead
MemoryError workaround neededNoNoYes (8.x)Yes

  • Forgetting to shut down VMs before entering maintenance mode. The host will refuse maintenance mode if VMs are still running.
  • Using esxcli software vib update on ESXi 8.0U2+. This returns an error: switch to esxcli software profile update.
  • Wrong datastore path. Use the full path: /vmfs/volumes/DATASTORE_NAME/... or /vmfs/volumes/UUID/....
  • Broadcom portal access. If you cannot find your ESXi downloads, verify your Broadcom account has the correct entitlements (tied to your VMware license/support contract).