First, a few things to know:
- “A UUID is a universally unique identifier that is guaranteed to be unique across all space and all time” (Bluetooth 4.2 spec, Vol 3, Part B, section 2.5.1 UUID)
- A UUID is a 128-bit value.
- There are reserved UUIDs by the Bluetooth SIG that are generally represented by their 16-bit aliases. These aliases are used for convenience and represent a 128-bit value computed as follows:
128-bit value = 16-bit-value * 2^96 + BluetoothBaseUUID
where the BluetoothBaseUUID is 00000000-0000-1000-8000-00805F9B34FB
0x180F -> Battery Service UUID (128-bit UUID: 0000180F-0000-1000-8000-00805F9B34FB)
0x2A00 -> Device Name Characteristic UUID (128-bit UUID: 00002A00-0000-1000-8000-00805F9B34FB)
These reserved UUIDs cannot be used for any custom services or characteristics, so you need to avoid them.
Note: you can actually purchase and reserve a 16-bit alias from the Bluetooth SIG here for a fee of $3,000, which would allow you to use the alias instead.
So, to create a UUID for your custom services and characteristics you would:
- Use a website such as GUID Generator to generate a UUID (or multiple UUIDs)
- Make sure it does not conflict with a reserved UUID (avoid any containing XXXXXXXX-0000-1000-8000-00805F9B34FB where XXXXXXXX is any number)