From fe53d24e46ed31d1dc32b65ec3d94dceb3f54680 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sat, 8 Aug 2026 01:38:33 -0500 Subject: [PATCH] Read the adapter MAC through esp_read_mac --- .../components/esp32_ble_tracker/esp32_ble_tracker.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp b/esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp index 785bc258b1..5474c68a14 100644 --- a/esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +++ b/esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp @@ -9,6 +9,7 @@ #ifndef CONFIG_ESP_HOSTED_ENABLE_BT_BLUEDROID #include +#include #endif #include #include @@ -286,10 +287,9 @@ void ESP32BLETracker::register_listener(ble_device_base::ESPBTDeviceListener *li } void ESP32BLETracker::get_adapter_mac(uint8_t out[6]) { - get_mac_address_raw(out); // WiFi base MAC, MSB-first - // BT MAC = base MAC + 2 on the last octet only, wrapping without carry — - // exactly ESP-IDF's esp_read_mac(ESP_MAC_BT): mac[5] += MAC_ADDR_UNIVERSE_BT_OFFSET. - out[5] += 2; + // IDF owns the BT-offset derivation (base + 2 with four universal MACs, + // base + 1 with two); works before the BT stack is up. + esp_read_mac(out, ESP_MAC_BT); } void ESP32BLETracker::register_listener(ESPBTDeviceListener *listener) {