Skip to content

Est. 2011ยทMicrosoft Partner 7033487ยทDelivery under 3 minยทSupport 7 days a week

Your vault is empty.

Free Fix 0x000000BC

NETWORK_BOOT_DUPLICATE_ADDRESS 0x000000BC and PXE boot failures on WDS

12 min read Updated October 5, 2026 Windows Crashes & Boot Recovery

Fix it now

0x000000BC means the network boot code sent an ARP request for the address it had just been given and another machine answered for it. That is fatal during a network boot. The companion codes are not addressing failures at all, and each carries a parameter that says which step failed.

Run these from a working machine on the same subnet and from the DHCP server

arp -a
Get-DhcpServerInDC
Get-DhcpServerv4Lease -ScopeId <scope> | Where-Object AddressState -like '*Bad*'
  1. Work out which address is duplicated. arp -a on a machine on the same segment shows which MAC currently answers for it; the DHCP lease list shows who was meant to have it.
  2. Look through the scope for BAD_ADDRESS entries in the DHCP console. Those are the server telling you it has already detected a conflict.
  3. Remove any static reservation that overlaps the dynamic range, and exclude the block used by statically configured devices with New Exclusion Range on the scope.
  4. Turn on conflict detection: DHCP console, right-click the IPv4 node, Properties, Advanced, and set Conflict detection attempts to 1 or 2.
  5. If the stop code is 0x000000BB or 0x000000F8 rather than 0xBC, the address was fine. Read parameter 1 of the bug check – on both codes it names the step that failed – before touching the image.

Conflict detection makes the server ping each address before offering it, which adds delay to every lease. One or two attempts is a fair trade during an imaging project; leaving it high on a busy scope is not.

If two machines now PXE boot in a row without a stop code, you are done. If not, the next section walks the network boot path and shows where each code sits on it.

Why it happens

A PXE boot involves more DHCP traffic than people expect. The adapter’s own PXE client requests an address and, separately, discovers where to fetch a boot program. It downloads that program, which loads a boot image over TFTP or HTTP. Windows PE then comes up inside a RAM disk and starts its own network configuration, which may request an address again.

0x000000BC is raised on that path. Microsoft publishes it precisely: when TCP/IP sent out an ARP request for its IP address, it received a response from another machine indicating a duplicate IP address – and when Windows is booting off a network, that is a fatal error. The parameters are unusually useful here. Parameter 1 is the IP address as a DWORD, so an address aa.bb.cc.dd appears as 0xDDCCBBAA. When parameter 4 is zero the connection is Ethernet and the other machine’s MAC address is spread across parameters 2 and 3.

The other three codes are later failures on the same path and none of them is about addressing. 0x000000BB, NETWORK_BOOT_INITIALIZATION_FAILED, means Windows failed to boot off a network, and parameter 1 says where: 1 is a failure updating the registry, 2 is a failure starting the network stack – Windows sends IOCTLs to the redirector and datagram receiver and times out waiting for the redirector to be ready – and 3 is a failure sending the DHCP IOCTL to TCP. Parameter 2 is the failure status.

0x000000F8, RAMDISK_BOOT_INITIALIZATION_FAILED, is an initialisation failure while attempting to boot from the RAM disk, and again parameter 1 identifies the step: no LoaderXIPRom descriptor in the loader memory list, unable to open ramdisk.sys, FSCTL_CREATE_RAM_DISK failing, unable to create a GUID string, or unable to create the symbolic link to the RAM disk device. 0x00000100, LOADER_BLOCK_MISMATCH, means the loader block is invalid or does not match the system being loaded, with the block’s major and minor version in the parameters – which is what mixing boot files from different releases produces.

A second DHCP server is answering

You have this one if Clients receive addresses from a server IP you do not recognise, or from a range outside your scope. ipconfig /all on a working client names the server that answered.

  1. List the authorised servers with Get-DhcpServerInDC and compare that against what clients actually report.
  2. Look for a small router, a virtualisation host’s internal NAT switch, or a test appliance left plugged in. Those are the usual sources.
  3. Disconnect or reconfigure the unauthorised server, then release and renew on a test client.
  4. Where the segment is shared with another team, enable DHCP snooping on the switches so the network itself blocks unexpected servers.

Static addresses overlap the dynamic range

