My company get custom made motherboard from a vendor. Recently, we requested them to put UUID in our SMBIOS. They did it for us. According to them, they use a program to generate UUID Version 5 (SHA-1 hash). Details: http://en.wikipedia.org/wiki/Universally_unique_identifier

When we received the motherboard and checked SMBIOS data, we do see a long strings of random characters. However, how to we verify that the strings are unique? When we asked them if there is a range or tool that we could just boards (just to check every few months to make sure that correct UUID is generated), they told us that they do not have any tools for us to check. As a result, right now our standard of QC is "as long as there is a string on UUID field in SMBIOS, we will PASS the board). However, I think we could not prevent if: - someone used the wrong program to generate wrong UUId string - someone executed the wrong step and have a batch of motherboard with the same string (not unique).

We also QC the MAC address on that board. For MAC address, at least there is a range assigned. So, we could at least check the range. But for UUID, there is no range.

I also check Dell's pc. I found out that 2 different of Dell models has UUID with same contents on the fist few (around 6-8) characters.

If possible, would you pls let me know how should I ask the motherboard engineers to provide a tool for us to check the strings once every few months.

I believe they could write a function to check, just like how a system verify encrypted (with salt) password stored in a database columns.

Thank you so much!

  • You should probably ask them what details they fed into the sha1 hash. Did they just use a random number generator, or did they base it on some details about the system like a mac address. It sure seems like they should be able to share the algorithm. – Zoredache Dec 14 '11 at 22:34

Random 128-bit UUIDs are pretty much guaranteed to be unique, even if you're generating hundreds of billions of them a second for the entire length of the universe, the chance of finding a collision would be more than winning the lottery two days running.

The reason Dell have their prefix is because they're most likely using sequential UUIDs, maybe you should ask for those instead and keep a track of the last one seen, then you can ensure they're valid by simply checking that the current one is larger than any previously seen one.


There is no other criteria for "correct" other than "unique"?

Do it yourself. As you receive the motherboards, check each UUID against all previously received systems.

  • Thank you so much for the suggestions. I will check it myself. Have a nice day! – Kevin H Dec 11 '11 at 1:08

There's no way that you can just arbitrarily check that they are "correct". When it comes down to it, a UUID is really just a randomly generated string. There's no real way to verify that it's random enough, or that it hasn't been issued before (unless you have a database with all the UUID's generated to date).

The linux uuidgen tool has two ways of generating UUIDs. If they are using something similar, and are using the random-based UUIDs, then you are going to see values that are all over the place. If they based it on the generating machine's MAC address, you may be able to check that the prefix hasn't changed (but even if it does, that likely just means they switched out the machine that was generating them).


Realistically the only way for you to verify that the UUID of a particular motherboard is unique is to keep a database of the ones you have seen. Test the new UUID against the list and if you haven't already seen it add it to the list.

Not the answer you're looking for? Browse other questions tagged or ask your own question.