This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

How do I assign uuids for the custom primary service that my peripheral implements?

I am implementing a custom BLE peripheral that exposes some unusual sensor data, so I have decided to have my device implement a proprietary service. How do I assign a uuid to this service that is guaranteed to not conflict with custom services implemented by other third party BLE devices?

  • There are a number of online resources for generating your own UUID, e.g. http://www.guidgenerator.com/

    Microsoft also has a UUID generator built into the Visual Studio IDE, "tools/Create GUID"

  • I realize that there are a lot of permutations of 128 bits. However, surely bluetooth.org could come up with a scheme that reserves some subset of the uuid bits that identifies the company that defined a particular uuid so that uuids are guaranteed to not conflict with one another?

  • The space is large enough that every person in the universe can setup their own UUID generator and still avoid conflicts.  There are some agreed upon standards for how to implement a UUID generator, and as long as everyone follows the conventions there won't be any overlap.  Typically the generators use some unique number like the host system MAC address combined with  a time stamp and an incrementing number. 

    This topic has been previously covered on e2e so I suggest you use the search box for further discussion.

  • Elliot Leonard said:

    I realize that there are a lot of permutations of 128 bits. However, surely bluetooth.org could come up with a scheme that reserves some subset of the uuid bits that identifies the company that defined a particular uuid so that uuids are guaranteed to not conflict with one another?

    That would make development much harder as companies would have to register and wait for UUIDs to be assigned, not to mention the added work for BluetoothSIG.

    128bit UUIDs do not need any of this overhead to be as good as guaranteed unique.