Why does my BLE module have an extra 01 in front of its MAC address?

For example in SmartBasic Interactive mode

ati 4

10    4    01 EFA44957769F

BLE devices can have multiple mac addresses and if the mac address begins 01 as above it signifies it is a random static address which is assigned during manufacture. While its random nature means its not unique the number of possible random static addresses is 2^(48-2)-2 a very large number so it is very unlikely you will ever see a duplicate, let alone in the same place at the same time.

Other MAC address types include

  • 00 IEEE assigned public address, the same as used by BT classic devices
  • 01 Random static, generated at manufacture
  • 02 Random private resolvable with IRK. resolvable by other devices already known
  • 03 Random private non resolvable

To address privacy concerns, there are four types of Bluetooth addresses in a BLE device which can change as often as required. For example, an iPhone regularly changes its BLE Bluetooth address and it always exposes only its resolvable random address. This feature is known as LE privacy. It allows the Bluetooth address within advertising packets to be replaced with a random value that can change at different time intervals. Malicious devices are not able to track your device as it actually looks like a series of different devices. To manage this, the usual six-octet Bluetooth address is qualified on-air by a single bit which qualifies the Bluetooth address as public or random: ▪ Public – The format is as defined by the IEEE organisation. ▪ Random – The format can be up to three types and this qualification is done using the upper two bits of the most significant byte of the random Bluetooth address.

On Ezurio (formerly Laird Connectivity) SmartBasic module, the address type can be set using the function BleSetAddressTypeEx(). On the other hand, Sysinfo$(4) can be used to retrieve the Bluetooth address if it is public or random static. Due to LE privacy 1.2, if the address type is random resolvable or random non-resolvable, it cannot be retrieved by the application layer since it is fully controlled by the baseband layer.

Note: The Bluetooth address portion in smartBASIC is always in big endian format. If you sniff on-air packets, the same six packets appear in little endian format, hence reverse order – and you do not see seven bytes, but a bit in the packet somewhere which specifies it to be public or random.