public ID addresses


Tamra Oyama <tamrako@...>
 

Hi everyone,

Does anyone know how to make a device ID public instead of random?

I ran the bluetooth sample, scan_adv, provided by zephyr. Below is what happens when I run it.

Starting Scanner/Advertiser Demo
[bt] [WRN] set_static_addr: Using temporary static random address
[bt] [INF] show_dev_info: Identity: e3:d8:c2:29:0a:04 (random)
[bt] [INF] show_dev_info: HCI: version 5.0 (0x09) revision 0x0000, manufacturerf
[bt] [INF] show_dev_info: LMP: version 5.0 (0x09) subver 0xffff
Bluetooth initialized

In the part where it says (random), does anyone know how to make this a public address or assign an address to the device (tinyTILE in this case)?

Also, would it be possible to instead of using a temporary static random address, assign an address to the device?

Any help or insight would be awesome!

Thank you,
Tamra


Johan Hedberg
 

Hi Tamara,

On Sun, Oct 15, 2017, Tamra Oyama wrote:
Does anyone know how to make a device ID public instead of random?

I ran the bluetooth sample, scan_adv, provided by zephyr. Below is what
happens when I run it.

Starting Scanner/Advertiser Demo
[bt] [WRN] set_static_addr: Using temporary static random address
[bt] [INF] show_dev_info: Identity: e3:d8:c2:29:0a:04 (random)
[bt] [INF] show_dev_info: HCI: version 5.0 (0x09) revision 0x0000,
manufacturerf
[bt] [INF] show_dev_info: LMP: version 5.0 (0x09) subver 0xffff
Bluetooth initialized

In the part where it says (random), does anyone know how to make this a
public address or assign an address to the device (tinyTILE in this case)?

Also, would it be possible to instead of using a temporary static random
address, assign an address to the device?
I might be wrong, but I don't think a public address is what you're
looking for, since that address space is formally managed by companies.
Instead, I think you're looking to get a persistent address that stays
the same over reboots. A static random address is also an Identity
Address, so that would fit the bill.

The Nordic controllers come with a pre-programmed static address in
their FICR register, but there's no standard way of reading it from
there through HCI. Luckily, we've now got our own HCI vendor extensions
available which have a command for this. If you build your controller
image out of the latest master branch you will get vendor extensions
support included there. For the host side, I've just pushed a pull
request which adds what's needed:

https://github.com/zephyrproject-rtos/zephyr/pull/4371

Johan


Johan Hedberg
 

Hi Tamra,

On Tue, Oct 17, 2017, Johan Hedberg wrote:
I might be wrong, but I don't think a public address is what you're
looking for, since that address space is formally managed by companies.
Instead, I think you're looking to get a persistent address that stays
the same over reboots. A static random address is also an Identity
Address, so that would fit the bill.

The Nordic controllers come with a pre-programmed static address in
their FICR register, but there's no standard way of reading it from
there through HCI. Luckily, we've now got our own HCI vendor extensions
available which have a command for this. If you build your controller
image out of the latest master branch you will get vendor extensions
support included there. For the host side, I've just pushed a pull
request which adds what's needed:

https://github.com/zephyrproject-rtos/zephyr/pull/4371
This PR is merged now, so simply rebuilding and flashing your nRF51 &
Quark SE Zephyr images from the upstream master branch should yield a
solution where the Bluetooth address remains the same.

Johan


Tamra Oyama <tamrako@...>
 


Hello Johan,

Thanks for your suggestion. Upon further investigation, the CONFIG_BLUETOOTH_PRIVACY=y in the prj.conf file in zephyr/samples/bluetooth/peripheral. From my understanding, this config allows for the use of resolvable private addresses and that there should be a key to decipher the static address. How do you find out what this key is? Can you provide any information about this? Thank you for your time.

Thank you,
Tamra

On Tue, Oct 17, 2017 at 2:04 AM, Johan Hedberg <johan.hedberg@...> wrote:
Hi Tamra,

On Tue, Oct 17, 2017, Johan Hedberg wrote:
> I might be wrong, but I don't think a public address is what you're
> looking for, since that address space is formally managed by companies.
> Instead, I think you're looking to get a persistent address that stays
> the same over reboots. A static random address is also an Identity
> Address, so that would fit the bill.
>
> The Nordic controllers come with a pre-programmed static address in
> their FICR register, but there's no standard way of reading it from
> there through HCI. Luckily, we've now got our own HCI vendor extensions
> available which have a command for this. If you build your controller
> image out of the latest master branch you will get vendor extensions
> support included there. For the host side, I've just pushed a pull
> request which adds what's needed:
>
>       https://github.com/zephyrproject-rtos/zephyr/pull/4371

This PR is merged now, so simply rebuilding and flashing your nRF51 &
Quark SE Zephyr images from the upstream master branch should yield a
solution where the Bluetooth address remains the same.

Johan


Tamra Oyama <tamrako@...>
 

Hi Johan,

By key, I mean identity resolving key. I see this is subsys/bluetooth/host/hci_core.c

Again, thank you for the help!

On Thu, Oct 19, 2017 at 3:08 PM, Tamra Oyama <tamrako@...> wrote:

Hello Johan,

Thanks for your suggestion. Upon further investigation, the CONFIG_BLUETOOTH_PRIVACY=y in the prj.conf file in zephyr/samples/bluetooth/peripheral. From my understanding, this config allows for the use of resolvable private addresses and that there should be a key to decipher the static address. How do you find out what this key is? Can you provide any information about this? Thank you for your time.

Thank you,
Tamra

On Tue, Oct 17, 2017 at 2:04 AM, Johan Hedberg <johan.hedberg@...> wrote:
Hi Tamra,

On Tue, Oct 17, 2017, Johan Hedberg wrote:
> I might be wrong, but I don't think a public address is what you're
> looking for, since that address space is formally managed by companies.
> Instead, I think you're looking to get a persistent address that stays
> the same over reboots. A static random address is also an Identity
> Address, so that would fit the bill.
>
> The Nordic controllers come with a pre-programmed static address in
> their FICR register, but there's no standard way of reading it from
> there through HCI. Luckily, we've now got our own HCI vendor extensions
> available which have a command for this. If you build your controller
> image out of the latest master branch you will get vendor extensions
> support included there. For the host side, I've just pushed a pull
> request which adds what's needed:
>
>       https://github.com/zephyrproject-rtos/zephyr/pull/4371

This PR is merged now, so simply rebuilding and flashing your nRF51 &
Quark SE Zephyr images from the upstream master branch should yield a
solution where the Bluetooth address remains the same.

Johan