Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

Smart Bluetooth Forum Discussions

Anonymous
Not applicable

Hi,

I have some questions about using static random device address.

By below blog, I need to buy OUI from IEEE if I use public device address.

To save US$2,575, I want to use static random address.

BD_ADDR - how do you get one?

Question.1

When I use random address, address type in advertising packet should indicate random(1).

Is it correct?

Question.2

Can Address type be changed to random ONLY by blecm_startAdv(1)/blecm_setAdvParam(1)?

Any other way available?

Questoin.3

Calling blecm_startAdv(1) changes address type of the packets.

But BD_ADDR of captured packets are all 0x000000000000 after this change.

Any advice please?

Question.4

Using blecm_set_static_random_bd_addr() makes BD_ADDR random and it works with blecm_startAdv(1).

But I'd like to specify lower bits of BD_ADDR to manage devices.

(I may seal sequential serial number label using these lower bits of BD_ADDR.)

How can I specify lower bits of BD_ADDR as random address?

0 Likes
1 Solution
VictorZ_46
Employee
5 comments on blog 25 sign-ins 250 likes received
Employee

The way static random address is supported:

1. In the factory (or during FW download), program your device with BDADDR ff:ff:ff:ff:ff:ff.

2. Update your _create function to call blecm_set_static_random_bd_addr()

This is it.  The function will generate the random address with appropriate format and save it in the NVRAM.  This address will be used forever after.  You cannot specify any portion of the address, because it shall be random.

View solution in original post

3 Replies
Anonymous
Not applicable

Just one side note to this.  We are not yet set up on this.  But we are implementing this for the future.  Anaren's A20737 modules will come with Anaren's OUI and BD_ADDR.  So if that is acceptable, then using an Anaren module will remove any need to acquire your own BD_ADDRs.

0 Likes
MichaelF_56
Moderator
Moderator 250 sign-ins 25 comments on blog 10 comments on blog
Moderator

My understanding is that you should not change the BD_ADDR for the lifetime of the device: Changing BD_ADDR from the application

This thread seems to discuss changing the BD_ADDR within the application, but the developers also discourage this as it violates BT Sig policy, so I'm not sure this is something that will be easily supported.

Perhaps marmottus or sbs can comment as it seems both of them have figured out a workaround for this requirement.

If you are looking to program random addresses in production, then we provide a mechanism for that within the SDK/command line tools: BD_ADDR: Changing BCM20737 Board Address for Production

Or here: How can I use cgs.exe to convert *.cgs to *.hex but keep MACADDR the same?

0 Likes
VictorZ_46
Employee
5 comments on blog 25 sign-ins 250 likes received
Employee

The way static random address is supported:

1. In the factory (or during FW download), program your device with BDADDR ff:ff:ff:ff:ff:ff.

2. Update your _create function to call blecm_set_static_random_bd_addr()

This is it.  The function will generate the random address with appropriate format and save it in the NVRAM.  This address will be used forever after.  You cannot specify any portion of the address, because it shall be random.