Prior to SCCM 1610, you may had an issue when trying to image multiple Surface or ultrabook devices using the same USB to Ethernet Adapter. A USB adapter is needed because the devices lack a built in Ethernet port. This issue could also apply when trying to image Surface devices using the Docking Station. Following a UserVoice idea, it has been fixed in SCCM 1610 and it’s now easier to ignore a particular MAC Addresses from an OS deployment.
Cause
Before heading to the solution, we’ll explain why this was a problem in previous SCCM releases :
- SCCM uses SMBIOS to identify computers and fallback to MAC Addresses if SMBIOS is not available
- SMBIOS is the GUID stored in the device’s BIOS or UEFI. It’s unique to the device and SCCM uses it to recognize imported computers
- When computers are not imported, SCCM will use their Ethernet MAC Addresses by default
The problem is that MAC Addresses are unique identifiers of network interfaces but when reusing the same USB to Ethernet adapter for multiple deployments, your MAC Address is not unique. SCCM think that’s the same device and your device don’t receive the Task Sequence.
Solution to Ignore SCCM Duplicate Hardware Identifiers
Using SCCM 1606 or prior
The solution is to add each MAC Address of the USB Adapter to the list of Mac Addresses to be excluded from Data Discovery.
[su_box title=”Important” style=”glass” box_color=”#000000″ title_color=”#F0F0F0″]This has to be done on the Primary Server[/su_box]- Open Regedit
- Go to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Components \SMS_DISCOVERY_DATA_MANAGER
- Edit the ExcludeMACAddress key and enter each MAC Address (one per line)
Using SCCM 1610 or Later
Beginning with SCCM 1610, you can provide a list of hardware IDs that SCCM will ignore when using PXE boot and client registration. You can now exclude the MAC address and SMBIOS GUID in the console so that same adapters can easily be reused.
- In the SCCM console, go to Administration / Site Configuration / Sites
- On the top ribbon, click Hierarchy Settings
- In the Client Approval and Conflicting Records tab
- In the Duplicate hardware identifiers section, click Add and enter your MAC Address or SMBIOS GUID to exclude
Another nice addition from the development team in order to facilitate your deployments. We encourage to fill an UserVoice item when you have suggestion to make SCCM better. This is a great example of suggestion to production implementation and another reason to upgrade to Current Branch as soon as possible.
18 Comments on “How to Ignore SCCM Duplicate Hardware Identifiers”
We are currently using SCCM 1906 and have found that the usb to ethernet adapters that come with the MS Surface Book 2 can only be used on 1 Surface book 2 to pxe boot it. I did look at the Client approval and conflicting records and it does not show any duplicate hardware identifiers. Any suggestions on what else I should look for to fix this issue?
Is there a time delay between dropping your MAC addresses into either the registry or the Duplicate Hardware ID tab before the exception is picked up and allows a deployment?
I recently deployed a TS to a new Surface Pro 3 device using a universal dock and it deployed successfully (didn’t join it to the domain at this stage). I added the MAC address to the Hierarchy Settings and tested on a new device but it never picked up the task sequence. Then removed it and added the MAC to the registry but it still doesn’t pick up the TS.
Is this a Surface Pro thing? Am I better to use the SMBIOS value? Or is there a time delay and I’m just being impatient? The machine hostname doesn’t appear in the SCCM console as I haven’t added it to the domain yet so I can’t delete the record from SCCM to be recognised as an “Unknown Computer”. What am I missing?
Oh yeah, I’m running 1909
Whe used the Prior version and now have found the “new” version. do i now need to migrate the old MAC’s to the new destination.
can i delete the old Values? can i delete the old key in registry?
To exclude SMSBIOS GUID you need to use BannedGUIDs registry value instead of ExcludeMACAddress one.
Banned GUIDs :The registry location of the banned GUIDs is as follows:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WDSServer\Providers\WDSPXE
Name: BannedGuids
Type: REG_MULTI_SZ
Value: GUID strings, with one string per line. The correct format is as follows: 1acbf447-3993-e543-a92a-fadb5140f1c8, which should match what you see when you perform a PXE boot on a client.
Hi – to bulk import, follow this:
Run this SQL query against your site database to get a list of applicable MAC addresses:
SELECT
A.Name0,
B.SerialNumber0 ,
A.Manufacturer0,
A.Model0,
C.Name0 ,
D.TotalPhysicalMemory0 ,
sum(E.Size0) ,
F.MACAddress0 ,
F.IPAddress0 ,
G.AD_Site_Name0 ,
A.UserName0 ,
H.Caption0 ,
H.CSDVersion0,
G.Creation_Date0 ,
I.LastHWScan,
J.Name0
FROM
dbo.v_R_System G
join dbo.v_GS_COMPUTER_SYSTEM A on G.ResourceID = A.ResourceID
join dbo.v_GS_PC_BIOS B on G.ResourceID = B.ResourceID
join dbo.v_GS_PROCESSOR C on G.ResourceID = C.ResourceID
join dbo.v_GS_X86_PC_MEMORY D on G.ResourceID = D.ResourceID
join dbo.v_GS_DISK E on G.ResourceID = E.ResourceID
join dbo.v_GS_NETWORK_ADAPTER_CONFIGUR F on G.ResourceID = F.ResourceID
join dbo.v_GS_OPERATING_SYSTEM H on G.ResourceID = H.ResourceID
join dbo.v_GS_WORKSTATION_STATUS I on G.ResourceID = I.ResourceID
join dbo.v_GS_NETWORK_ADAPTER J on G.ResourceID = J.ResourceID
WHERE
G.Netbios_Name0 like ‘%’
and F.MACAddress0 !=”
and J.Name0 not like ‘Bluetooth%’ and J.Name0 not like ‘WAN Miniport%’ and J.Name0 not like ‘Microsoft%’ and J.Name0 not like ‘Teredo%’ and J.Name0 not like ‘%Wireless%’ and J.Name0 like ‘Broadcom%’
and F.IPAddress0 !=”
GROUP BY
A.Name0,
A.Manufacturer0,
A.Model0,
C.Name0,
D.TotalPhysicalMemory0,
G.AD_Site_Name0,
A.UserName0,
H.Caption0,
H.CSDVersion0,
G.Creation_Date0,
I.LastHWScan,
B.SerialNumber0,
F.MACAddress0,
F.IPAddress0,
J.Name0
Then, copy them into an Excel spreadsheet and put this formula into the adjacent column, changing F3 to whatever contains the first cell:
=”Set-WMIInstance -Namespace root\sms\Site_XXX -Class SMS_CommonMacAddresses -Argument @{MACAddress='”&F3&”‘}”
Double click the bottom right square on the cell to autofill the formula down, copy and paste the results into PowerShell and run.
Has anyone found a way to import a large number of MAC addresses? We have a lot of USB-Ethernet dongles that get re-used, and I’d love to be able to just import these.
Does this method work when using USB media to access the task sequences? Or does it only work for PXE deployments?
Hi. I see now in 1610 when I add new Mac Addresses using the Hierarchy settings, they are not added to my existing list in the registry, so apparently this new method utilizes a different location to store these. That raises a couple of questions for me.
* Do the items in the ExcludeMACAddress registry key need to be added instead using the new method, or will they be concatenated with those in the new method?
* Is there a way in 1610 to add a lot of addresses other than typing them individually into the Console Heirarchy settings?
Thanks very much for this informative article.
Gary,
I found an answer to importing a large number. You can use these WMI Classes: SMS_CommonMacAddresses and SMS_CommonSmbiosGuids
So, for, example, with PowerShell: Set-WMIObject -computerName -Namespace root\sms\Site_
-Class SMS_CommonMacAddresses -Argument @{MACAddress='00:11:22:33:44:55'}
I have confirmed that this does work.
Here’s that example again without the accidental use of markers:
Set-WMIObject -computerName “CAS or stand alone primary server” -Namespace root\sms\Site_ABC -Class SMS_CommonMacAddresses -Argument @{MACAddress=’00:11:22:33:44:55′}
Hi Evan, The term ‘Set-WMIObject’ is not recognized as the name of a cmdlet… How do you do?
https://docs.microsoft.com/en-us/powershell/sccm/configurationmanager/
you have to install the sccm powershell cmdlets, and then run the powershell from inside of sccm console. the button in the top left of the console has the “connect via powershell” button.
seems like set-wmiobject is depreciated, and possible replaced by set-wmiinstance. still researching.
Set-WmiInstance -computerName “SITENAME” -Namespace root\sms\site_SITENAME -Class SMS_CommonMacAddresses -Argument @{MACAddress=’00:00:00:00:00:00′}
this works. make sure the namespace is root\sms\site_
so if BOBSNET is your site, then its root\sms\site_BOBSNET
you still need the cmdlets.
We are currently using 1606, and although the “Prior” method of adding MAC addresses via the Registry is helpful, the article above doesn’t provide an example of excluding machines via a SMBIOS GUID. I see this options is available via the Console in 1610, but can this be done using the Registry example as well?
In our case, the SMBIOS GUID option is necessary because we image MacBook’s that don’t have unique SMBIOS GUID’s (they are all identical) as well as ASRock motherboards (which also have identical SMBIOS GUID’s in specific models). Excluding via SMBIOS GUID would be helpful to us if it can be done using the Registry example above.
Shane, it Absolutely does work
Does the 1606 or Prior method work for 2012R2? That would solve a huge problem for me until I upgrade.