2020-05-26 14:59:04

by Alain Michaud

[permalink] [raw]
Subject: Re: UUIDs for every single physical peripheral's service and characteristics?

Hi Christopher,

The term "unique" will vary based on context. In the context of a
Gatt Service and Characteristic, it is intended to uniquely identify
the "contract" defined by the service/characteristics. For example a
Temperature Service would have a UUID that universally defines the
contract/interface defined by that service.

So for your custom service, you'll need to define a set of 20 128 bit
UUID (16 bit uuids are reserved for SIG defined uuids) that uniquely
identify the contract that's defined by your service/characteristics.
The devices can uniquely be identified/addressed by their respective
addresses.

I hope this is helpful.

Thanks!
Alain

On Tue, May 26, 2020 at 10:38 AM Christopher de Vidal
<[email protected]> wrote:
>
> Help a newbie? I'm seeking to build a niche product for sale, a
> Raspberry Pi-based device which during the initial setup acts a BLE
> peripheral. (Python using dbus to Bluez.) It has a single service and
> 19 characteristics. I get that the first "U" in UUID stands for
> unique. Must that be unique among each physical product, or may it be
> unique among the product line?
>
> So if I sell 1,000 units (which would be a success), would I need to
> obtain 1,000 service UUIDs and 19,000 characteristic UUIDs? Or just 20
> total, for the entire product line?
>
> The goal is so that the iOS/Android app can have that pre-set in the
> code and quickly discover the device, pair it automagically.
>
> I suppose the risk is of a conflict of two similar devices which are
> in the same vicinity of the phone, and both set into peripheral mode
> at the same time. But that would be a minimal risk which I could
> accommodate for.
>
> Christopher de Vidal
>
> Would you consider yourself a good person? Have you ever taken the
> 'Good Person' test? It's a fascinating five minute quiz. Google it.


2020-05-26 16:24:03

by Christopher de Vidal

[permalink] [raw]
Subject: Re: UUIDs for every single physical peripheral's service and characteristics?

So let me make sure I understand. The devices themselves have their
own Bluetooth addresses (similar to MAC addresses, I don't know the
proper term) which are unique among every physical device sold. And
also there is one (and only one) service UUID which is shared among
all 1,000+ peripherals which I sell, and 19 characteristic UUIDs that
are shared among the physical peripherals. The devices come with their
own Bluetooth "MAC" and I only need to obtain 20 UUIDs in total for
the product line. Did I get that right?

Christopher de Vidal

Would you consider yourself a good person? Have you ever taken the
'Good Person' test? It's a fascinating five minute quiz. Google it.

On Tue, May 26, 2020 at 10:57 AM Alain Michaud <[email protected]> wrote:
>
> Hi Christopher,
>
> The term "unique" will vary based on context. In the context of a
> Gatt Service and Characteristic, it is intended to uniquely identify
> the "contract" defined by the service/characteristics. For example a
> Temperature Service would have a UUID that universally defines the
> contract/interface defined by that service.
>
> So for your custom service, you'll need to define a set of 20 128 bit
> UUID (16 bit uuids are reserved for SIG defined uuids) that uniquely
> identify the contract that's defined by your service/characteristics.
> The devices can uniquely be identified/addressed by their respective
> addresses.
>
> I hope this is helpful.
>
> Thanks!
> Alain
>
> On Tue, May 26, 2020 at 10:38 AM Christopher de Vidal
> <[email protected]> wrote:
> >
> > Help a newbie? I'm seeking to build a niche product for sale, a
> > Raspberry Pi-based device which during the initial setup acts a BLE
> > peripheral. (Python using dbus to Bluez.) It has a single service and
> > 19 characteristics. I get that the first "U" in UUID stands for
> > unique. Must that be unique among each physical product, or may it be
> > unique among the product line?
> >
> > So if I sell 1,000 units (which would be a success), would I need to
> > obtain 1,000 service UUIDs and 19,000 characteristic UUIDs? Or just 20
> > total, for the entire product line?
> >
> > The goal is so that the iOS/Android app can have that pre-set in the
> > code and quickly discover the device, pair it automagically.
> >
> > I suppose the risk is of a conflict of two similar devices which are
> > in the same vicinity of the phone, and both set into peripheral mode
> > at the same time. But that would be a minimal risk which I could
> > accommodate for.
> >
> > Christopher de Vidal
> >
> > Would you consider yourself a good person? Have you ever taken the
> > 'Good Person' test? It's a fascinating five minute quiz. Google it.

