Android 5 статический блютуз MAC-адрес для рекламы BLE

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

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

2 ответа

Решение

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

Платформа Android BLE НЕ использует этот адрес при рекламе. Скорее, он обеспечивает конфиденциальность, используя частные разрешаемые адреса, которые могут меняться каждые несколько минут или около того, но все же позволяют подключенным устройствам распознавать его, используя IRK, которым обмениваются при соединении.

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

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

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

    * Включает поддержку общих функций конфиденциальности LE, таких как удаленный адрес
    * разрешение, ротация локального адреса и т. д.
    * /

    #ifndef BLE_PRIVACY_SPT 
    - # определить BLE_PRIVACY_SPT         TRUE
    +# определение BLE_PRIVACY_SPT         FLASE
    #endif
Другие вопросы по тегам