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.

Is CC2541 IEEE primary address guaranteed to be unique and unmodifiable?

Other Parts Discussed in Thread: CC2541

Hi,

I would like to use CC2541's IEEE primary address as an unique identifier of my product. I have three questions regarding that:

(1) Is every CC2541's IEEE primary address guaranteed to be unique?

(2) Is it possible to modify a CC2541's IEEE primary address? I know that the primary address is stored in flash at the location "0x780E-0x7813", so I am wondering if it is possible to use flash programmer to modify it?

(3) How can I force CC2541 to always use IEEE primary address? I know that if the IEEE secondary address is written to anything not FF FF FF FF FF FF, then CC2541 will use secondary address instead of primary address. How can I prevent that?

Regards,

Jack

  • Hi Jack,

    1:
    TI has their own IEEE address range. It is using rolling addresses, meaning some day in the future an address might be re-used but for all practical uses they are unique.

    2:
    No, the info page is not writable, it is locked after production test in the factory.

    3:
    It is not possible to avoid this if you add a secondary address.

    Regards,
    Svend

  • Hi Svend,

    Thank you for the response.

    For question (3), I found a related thread:

    http://e2e.ti.com/support/low_power_rf/f/538/p/92300/680302.aspx#680302

    In the thread, a TI employee said:

    "New versions, have valid primary MAC addresses, and if BLE_BADDR_FROM_FLASH is not in the pre-processor list, then you will not be able to use the secondary address. "

    I wonder if that is only true for the older BLE stack? 

    Thank you very much.

     

    Regards,

    Jack

  • Hi,

    In 1.4.0 at least, this define decides the order of preference between factory-set and secondary address placed in flash. With it defined, secondary is tried first, then factory-set.

    In any case, it will not make any difference whether you have this defined or not since this code resides in the library.

    BR,
    Aslak

  • If you need to set a secondary adress dynamically, you can also try doing this through the HCI Vendor specific interface with the command HCI_EXT_SetBDADDRCmd. 

    It is documented in Documents\TI_BLE_Vendor_Specific_HCI_Guide.pdf

    Regards,
    Svend