IEEE requirements for MAC addresses?

Can anyone familiar with the red tape side of the internet give the short version of IEEE requirements for mac addresses? We are producing a relatively low volume product (~100 units a year) in terms of networked objects. In the research I’ve done, we’ll need to purchase an OUI from IEEE. Are we allowed to randomly generate a new address using that OUI and just check with the database to make sure that it isn’t being used, or should we sequentially generate them? Is this a legal requirement or more of a guideline?

What I’ve understood from it is that you need to buy a chunk of mac addresses, I think the size was 3k at once but that I’m not sure about.

What I would recommend is to use this IC from micropchip. It’s basically a small EEPROM but it has a globally unique mac address written to it in the last 6 bytes of storage. It only costs 40 cents when you buy 10 or more and gets cheaper the more you buy. If you’re only doing a 100 units a year, that is defenitely cheaper than buying addresses from IEEE. It also saves the trouble of having to program/configure each of your devices with a mac address.

I’ve been using this IC in all my designs lately to solve the MAC problem. It’s also simple to connect. Just connect it to a I2C bus and add the required pull up resistors and you’re set.

If you’re interested, I have a small C# class that handles I2C communication with the IC and simply returns the MAC address as a byte array. I could share this with you :slight_smile:


I would second @LucaP suggestion.
I use the same Microchip part in my designs. If you ever do want to get your own OUI Microchip can program custom parts with your OUI numbers on them. I think it would be a lot easier than trying to maintain a database of used/available addresses that have to be manually programmed into your devices.


Thanks for the info - unfortunately adding an IC to our current board is a pretty big ask. I would imagine that the effort to rev up the board and get it designed and printed and coming up with all of the testing to make our QA guys happy may be more expensive then just buying mac addresses. WE will discuss internally - thanks for the feedback.

So what if you buy the chips, extract the MAC addresses to use in your devices, then store the chips away. Does that get you legal?

This would work, but it’d be quite work intensive as you’d need to extract the address from each chip.

I have a function in C# that generates a MAC based on a random seed. I have used this for years before I switched to the microchip, I never ever had a mac address conflict. If you did, for whatever reason, had a macaddress conflict you could just regenerate the mac address with the same code.

The way this worked was that I stored a settings file on an SD card. If there was no settings file upon module startup, it would generate a file with in it a random generated mac address. This means that if I had a conflict I could just delete the file and get a new mac address generated upon reboot.

Keep in mind, that if your hardware is NETMF based, you might need to reboot the module a couple times before it will actually reflect the MAC address change…

So, that’s what I’m currently doing. It obviously works on a technical level, but I would be concerned if we were putting that in a commercial product from a red tape standpoint.