2020-05-26 19:28:49

by Alain Michaud

[permalink] [raw]
Subject: Re: UUIDs for every single physical peripheral's service and characteristics?

Yes. Unless each of your 1000 devices will have a different
protocol/contract to interact with them, you don't need to have unique
UUIDs for the services/characteristics per device instance.

On Tue, May 26, 2020 at 12:22 PM Christopher de Vidal
<[email protected]> wrote:
>
> So let me make sure I understand. The devices themselves have their
> own Bluetooth addresses (similar to MAC addresses, I don't know the
> proper term) which are unique among every physical device sold. And
> also there is one (and only one) service UUID which is shared among
> all 1,000+ peripherals which I sell, and 19 characteristic UUIDs that
> are shared among the physical peripherals. The devices come with their
> own Bluetooth "MAC" and I only need to obtain 20 UUIDs in total for
> the product line. Did I get that right?
>
> Christopher de Vidal
>
> Would you consider yourself a good person? Have you ever taken the
> 'Good Person' test? It's a fascinating five minute quiz. Google it.
>
> On Tue, May 26, 2020 at 10:57 AM Alain Michaud <[email protected]> wrote:
> >
> > Hi Christopher,
> >
> > The term "unique" will vary based on context. In the context of a
> > Gatt Service and Characteristic, it is intended to uniquely identify
> > the "contract" defined by the service/characteristics. For example a
> > Temperature Service would have a UUID that universally defines the
> > contract/interface defined by that service.
> >
> > So for your custom service, you'll need to define a set of 20 128 bit
> > UUID (16 bit uuids are reserved for SIG defined uuids) that uniquely
> > identify the contract that's defined by your service/characteristics.
> > The devices can uniquely be identified/addressed by their respective
> > addresses.
> >
> > I hope this is helpful.
> >
> > Thanks!
> > Alain
> >
> > On Tue, May 26, 2020 at 10:38 AM Christopher de Vidal
> > <[email protected]> wrote:
> > >
> > > Help a newbie? I'm seeking to build a niche product for sale, a
> > > Raspberry Pi-based device which during the initial setup acts a BLE
> > > peripheral. (Python using dbus to Bluez.) It has a single service and
> > > 19 characteristics. I get that the first "U" in UUID stands for
> > > unique. Must that be unique among each physical product, or may it be
> > > unique among the product line?
> > >
> > > So if I sell 1,000 units (which would be a success), would I need to
> > > obtain 1,000 service UUIDs and 19,000 characteristic UUIDs? Or just 20
> > > total, for the entire product line?
> > >
> > > The goal is so that the iOS/Android app can have that pre-set in the
> > > code and quickly discover the device, pair it automagically.
> > >
> > > I suppose the risk is of a conflict of two similar devices which are
> > > in the same vicinity of the phone, and both set into peripheral mode
> > > at the same time. But that would be a minimal risk which I could
> > > accommodate for.
> > >
> > > Christopher de Vidal
> > >
> > > Would you consider yourself a good person? Have you ever taken the
> > > 'Good Person' test? It's a fascinating five minute quiz. Google it.

2020-05-26 21:44:12

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: Re: UUIDs for every single physical peripheral's service and characteristics?

Hi Christopher,

On Tue, May 26, 2020 at 9:25 AM Christopher de Vidal
<[email protected]> wrote:
>
> So let me make sure I understand. The devices themselves have their
> own Bluetooth addresses (similar to MAC addresses, I don't know the
> proper term) which are unique among every physical device sold. And
> also there is one (and only one) service UUID which is shared among
> all 1,000+ peripherals which I sell, and 19 characteristic UUIDs that
> are shared among the physical peripherals. The devices come with their
> own Bluetooth "MAC" and I only need to obtain 20 UUIDs in total for
> the product line. Did I get that right?

Check out this article (Step 4: Assign UUIDs to Custom Services and
Characteristics):

https://www.novelbits.io/bluetooth-gatt-services-characteristics/