On this page

VMware HCX troubleshooting

An HCX Bulk Migration with Retain MAC enabled fails validation with "The mac address of the VM belongs to the reserved mac range, retain mac is not supported for such vms". The VM's MAC address sits in a range VMware reserves for vSphere's own address allocation (prefixes 00:0C:29 and 00:50:56), so HCX will not carry it to the destination. You can fix it by giving the source VM a MAC address outside the reserved range, or by migrating without Retain MAC so the destination assigns a new one.

We see this error most often in estates that have been through several platform moves, physical-to-virtual conversions or hand-built VMs, where MAC addresses were typed in years ago and nobody has looked at them since. This guide explains how VMware allocates MAC addresses, why HCX refuses some of them, the two fixes and how to choose between them, and a related Retain MAC conflict that catches people on second migrations.

The fix in 60 seconds

  • The error comes from HCX validation. Nothing has been copied yet, so the source VM is untouched.
  • MAC addresses starting 00:0C:29 or 00:50:56 belong to ranges VMware reserves for vSphere. HCX does not retain MAC addresses from those reserved ranges.
  • Fix A: change the source VM's MAC address to one outside the reserved range, then rerun validation.
  • Fix B: turn off Retain MAC for that VM. The destination VM gets a new MAC address and the source is left as it is.
  • If Retain MAC fails on a second migration with a MAC conflict, an earlier migrated copy of the VM still holds that address in the destination vCenter.

The exact error message

HCX reports the problem during migration validation, before any data moves. The mobility group shows a general failure followed by a per-VM reason:

One or more VMs have errors, cannot proceed with migration.
The mac address of the VM belongs to the reserved mac range, retain mac is not supported for such vms

Broadcom documents this in KB 316680 for HCX Bulk Migration with the Retain MAC option selected.

How vSphere assigns MAC addresses

A MAC address is six bytes. The first three are the Organizationally Unique Identifier (OUI) that identifies the vendor, and the last three identify the network adapter. VMware uses its OUIs in three different ways, and the difference explains why some addresses are safe to carry between environments and others are not.

How VMware MAC addresses are structured and allocated A VMware MAC address 00:50:56:XX:YY:ZZ is split into the VMware OUI, the XX byte and two random bytes. The XX byte decides the range: 00 to 3F for manually assigned static MACs, 40 to 7F to be avoided because it overlaps VMware Workstation and GSX Server, and 80 to BF for vCenter generated MACs where XX is 128 plus the vCenter Server ID. A separate box shows 00:0C:29 for MACs generated by an ESXi host that is not connected to vCenter. Anatomy of a VMware MAC address 00:50:56 VMware OUI XX sets the range YY:ZZ adapter bytes Value of XX in 00:50:56:XX:YY:ZZ 00 to 3F Manual static MAC (admin assigned) 40 to 7F Avoid: overlaps Workstation / GSX 80 to BF vCenter generated XX = 128 + vCenter ID C0 to FF Not documented for vSphere 00:0C:29:YY:ZZ:WW Generated by an ESXi host that is not connected to vCenter Server. The host tracks these to avoid duplicates on that host only.
Figure 1. VMware MAC address structure and the ranges each allocation scheme uses. Sources: vSphere 8 networking documentation.
RangeWho assigns itNotes
00:50:56:00:00:00 to 00:50:56:3F:FF:FFAn administrator (static MAC)The documented range for manual MACs in vSphere
00:50:56:40:00:00 to 00:50:56:7F:FF:FFNobody, in vSphereKept clear to avoid VMware Workstation and GSX Server addresses
00:50:56:80:00:00 to 00:50:56:BF:FF:FFvCenter ServerXX is 128 plus the vCenter ID: up to 64 vCenters, about 64,000 MACs each
00:0C:29:xx:xx:xxA standalone ESXi hostUsed when the host is not connected to vCenter

Table 1. VMware MAC address ranges in vSphere.

Both prefixes are reserved for vSphere's own use. vCenter and ESXi hand out addresses from them and track what they have issued so that two VMs do not end up with the same one. An address that was generated by a different vCenter, or typed in by hand years ago, sits inside that space without the destination vCenter knowing where it came from.

Why HCX refuses to retain these MAC addresses

