I believe you meant to say BCM4343W, not 4343 right? If BCM4343, which partner module are you using? These are listed here in the IoT Solutions Guide
Regarding the BD_ADDR on the 4343W modules, they are globally unique per this thread: Unique information (BD_ADDR,MAC,SN,PKI) on BCM94343W platform during mass production
You're right, the BD_ADDR needs to be unique when you are prototyping.
When you say you are changing the BD_ADDR in each of your firmwares, how are you doing this?
There's a few ways to change it. The easiest would be to change the make target string in the WICED SDK and add the BT_DEVICE_ADDRESS field, as in the example below....
blood_pressure_monitor-BCM920737TAG_Q32 BT_DEVICE_ADDRESS=123456789012 download
What that will do is bake that address into the firmware file created by the SDK, so that BD_ADDR is the one loaded into RAM at application start.
There is a known issue in SDK 3.5.2 that the HW will not load the BD_ADDR that is uniquely programmed to the device
So application code has to set the unique address explicitly
Or you need to update to SDK 3.6.3+ which fixes this issue
For the 4343W the correct API to set local unique BD address is - wiced_bt_set_local_bdaddr( local_address );
Do you mean wiced_bt_dev_write_?
If yes, then i have already tried this.
But there is an error when i compile the code after using this API.
And the error is that there is no definition for this API.
I was able to find wiced_bt_dev_read_ but not 'write' function.
Am i missing something?
No. Please use wiced_bt_set_local_bdaddr(local_address);