You have this one if The conflict is always on the same one or two addresses, and something on the network answers for them permanently.

  1. Identify what holds the address. Decode parameter 1 of the bug check, or read arp -a; the first half of the MAC identifies the manufacturer.
  2. Either move the device outside the scope, or create a reservation so DHCP stops offering that address to anyone else.
  3. Add an exclusion range covering the block you keep for static addressing.
  4. Delete BAD_ADDRESS entries once the conflict is resolved so the scope reclaims them.

Cloned virtual machines share a MAC address

You have this one if Only certain virtual machines fail, and the DHCP server offers the same address to what it believes is the same client.

  1. Check the adapter MAC on the affected guests: Get-VMNetworkAdapter -VMName <name> | Select-Object VMName, MacAddress.
  2. Where a static MAC was copied with the machine, clear it so the host assigns a dynamic one, or set a unique value with Set-VMNetworkAdapter -VMName <name> -StaticMacAddress <address>.
  3. Check the MAC address pools on each virtualisation host. Two hosts built from the same template can hand out overlapping addresses.
  4. Delete the stale leases for the duplicated address and retry.

DHCP options are being used to redirect PXE clients

You have this one if Clients report No reply from Server, TFTP download failed, No boot Filename Received, or PXE-E55, and the DHCP scope carries options 60, 66 and 67.

  1. Remove options 60, 66 and 67 from the DHCP server. Microsoft states it does not support using these options to redirect PXE clients.
  2. Have the network team put the PXE or WDS server’s address in each client VLAN’s IP helper table instead, alongside the DHCP server’s.
  3. Retry a PXE boot on a client subnet and confirm the boot program now arrives.

With option 60 set to PXEClient in the initial offer, the client tries port 4011 on the DHCP server, which fails whenever the PXE server is a different machine. That is the documented failure, and no amount of re-adding the boot image fixes it.

The boot image or boot files are mismatched

You have this one if Addressing is clean, and the client stops with 0x00000100, or with 0x000000F8 whose parameter 1 points at the RAM disk creation steps.

  1. Use the boot image from the same release as the install images you serve. Mixing boot files across releases is what a loader block mismatch describes.
  2. Remove and re-add the image: wdsutil /Verbose /Progress /Add-Image /ImageFile:<path> /ImageType:Boot.
  3. Check the firmware mode of the failing client. UEFI and legacy clients need different network boot programs, and a Secure Boot client will refuse one that is not signed appropriately.

Full reference

Decoding the parameters, which is faster than guessing

Code Parameter 1 What it tells you
0x000000BC The IP address as a DWORD, byte-reversed Which address is duplicated. Parameters 2 and 3 hold the other machine’s MAC when parameter 4 is zero
0x000000BB 1, 2 or 3 1: updating the registry failed. 2: the network stack did not become ready. 3: the DHCP IOCTL to TCP failed
0x000000F8 1 to 5 1: no LoaderXIPRom descriptor. 2: could not open ramdisk.sys. 3: FSCTL_CREATE_RAM_DISK failed. 4: could not build the GUID string. 5: could not create the symbolic link
0x00000100 3 Parameters 2, 3 and 4 carry the loader block’s size and its major and minor version

An address of the form aa.bb.cc.dd appears in parameter 1 of 0xBC as 0xDDCCBBAA, so read the bytes back to front. A MAC of aa-bb-cc-dd-ee-ff makes parameter 2 read 0xAABBCCDD and parameter 3 read 0xEEFF0000. That is enough to identify the offending machine from the stop screen alone, without touching DHCP.

Where WDS should sit relative to DHCP

Microsoft’s position on this is explicit and it settles a long-running argument. Setting DHCP option 60 to PXEClient, with options 66 and 67 naming the boot server and boot file, makes the client attempt to contact port 4011 on the DHCP server – which fails if the PXE server is a different machine. Microsoft states it does not support using these options on a DHCP server to redirect PXE clients, and gives the resolution as removing them and configuring the router’s IP helper table with the PXE server’s address.

That also solves the practical problem those options create. A boot file name hard-coded in a DHCP option cannot be right for BIOS and UEFI clients at the same time, whereas a server that receives the request itself can decide what to send.

Commands worth having open