With Retain MAC selected, HCX creates the destination VM with the same MAC address as the source. That keeps DHCP reservations, MAC-based licences and firewall rules working after cutover, which is why it is popular for migrations that use Network Extension. The KB states that HCX cannot retain a MAC address from the VMware reserved range and blocks the migration at validation.

In our reading, the reason is collision risk. The destination vCenter allocates its own MAC addresses from the same reserved ranges. If HCX brought in an address from those ranges, the destination vCenter could later generate the same value for another VM, and two adapters with one MAC on the same Layer 2 segment cause intermittent packet loss that is very hard to trace. Refusing up front is safer than letting a duplicate surface weeks after cutover.

HCX Bulk Migration Retain MAC validation flow An HCX Bulk Migration is submitted. If Retain MAC is off, the migration proceeds and the destination VM gets a new MAC. If Retain MAC is on and the source MAC is outside the reserved range, the migration proceeds with the same MAC. If it is inside the reserved range, validation fails with the reserved mac range error, and the fix is either to change the source MAC or to turn off Retain MAC. Bulk Migration submitted Retain MAC on? Proceeds. Destination gets a new MAC Source MAC in reserved range? Proceeds. Destination keeps the same MAC Validation fails: "reserved mac range" error Fix A: change the source MAC Fix B: turn off Retain MAC NoYesNoYes
Figure 2. Where the reserved MAC check sits in HCX Bulk Migration validation, and the two ways out.

Fix A: change the source VM's MAC address

Use this when the destination VM must keep a fixed, known MAC address, for example because a licence server or a DHCP reservation is tied to it. You change the address once at the source, update whatever depends on it, then migrate with Retain MAC so the new value carries through.

  1. Agree the new MAC address. If you want to stay in the VMware manual range, it must be between 00:50:56:00:00:00 and 00:50:56:3F:FF:FF. Check it is not already in use anywhere on the extended network.
  2. Schedule a maintenance window and power off the VM. vSphere only lets you set a manual MAC address on a powered-off VM.
  3. In the vSphere Client, select the VM, open Edit Settings and expand the network adapter.
  4. Set MAC Address to Manual and enter the new address. Choose Automatic instead if you only need vCenter to generate a fresh one.
  5. Update DHCP reservations, licence files, firewall objects and any guest network configuration bound to the old MAC, then power the VM on and test.
  6. Rerun HCX migration validation for the mobility group.
Check the guest before you change a MAC: some Linux distributions pin interface names or configuration to a hardware address (for example a HWADDR line in an ifcfg file, or a persistent udev rule), so the VM can come back up with no network. Look for these before the window, not during it.

If you still administer a much older ESXi host, you may find guidance that sets ethernetX.checkMACAddress = "false" in the VM's .vmx file to force a static MAC outside the allowed range. That workaround is from the ESXi 5.5 era and switches off the host's conflict check. We do not use it in migrations, because it hides exactly the duplicate-MAC problem HCX is trying to prevent.

Fix B: migrate without Retain MAC

Use this when nothing depends on the MAC address, which is true for most application servers that use static IP addresses or DHCP without reservations. In the mobility group, clear the Retain MAC option for the affected VM and rerun validation. HCX migrates the VM and the destination vCenter assigns a new MAC address from its own range. The source VM is not changed, so rollback is simple.

QuestionFix A: change MACFix B: no Retain MAC
Source VM changed?Yes, needs a power offNo
MAC after migrationThe new value you choseA new MAC from the destination vCenter
Good forLicences, DHCP reservations, MAC-based rulesMost servers with static IPs
Extra workUpdate dependencies before migrationUpdate dependencies after migration, if any
RollbackChange the MAC backPower the source back on

Table 2. Choosing between the two fixes.

A second Retain MAC problem shows up when you migrate the same VM more than once, for example after a test migration or a rollback. Broadcom documents it in KB 414407 for HCX with VMware Cloud on AWS. If the first migrated copy still exists in the destination vCenter, even powered off or renamed, the vCenter database still records its MAC address. The second migration cannot reuse that address and the destination logs a vim.event.VmMacConflictEvent.

