You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## Bug Fixes
- Fixed BLE advertising not starting on boot
- Fixed rc=21 (BLE_HS_EALREADY) error
## Documentation
- Various documentation updates
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+28-18Lines changed: 28 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ This ESPHome package will capture Apple and Android Bluetooth Identity Resolving
8
8
9
9
This package uses the ESP-IDF framework for broad ESP32 board compatibility. The ESP-IDF framework is required for ESP32-C2, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2, and ESP32-P4 variants, as these newer ESP32 variants are not supported by the Arduino framework.
10
10
11
-
This ESPHome IRK capture package is only designed to capture IRKs and can NOT also act as a Bluetooth proxy. You can either flash this to a spare ESP32 device and keep it in a sock drawer when not being used, or temporarily flash this to an ESP32 then flash back to your generic Bluetooth proxy ESPHome configuration. Bermuda BLE will NOT recognize the IRK Capture firmware as a Bluetooth proxy.
11
+
This ESPHome IRK capture package is only designed to capture IRKs and can NOT also act as a Bluetooth proxy. You can either flash this to a spare ESP32 device and keep it in a sock drawer when not being used, or temporarily flash this to an ESP32 then flash back to your generic Bluetooth proxy ESPHome configuration.
12
12
13
13
## What is a BLE IRK and Why Is It Needed?
14
14
@@ -47,7 +47,7 @@ When your Apple or Android device pairs with the ESP32:
47
47
48
48
-**ESP32 board** with Bluetooth support (any variant: ESP32, ESP32-C3, ESP32-C6, ESP32-S3, etc.)
49
49
-**ESP-IDF framework** (required - this component does NOT support Arduino framework)
50
-
-**ESPHome** 2024.x or newer - Tested with 2025.12
50
+
-**ESPHome** 2024.x or newer - Tested with 2025.12.7
51
51
-**Home Assistant** (optional, but recommended for using the captured IRK with Private BLE Device integration)
52
52
-**ESPHome Device Builder** (optional, but makes managing ESPHome devices in Home Assistant easier)
53
53
@@ -67,22 +67,28 @@ This is the simplest installation method. It pulls the component directly from G
67
67
68
68
1. Create a new dummy device in ESPHome, and save the unique API and OTA keys.
69
69
2. Delete all of the pre-populated YAML from the dummy device.
70
-
3.**Create your device YAML** using [irk-capture-device-remote.yaml](ESPHome%20Devices/irk-capture-device-remote.yaml) as a template and replace the OTA and API keys with the ones ESPHome generated.
71
-
- Modify the YAML parameters `esp32_variant` and `esp32_board` as needed to match your ESP32 device and board type
72
-
-Change the `device_name` and `friendly_name` as desired.
70
+
3. Create your device YAML using [irk-capture-device-remote.yaml](ESPHome%20Devices/irk-capture-device-remote.yaml) as a template and replace the OTA and API keys with the ones ESPHome generated.
71
+
- Modify the YAML parameters `esp32_variant` and `esp32_board` as needed to match your ESP32 device and board type. Refer to the list below for the January 2026 list of esp32_variant options, which must match your board type.
72
+
-For example, an ESP32 Huzzah32 Feather would be: `esp32_board: featheresp32`, `esp32_variant: esp32`
- Change the `device_name` and `friendly_name` as desired.
76
+
- Modify the Wi-Fi secrets references as needed to match your secrets file.
75
77
76
-
4.**Secrets File (managed by ESPHome device builder UI):**
78
+
4.**Review your ESPHome Builder Secrets File and modify the Wi-Fi values as needed:**
77
79
78
80
```yaml
79
81
wifi_ssid: "Your WiFi Network"
80
82
wifi_password: "your_wifi_password"
81
83
wifi_captive: "fallback_password"
82
84
```
83
85
84
-
5. **Flash to your ESP32:**
85
-
- In ESPHome, click "Install" and choose your connection method
86
+
5. Below is an example of a complete device YAML file:
87
+
88
+

89
+
90
+
6. **Flash to your ESP32:**
91
+
- In ESPHome, click "Install" and choose your connection method. If you select serial, make sure you are using a browser that supports direct serial port access such as Chrome, Edge, or Brave. Not compatible with Firefox or Safari. Depending on PC OS and ESP32 device, you may need to install serial port drivers. Refer to the ESP32 flasher pop-up windows for links to various ESP32 driver packages.
86
92
- IMPORTANT: After the flashing is complete, either power cycle your ESP32 or do a 'Restart Device' from the ESPHome interface. This will randomize the BLE MAC address.
87
93
88
94
### Using ESPHome Device Builder Package - Local (Option 2)
@@ -104,7 +110,10 @@ This is the simplest installation method. It pulls the component directly from G
104
110
- Create a new dummy device in ESPHome, and save the unique API and OTA keys.
105
111
- Delete all of the pre-populated YAML from the dummy device.
106
112
- Paste the [irk-capture-device.yaml](ESPHome%20Devices/irk-capture-device.yaml) contents into the ESPHome device builder and replace the OTA and API keys with the ones ESPHome generated.
107
-
- Modify the YAML parameters `esp32_variant` and `esp32_board` as needed to match your ESP32 device and board type
113
+
- Modify the YAML parameters `esp32_variant` and `esp32_board` as needed to match your ESP32 device and board type. Refer to the list below for the January 2026 list of esp32_variant options, which must match your board type.
114
+
- For example, an ESP32 Huzzah32 Feather would be: `esp32_board: featheresp32`, `esp32_variant: esp32`
115
+
116
+

