Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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:

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!

share|improve this question

closed as too localized by MikeyB, Ben Pilbrow, Ward, MDMarra, voretaq7 Dec 14 '11 at 21:55

This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center.If this question can be reworded to fit the rules in the help center, please edit the question.

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
up vote 1 down vote accepted

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.

share|improve this answer

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.

share|improve this answer
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).

share|improve this answer

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.

share|improve this answer

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