Skip to content

Commit 869c87a

Browse files
DerekSeamanclaude
andcommitted
Merge dev into main for v1.5.4 release
## 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>
2 parents 2f7d269 + 21e6455 commit 869c87a

File tree

10 files changed

+95
-156
lines changed

10 files changed

+95
-156
lines changed

ESPHome Devices/irk-capture-base.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ esphome:
3232
friendly_name: ${friendly_name}
3333
project:
3434
name: "derekseaman.irk-capture"
35-
version: "1.5.3"
35+
version: "1.5.4"
3636

3737
# IMPORTANT: Do NOT include esp32_ble:, esp32_ble_tracker:, or bluetooth_proxy: here.
3838
# The irk_capture component fully initializes and manages NimBLE itself.

ESPHome Devices/irk-capture-device-remote.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,12 @@ packages:
1313
url: https://github.com/DerekSeaman/irk-capture
1414
ref: main
1515
file: ESPHome Devices/irk-capture-base.yaml
16+
refresh: always
17+
18+
# Override the package's WiFi configuration with your secrets
19+
wifi:
20+
ssid: !secret wifi_ssid
21+
password: !secret wifi_password
22+
ap:
23+
ssid: "${friendly_name} Fallback"
24+
password: !secret wifi_captive

ESPHome Devices/irk-capture-full.yaml

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,20 @@ substitutions:
1212
esp32_board: featheresp32 # Set to your board ID (e.g., featheresp32, esp32dev)
1313
ble_name: "IRK Capture"
1414

15+
wifi:
16+
ssid: !secret wifi_ssid
17+
password: !secret wifi_password
18+
domain: .local
19+
use_address: ${device_name}.local
20+
power_save_mode: NONE
21+
fast_connect: true
22+
enable_on_boot: true
23+
reboot_timeout: 10min
24+
ap:
25+
ssid: "${friendly_name} Fallback"
26+
password: !secret wifi_captive
27+
ap_timeout: 120s
28+
1529
# Do not change anything below this line unless you know what you're doing
1630

1731
esp32:
@@ -43,7 +57,7 @@ esphome:
4357
friendly_name: ${friendly_name}
4458
project:
4559
name: "derekseaman.irk-capture"
46-
version: "1.5.3"
60+
version: "1.5.4"
4761

4862
# IMPORTANT: Do NOT include esp32_ble:, esp32_ble_tracker:, or bluetooth_proxy: here.
4963
# The irk_capture component fully initializes and manages NimBLE itself.
@@ -62,20 +76,6 @@ ota:
6276
password: ${ota_password}
6377
version: 2
6478

65-
wifi:
66-
ssid: !secret wifi_ssid
67-
password: !secret wifi_password
68-
domain: .local
69-
use_address: ${device_name}.local
70-
power_save_mode: NONE
71-
fast_connect: true
72-
enable_on_boot: true
73-
reboot_timeout: 10min
74-
ap:
75-
ssid: "${friendly_name} Fallback"
76-
password: !secret wifi_captive
77-
ap_timeout: 120s
78-
7979
captive_portal:
8080

8181
mdns:

README.md

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ This ESPHome package will capture Apple and Android Bluetooth Identity Resolving
88
99
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.
1010

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.
1212

1313
## What is a BLE IRK and Why Is It Needed?
1414

@@ -47,7 +47,7 @@ When your Apple or Android device pairs with the ESP32:
4747

4848
- **ESP32 board** with Bluetooth support (any variant: ESP32, ESP32-C3, ESP32-C6, ESP32-S3, etc.)
4949
- **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
5151
- **Home Assistant** (optional, but recommended for using the captured IRK with Private BLE Device integration)
5252
- **ESPHome Device Builder** (optional, but makes managing ESPHome devices in Home Assistant easier)
5353

@@ -67,22 +67,28 @@ This is the simplest installation method. It pulls the component directly from G
6767

6868
1. Create a new dummy device in ESPHome, and save the unique API and OTA keys.
6969
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`
7373

74-
![ESPHome Device Builder YAML Configuration](docs/screenshot-3.jpg)
74+
![ESP32 Variants](docs/ESP-variants.jpg)
75+
- Change the `device_name` and `friendly_name` as desired.
76+
- Modify the Wi-Fi secrets references as needed to match your secrets file.
7577

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:**
7779

7880
```yaml
7981
wifi_ssid: "Your WiFi Network"
8082
wifi_password: "your_wifi_password"
8183
wifi_captive: "fallback_password"
8284
```
8385
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+
![Remote Example](docs/remote-example.jpg)
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.
8692
- 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.
8793
8894
### 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
104110
- Create a new dummy device in ESPHome, and save the unique API and OTA keys.
105111
- Delete all of the pre-populated YAML from the dummy device.
106112
- 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+
![ESP32 Variants](docs/ESP-variants.jpg)
108117
- Change the `device_name` and `friendly_name` as desired.
109118
- You should only modify the substitutions shown below:
110119

@@ -119,8 +128,7 @@ This is the simplest installation method. It pulls the component directly from G
119128
ble_name: "IRK Capture" # Change: BLE advertising name (max 12 characters, shown in Bluetooth settings)
120129
```
121130
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:**
124132
125133
```yaml
126134
wifi_ssid: "Your WiFi Network"
@@ -129,15 +137,18 @@ This is the simplest installation method. It pulls the component directly from G
129137
```
130138
131139
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.
133141
- 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.
134142
135143
### Using a Standalone ESPHome Device - Local (Option 3)
136144
137145
1. Create a new dummy device in ESPHome, and save the unique API and OTA keys.
138146
2. Delete all of the pre-populated YAML from the dummy device.
139147
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+
![ESP32 Variants](docs/ESP-variants.jpg)
141152
5. Change the `device_name` and `friendly_name` as desired.
142153
6. You should only modify the substitutions shown below:
143154

@@ -152,8 +163,7 @@ This is the simplest installation method. It pulls the component directly from G
152163
ble_name: "IRK Capture" # Change: BLE advertising name (max 12 characters, shown in Bluetooth settings)
153164
```
154165

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:**
157167

158168
```yaml
159169
wifi_ssid: "Your WiFi Network"
@@ -162,7 +172,7 @@ This is the simplest installation method. It pulls the component directly from G
162172
```
163173

164174
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.
166176
- 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.
167177

168178
### 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
391401
### ESPHome Build Fails
392402

393403
- 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)
395405
- Verify your `esp32_variant` and `esp32_board` substitutions match your hardware
396406
- Check that all required secrets are defined in `secrets.yaml`
397407

RELEASE_NOTES_v1.5.2.md

Lines changed: 0 additions & 112 deletions
This file was deleted.

RELEASE_NOTES_v1.5.4.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Release Notes v1.5.4
2+
3+
## Bug Fixes
4+
5+
- **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

Comments
 (0)