This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

WL1837MOD: Bluetooth MAC address change

Part Number: WL1837MOD
Other Parts Discussed in Thread: WL1837

Hello TI.

My team and I are trying to set the MAC address of the the wl1837 bluetooth installed in our embedded linux device.
Ideally we'd like to be able to set the BLE address and BT classic address.

I am able to change what I believe to be the BT classic address with SS1Tool. But the bluetopia platform manager does not recognize this change.

I assume this is because hci command bypass the drivers and consequently BTPM. 

root@QConnect:/usr/qk# ./SS1Tool cmd 0x04 0x0009
< HCI Command: ogf 0x04, ocf 0x0009, plen 0
> HCI Event: 0x0e plen 10
  01 09 10 00 89 77 D6 02 E2 90
root@QConnect:/usr/qk# ./SS1Tool cmd 0x3f 0x0006 0x5b 0xda 0x46 0x28 0x55 0x21
< HCI Command: ogf 0x3F, ocf 0x0006, plen 6
  5B DA 46 28 55 21
> HCI Event: 0x0e plen 4
  01 06 FC 00
root@QConnect:/usr/qk# ./SS1Tool cmd 0x04 0x0009
< HCI Command: ogf 0x04, ocf 0x0009, plen 0
> HCI Event: 0x0e plen 10
  01 09 10 00 21 55 28 46 DA 5B
root@QConnect:/usr/qk#

How do I get Bluetopia to recognize a change in the Bluetooth hardware (MAC) address?

  • I don't think it is possible to sync BTPM (software) to this change, but the local bd-address is updated with the vendor-specific command that you used.

    br,

    Kobi

  • Understood. Setting the MAC address via the SS1Tool will successfully change the MAC address. Other devices will discover my BT device with the new MAC I set.

    Instead of querying the platform manager directly with Bluetopia's API, I can just issue the read cmd via SS1Tool.

    However, a new problem emerges. When I reboot my device, the MAC address is restored to the original address. If I kill SS1BTPM and restart, the MAC is restored as well.

    Do you have any comments or suggestion to prevent this?

  • The BDADDR configuration is not persistent. 

    After each reset the BDADDR returns to the unique (burnt) address (as required by the BT spec).

    The proprietary (vendor-specific) command you are using to set the BDADDR needs to be issued following every reset.