Retain MAC conflict on a repeat migration Migration 1 creates a copy of the VM in the destination vCenter with the source MAC. That copy stays in inventory, powered off or renamed, and the vCenter database still holds the MAC. Migration 2 of the same VM with Retain MAC raises a VmMacConflictEvent. Fixes: remove the first copy from inventory, or replace its network adapter so it gets a new MAC. Source VM MAC 00:50:56:aa:bb:cc Migration 1 Retain MAC on Copy in destination still holds the MAC Migration 2 same VM, Retain MAC MAC conflict VmMacConflictEvent Fix before retrying Remove copy 1 from inventory, or give it a new network adapter
Figure 3. Why Retain MAC fails on a repeat migration when the first migrated copy is still registered in the destination vCenter.

The KB gives two ways to clear it before retrying:

  • Remove the first migrated VM from the destination vCenter inventory.
  • Or keep that VM but change its MAC address: in Edit Settings, remove the network adapter that holds the MAC, add a new adapter and connect it to the same port group or NSX segment.

In our experience this catches teams who run a test migration, power the copy off, roll back to the source and then try the real cutover a week later. Add "clean up test copies" to the cutover runbook.

Find affected VMs before the migration wave

You can find these VMs before validation does. This PowerCLI query lists every network adapter with a VMware-prefixed MAC address and how the address was assigned, so you can decide on Fix A or Fix B per VM during wave planning:

Get-VM | Get-NetworkAdapter |
  Where-Object { $_.MacAddress -match '^(00:0c:29|00:50:56)' } |
  Select-Object @{N='VM';E={$_.Parent.Name}}, Name, MacAddress,
    @{N='AddressType';E={$_.ExtensionData.AddressType}} |
  Sort-Object AddressType, VM |
  Export-Csv .\vm-mac-audit.csv -NoTypeInformation

The AddressType column shows manual for static MACs, assigned for vCenter-generated MACs and generated for host-generated ones. Manual entries and anything starting 00:0C:29 deserve the closest look, because they are the addresses most likely to have been set by hand or carried in from another environment. HCX validation remains the final word on which VMs it will accept with Retain MAC.

  • MAC audit exported for every VM in the wave
  • Each VM marked Retain MAC yes or no, with the reason
  • Owners confirmed for anything tied to a MAC: licences, DHCP reservations, firewall objects
  • Guest OS checked for configuration pinned to a hardware address
  • Test migration copies removed from the destination vCenter before cutover

Stuck on an HCX validation error?

Get your migration wave moving again

Consult Circle runs VMware HCX migrations into VCF and VMware Cloud on AWS. We can audit MAC addresses, plan Retain MAC per VM and clear validation errors before your cutover window.

Talk to our HCX team

For other failure patterns and the logs to read, see our HCX migration failure troubleshooting guide, the HCX Bulk Migration guide and the 70-point HCX migration checklist.

Frequently Asked Questions about the HCX reserved MAC range error

What does "the mac address of the VM belongs to the reserved mac range" mean in HCX?

It means the VM's MAC address is in a range VMware reserves for vSphere's own address allocation, and HCX will not retain it on the destination. HCX blocks the Bulk Migration at validation when Retain MAC is selected for that VM.

Which MAC address prefixes are reserved by VMware?

VMware uses the OUIs 00:50:56 and 00:0C:29. vCenter generates addresses from 00:50:56:80:00:00 to 00:50:56:BF:FF:FF, administrators assign static addresses from 00:50:56:00:00:00 to 00:50:56:3F:FF:FF, and standalone ESXi hosts generate addresses starting 00:0C:29.

How do I fix the HCX reserved MAC range error?

Either change the source VM's MAC address to one outside the reserved range and rerun validation, or turn off Retain MAC for that VM so the destination vCenter assigns a new MAC address.

Does turning off Retain MAC change the source VM?

No. The source VM keeps its MAC address. Only the migrated VM at the destination receives a new MAC address.

Do I need to power off a VM to change its MAC address?

Yes, to set a manual MAC address in the vSphere Client the VM must be powered off. Plan a maintenance window and check for anything that depends on the old address.

Why does Retain MAC fail with a MAC conflict on a second migration?

A copy from an earlier migration of the same VM still exists in the destination vCenter, so its MAC address is already registered. Remove that copy from inventory or replace its network adapter, then retry.

Is it safe to set ethernetX.checkMACAddress to false?

We do not recommend it for migrations. It is an old ESXi 5.5 workaround that disables the host's MAC conflict check, which can let duplicate MAC addresses onto the network.

Sources

Written by the Consult Circle VMware HCX migration team. Last reviewed 3 November 2026.

Share this article: