MAC 5-разрядный MAC-адрес Bluetooth для рекламы BLE

Android 5 вводит BLE MAC-адрес для увеличения конфиденциальности. Каждый раз при вызове BluetoothLeAdvertiser.startAdvertising() MAC-адрес изменяется.

Можно ли отключить поворот адреса и просто использовать один и тот же MAC-адрес в течение всего срока службы BluetoothLeAdvertiser?

Ответ 1

MAC-адрес является физическим адресом и не изменяется. В терминологии BLE это адрес общедоступного устройства или BD_ADDR для BR/EDR. Я не пробовал, но чтение его с помощью readAddress() должно возвращать одинаковое значение каждый раз.

Что делает платформа Android BLE, НЕ использует этот адрес при рекламе. Это скорее обеспечивает конфиденциальность с помощью Private Resolvable Addresses, которые могут меняться каждые несколько минут или около того, но все же позволяют связанным устройствам распознавать его с использованием IRK, замененного при соединении.

Для очевидных соображений конфиденциальности платформа Android BLE не позволяет вам устанавливать Контроллер для использования публичного адреса при рекламе. Поэтому вы не можете отключить "поворот адреса".

Ответ 2

Вы можете отключить функцию конфиденциальности BLE, чтобы избежать вращения MAC-адреса, и измените исходный код bluedroid следующим образом:

http://androidxref.com/5.1.1_r6/xref/external/bluetooth/bluedroid/include/bt_target.h#1326

    * Toggles support for general LE privacy features such as remote address
    * resolution, local address rotation etc.
    */

    #ifndef BLE_PRIVACY_SPT 
    -#define BLE_PRIVACY_SPT         TRUE
    +#define BLE_PRIVACY_SPT         FLASE
    #endif