108
117
- Change the `device_name` and `friendly_name` as desired.
109
118
- You should only modify the substitutions shown below:
110
119
@@ -119,8 +128,7 @@ This is the simplest installation method. It pulls the component directly from G
119
128
ble_name: "IRK Capture"# Change: BLE advertising name (max 12 characters, shown in Bluetooth settings)
120
129
```
121
130
122
-
4. **Secrets File (managed by ESPHome device builder UI):**
123
-
- Modify the Wi-Fi secrets as needed
131
+
4. **Review your ESPHome Builder Secrets File and modify the Wi-Fi values as needed:**
124
132
125
133
```yaml
126
134
wifi_ssid: "Your WiFi Network"
@@ -129,15 +137,18 @@ This is the simplest installation method. It pulls the component directly from G
129
137
```
130
138
131
139
5. **Flash to your ESP32:**
132
-
- In ESPHome Device Builder, click "Install" and choose your connection method
140
+
- In ESPHome, click "Install" and choose your connection method. If you select serial, make sure you are using a browser that supports direct serial port access such as Chrome, Edge, or Brave. Not compatible with Firefox or Safari. Depending on PC OS and ESP32 device, you may need to install serial port drivers. Refer to the ESP32 flasher pop-up windows for links to various ESP32 driver packages.
133
141
- IMPORTANT: After the flashing is complete, either power cycle your ESP32 or do a 'Restart Device' from the ESPHome interface. This will randomize the BLE MAC address.
134
142
135
143
### Using a Standalone ESPHome Device - Local (Option 3)
136
144
137
145
1. Create a new dummy device in ESPHome, and save the unique API and OTA keys.
138
146
2. Delete all of the pre-populated YAML from the dummy device.
139
147
3. Copy the contents of the [irk-capture-full.yaml](https://github.com/DerekSeaman/irk-capture/blob/main/ESPHome%20Devices/irk-capture-full.yaml) into the ESPHome device builder and replace the OTA and API keys with the ones ESPHome generated.
140
-
4. Modify the YAML parameters `esp32_variant` and `esp32_board` as needed to match your ESP32 device and board type.
148
+
4. Modify the YAML parameters `esp32_variant` and `esp32_board` as needed to match your ESP32 device and board type. Refer to the list below for the January 2026 list of esp32_variant options, which must match your board type.
149
+
- For example, an ESP32 Huzzah32 Feather would be: `esp32_board: featheresp32`, `esp32_variant: esp32`
150
+
151
+

141
152
5. Change the `device_name` and `friendly_name` as desired.
142
153
6. You should only modify the substitutions shown below:
143
154
@@ -152,8 +163,7 @@ This is the simplest installation method. It pulls the component directly from G
152
163
ble_name: "IRK Capture" # Change: BLE advertising name (max 12 characters, shown in Bluetooth settings)
153
164
```
154
165
155
-
7. **Secrets File (managed by ESPHome device builder UI):**
156
-
- Modify the Wi-Fi secrets as needed
166
+
7. **Review your ESPHome Builder Secrets File and modify the Wi-Fi values as needed:**
157
167
158
168
```yaml
159
169
wifi_ssid: "Your WiFi Network"
@@ -162,7 +172,7 @@ This is the simplest installation method. It pulls the component directly from G
162
172
```
163
173
164
174
8. **Flash to your ESP32:**
165
-
- In ESPHome Device Builder, click "Install" and choose your connection method
175
+
- In ESPHome, click "Install" and choose your connection method. If you select serial, make sure you are using a browser that supports direct serial port access such as Chrome, Edge, or Brave. Not compatible with Firefox or Safari. Depending on PC OS and ESP32 device, you may need to install serial port drivers. Refer to the ESP32 flasher pop-up windows for links to various ESP32 driver packages.
166
176
- IMPORTANT: After the flashing is complete, either power cycle your ESP32 or do a 'Restart Device' from the ESPHome interface. This will randomize the BLE MAC address.
167
177
168
178
### Optional Configuration Parameters (Not recommended to change)
@@ -391,7 +401,7 @@ Watches that require "reverse" pairing (i.e. the watch advertises as a device th
391
401
### ESPHome Build Fails
392
402
393
403
- Clean the build folder and retry
394
-
- Ensure you're using ESPHome 2024.x or newer (tested with ESPHome 2025.12)
404
+
- Ensure you're using ESPHome 2024.x or newer (tested with ESPHome 2025.12.7)
395
405
- Verify your `esp32_variant` and `esp32_board` substitutions match your hardware
396
406
- Check that all required secrets are defined in `secrets.yaml`
-**Fixed BLE advertising not starting on boot**: Resolved an issue where BLE advertising would not automatically start when `start_on_boot: true` was configured. The advertising initialization now correctly waits for the NimBLE host to sync before starting.
6
+
7
+
-**Fixed rc=21 (BLE_HS_EALREADY) error**: Added defensive handling to prevent advertising start failures when the BLE GAP was in a transitional state.
8
+
9
+
## Documentation
10
+
11
+
- Various documentation updates including improved installation instructions, ESP32 variant reference images, and browser compatibility notes for serial flashing.
0 commit comments