The solution in the below blog post is now a native feature in ConfigMgr starting in ConfigMgr Current Branch 1610. Please see the below link for further information:
Manage duplicate hardware identifiers
Consider the following scenario. You are using a single USB to Ethernet Adapter to image multiple devices via a ConfigMgr OSD Task Sequence. The USB to Ethernet Adapter is used because the devices lack a built in Ethernet port and ConfigMgr OSD does not support imaging the devices using the built in wireless NIC. As an example we are going to image several Surface Pro 3 devices using the same USB to Ethernet Adapter and started via PXE. This is a common scenario for companies running a dedicated imaging location for new devices before handing them over to their end users. Please note that this scenario could use a device similar to a USB to Ethernet adapter that provides a wired Ethernet connection such as a Surface Pro 3 Docking Station
Consider the below Surface Pro 3 (A) and Surface Pro 3 (B) have to be installed using the same Surface Ethernet Adapter. After the devices are completely installed, they will connect to corporate network via WLAN or a docking station with a built-in Gigabit Ethernet port.
|Surface Ethernet Adapter
Sample MAC Address:
|Surface Pro 3 (A)
Sample SMBIOS GUID (UUID):
|Surface Pro 3 (B)
Sample SMBIOS GUID (UUID):
Example of a classic PXE initiated deployment with unknown computer support enabled
Log file snippet of SMSPXE.log: This is a boot attempt of Surface Pro 3 (B) with default Configuration Manager PXE enabled DP and Unknown Computer support enabled. Note that the lookup occurs using both the MAC and SMBIOS GUID (UUID) of the device to try to find a matching existing record. If either MAC or SMBIOS GUID(UUID) is found in the database then the device is "known".
50:1A:C5:FE:AA:8C, 11F6E606-84D1-4E74-AF7C-3B54377D15E3: device is not in the database.
In the above log, the device lookup result did not return a matching record from the database and it treats this device as "unknown".
Once the device PXE boots and enters Windows PE, the device contacts the MP and via Heartbeat Discovery, registers itself as a client with BOTH its SMBIOS GUID (UUID) and MAC Address. A new record is created with the name "unknown".
A closer look at the object in your Configuration Manager console will show that the client has been registered with its SMBIOS GUID (UUID) and MAC Address
If multiple devices are being imaged at the same time, there may be multiple records with the name "unknown". This may make it hard to figure out which "unknown" record goes with which device. A simple WQL query will help determine what record belongs to which device.
The following WQL Statement will list all Objects Registered via Unknown Computer Support with UUID and MAC. This will make it easier to see the details of the Unknown object:
select SMS_R_System.ResourceId, SMS_R_System.Name, SMS_R_System.SMBIOSGUID, SMS_R_System.MACAddresses, SMS_R_System.AgentName, SMS_R_System.AgentTime from SMS_R_System where SMS_R_System.Unknown = 1
Sample Query result: The Client is registered with both MAC Address and SMBIOS GUID (UUID)
The following WQL Statement can be used to find all objects with a specific MAC Address registered
select SMS_R_System.ResourceId, SMS_R_System.Name from SMS_R_System where SMS_R_System.MACAddresses like ##PRM:SMS_R_System.MACAddresses##
The following WQL Statement can be used to find all objects with a specific SMBIOS GUID registered
select SMS_R_System.ResourceId, SMS_R_System.Name from SMS_R_System where SMS_R_System.SMBIOSGUID like ##PRM:SMS_R_System.SMBIOSGUID##
After creating the above three WQL queries you should have the following queries:
More information about creating queries can be found at How to Create Queries in Configuration Manager.
The problem manifests itself once one device registers itself with the MAC Address of the USB to Ethernet adapter. Once a device registers itself with the MAC address of the USB to Ethernet adapter, that USB to Ethernet adapter cannot be used on additional devices to initiate a PXE boot. In order to use the USB to Ethernet Adapter on another device, you would need to disassociate that USB to Ethernet Adapter from the device that last device that successfully used the USB to Ethernet adapter. This would be done by running Hardware Inventory and Heartbeat Discovery on the device while the USB to Ethernet Adapter is not attached to the device. This additional step adds delays and additional overhead to the imaging process, especially when imaging multiple devices at once. So the question is how to use the same USB to Ethernet Adapter on multiple devices without having to wait for the device that last used the USB to Ethernet Adapter to run Hardware Inventory and Heartbeat Discovery without the USB to Ethernet Adapter attached.
The solution is very easy: Add the MAC Address of the USB to Ethernet Adapter to the list of Mac Addresses to be excluded from Data Discovery. This task has to be done on the Primary Site Server.
This can be done by opening Regedit on the site server and navigating to the following registry key:
followed by editing the registry value of:
This registry key value is a multi-string value that is the placeholder of the list of MAC addresses to be filtered. The registry key holds one MAC address per line in the following format:
All letters in each MAC address must be typed as uppercase letters to match the MAC address that is submitted in a DDR.
Make sure to add a line break at the end of each MAC address list as the cursor below shows:
otherwise you will see the following error message:
More information about this registry key can be found at http://support.microsoft.com/kb/816051
Note: By default, this registry key should exist but will be empty
Before adding any MAC addresses to this registry key value, do not forget to remove any existing object registered with those MAC addresses from the ConfigMgr console otherwise the PXE boot will not work. In this example, we would make sure to delete any objects in the ConfigMgr console that were registered with the MAC address of 50:1A:C5:FE:AA:8C.
From now on any new object will register itself ONLY with its SMBIOS GUID (UUID) when using your Ethernet Adapter(s) of choice.
Log file snippet of SMSPXE.log: Boot attempt of Surface Pro 3 (A)
Running the sample query for Unknown Computers from above we can see Surface Pro 3 (A) registered ONLY with its SMBIOS GUID (UUID). It did not register with its MAC address. In the SMSPXE.log we can see that the MAC Address is still visible
Log file snippet of SMSPXE.log: Boot attempt of Surface Pro 3 (B)
Running the sample query from above for Unknown Computers we can see Surface Pro 3 (A) and Surface Pro 3 (B) both registered ONLY with their SMBIOS GUID (UUID). Neither registered with its MAC address. Again in the SMSPXE.log we can see that the MAC Address is still visible.
Known computer support still works the same way, but instead of using MAC Addresses to import records, make sure to import records using the SMBIOS GUID (UUID).
For known computer support, import the new Record using the SMBIOS GUID (UUID) instead of the MAC address. Please note that ConfigMgr may reference the SMBIOS GUID as BIOS GUID or System UUID.
You can obtain the SMBIOS GUID from a device using any of the following methods:
- Via the following PowerShell command:get-wmiobject Win32_ComputerSystemProduct | Select-Object -ExpandProperty UUID
For bare metal devices, this can be done from WinPE if the PowerShell component is added to the WinPE boot image
- Via the following command from a command promptwmic csproduct get UUID
For bare metal devices, this can be done from a command prompt in WinPE
- Some devices will display their SMBIOS GUID in the BIOS/Firmeware. For example, on Surface Pro 3, while the device is completely powered off, hold down the Volume Up button followed by pressing the Power button. This will power on the Surface Pro 3 and display the Firmware screen. At the Firmware screen, select Device Information. This will show you the SMBIOS GUID next to the field "System UUID".
- The SMBIOS GUID may be displayed in the PXE boot screen, mainly on BIOS based devices
In the above example PXE boot screen, you can see the SMBIOS GUID next to "GUID:"
- By monitoring the SMSPXE.log live via CMTrace while trying to PXE a device, the SMSPXE.log will show the SMBIOS GUID in the following line of the SMSPXE.log:00:15:5D:0A:49:55, 96D3D94F-2340-436A-86FE-31AA37C247E6: device is in the database.
00:15:5D:0A:49:55, 96D3D94F-2340-436A-86FE-31AA37C247E6: device is not in the database.
To prestage the device and create a Known computer record via the SMBIOSGuid, in the Import Computer Information Wizard, add the record based on its SMBIOS GUID instead of its MAC address as shown below:
Once you complete the Import Computer Information Wizard, a Computer record will be created with the SMBIOS GUID but without the MAC address as shown below:
The Computer object will not have a MAC Address listed until the WLAN Adapter or Network Adapter other than the excluded USB to Ethernet Adapter is inventoried.
Senior PFE - EMEA
Senior Support Escalation Engineer
This post is provided "AS IS" with no warranties, and confers no rights. The solution is not officially supported. Any support provided by Microsoft regarding this solution may be limited. Microsoft does not guarantee the solution will work in all environments and/or scenarios.