Command Purpose
arp -a Shows which MAC currently answers for an IP on the local segment
ipconfig /all Names the DHCP server that answered a working client
Get-DhcpServerInDC Lists the DHCP servers authorised in Active Directory
Get-DhcpServerv4Lease -ScopeId <scope> Lists current leases, including addresses marked bad
wdsutil /Verbose /Progress /Add-Image /ImageFile:<path> /ImageType:Boot Adds a boot image to WDS with progress output

Things worth checking that are not documented as causes

  • Excluding the RemoteInstall folder from on-access antivirus scanning. A scanner holding a WIM open during transfer is a plausible source of truncated downloads, but it is engineering judgement rather than a published cause.
  • Switch port configuration. Spanning tree convergence on a port without portfast can outlast the PXE client’s patience, which looks like a server problem.
  • Link speed and duplex mismatches on older switches, which produce transfers that start and stall.
  • Whether the boot image was ever re-added after a servicing update to the WIM. A partially updated image is a good candidate for a loader block mismatch.

Changes to DHCP scopes, exclusions and conflict detection affect every device on the subnet, not only the machines you are imaging. Make them in a maintenance window and write down what you changed so it can be reversed.

Every code this article covers

Code What it points at Source
0x000000BC NETWORK_BOOT_DUPLICATE_ADDRESS: TCP/IP sent an ARP request for its IP address and another machine answered, indicating a duplicate. Fatal when booting off a network. Parameter 1 is the address as a byte-reversed DWORD Microsoft Learn
0x000000F8 RAMDISK_BOOT_INITIALIZATION_FAILED: an initialisation failure while attempting to boot from the RAM disk. Parameter 1 identifies which of five steps failed; parameter 2 is the NTSTATUS Microsoft Learn
0x00000100 LOADER_BLOCK_MISMATCH: the loader block is invalid, or does not match the system being loaded. The parameters carry the block’s size and its major and minor version Microsoft Learn
0x000000BB NETWORK_BOOT_INITIALIZATION_FAILED: Windows failed to boot off a network. Parameter 1 is 1 for a registry update failure, 2 for the network stack not becoming ready, 3 for the DHCP IOCTL to TCP failing; parameter 2 is the failure status Microsoft Learn

Confirm the fix worked

  1. PXE boot two machines one after the other and confirm both reach the Windows PE stage without a stop code.
  2. No new BAD_ADDRESS entries appear in the scope during the test.
  3. arp -a from a machine on the same subnet maps each address to exactly one MAC.
  4. The WDS event log records successful image transfers matching your test boots.
  5. A UEFI client and a legacy BIOS client, if you have both, each receive the right network boot program.

Questions people ask about this

Does WDS have to sit on the same subnet as the clients?

No. Microsoft’s documented arrangement is an IP helper entry on the router for each client VLAN, forwarding to the DHCP server and to the PXE server. That lets the PXE server decide which boot program each client should receive rather than hard-coding one in a DHCP option.

Are DHCP options 66 and 67 really unsupported?

Microsoft states it does not support using options 60, 66 and 67 on a DHCP server to redirect PXE clients, and documents the failures they cause – No reply from Server, TFTP download failed, No boot Filename Received and PXE-E55. The published resolution is to remove them and use the router’s IP helper table.

Why does the same image work on one machine and fail on another?

Firmware differences. UEFI and legacy BIOS clients need different network boot programs, and a client with Secure Boot enabled will refuse one that is not signed appropriately. Check the firmware mode before blaming the image.

Do I need extra licensing for Windows Deployment Services?

The role is part of Windows Server, so there is nothing extra to buy for the role itself. Each Windows installation you deploy still needs its own licence, and the server still needs client access licences for the users or devices connecting to it. Fixing this error costs nothing.

Can conflict detection slow down normal DHCP?

Slightly. Each attempt makes the server ping the address before offering it, which adds delay to every lease. One or two attempts is reasonable during an imaging project; a high value on a busy scope is not.

Related error codes

Was this article helpful?

Your feedback helps us improve our documentation.

Related articles

Free Fix Windows RE update fails with 0x80070643 – recovery partition too small License Error DRIVER_CORRUPTED_MMPOOL 0x000000D0 and driver pool corruption bugchecks Free Fix CLOCK_WATCHDOG_TIMEOUT 0x00000101 – a CPU core stopped responding License Error There was a problem resetting your PC – error 0x80070003 in Reset This PC
โ† Back to Knowledge Base