Do not use ESPHome Ready-Made Projects Bluetooth Proxy in Home Assistant!

It’s a little strange that such important information is not available anywhere, but “never say never” - maybe it is available but I just couldn’t find it with a simple search.

Anyway, for all those who encounter the same annoying problem.

A little while ago I had a need for a bluetooth proxy. So I went to the ESPHome Ready-Made Projects page and installed the bluetooth proxy I needed. Unfortunately, I immediately started getting error messages in the esphome log.
It discovered device but was unable to connect.

`[11:14:22][I][esp32_ble_client:067]: [0] [00:A0:40:EF:35:66] 0x00 Attempting BLE connection
[11:14:22][D][esp-idf:000]: W (6091062) BT_HCI: hcif disc complete: hdl 0x0, rsn 0x3e

[11:14:23][D][esp-idf:000]: W (6091692) BT_HCI: hcif disc complete: hdl 0x0, rsn 0x3e

[11:14:24][D][esp-idf:000]: W (6092337) BT_HCI: hcif disc complete: hdl 0x0, rsn 0x3e

[11:14:24][D][esp-idf:000]: W (6093102) BT_APPL: gattc_conn_cb: if=3 st=0 id=3 rsn=0x3e

[11:14:24][D][esp-idf:000]: W (6093107) BT_APPL: gattc_conn_cb: if=4 st=0 id=4 rsn=0x3e

[11:14:24][D][esp-idf:000]: W (6093110) BT_APPL: gattc_conn_cb: if=5 st=0 id=5 rsn=0x3e

[11:14:24][D][esp-idf:000]: W (6093114) BT_HCI: hcif disc complete: hdl 0x0, rsn 0x3e

[11:14:25][D][esp32_ble_client:172]: [0] [00:A0:50:EF:35:1E] ESP_GATTC_DISCONNECT_EVT, reason 62`

I couldn’t find any help for these errors anywhere. I knew the Home Assistant bluetooth works but the proxy doesn’t. It seemed very ESPHome bug. Since I had no solution here, it seemed that the project would simply remain unfinished.
Since I don’t like things that I don’t know what they contain, I eventually went to the esphome page firmware/bluetooth-proxy/esp32-generic.yaml at f9290e1925a3840ef5fc43a5ec5dcb2c704b2d7f · esphome/firmware · GitHub and actually looked into this. This was the place where I had a “eureka” moment.

If you use ESPHome bluetooth proxy in Home Assistant, YAML configuration must (at least at the moment) be entered manually!
When using BT proxy in Home Assistant, in the YAML must be removed lines:

  framework:
    type: esp-idf

Now arduino framework is used instead of esp-idf and your BT proxy should work again.

Sounds like an issue unique to your device, as ESP-IDF is recommended per the BT Proxy docs.

Did you maybe not flash it initially via serial?

Usually I use the Esphome Web, device connected to USB, after that OTA. There must be something in ESPHome side bcs all the time device was discoverable directly with HA bluetooth. So there must be a technical difference there. Nor is I smart enough to know if there may be differences in the BT device side that could cause such problems.
As I said, hopefully this is solution to all those who encounter the same annoying problem.

What esp board are you using?

Proxy works only ESP32 so I have that. But on chip is written ESP32-WROOM-32D

Thats a common misunderstanding. Yes, technically you have an esp22, just like I own a “car”. Esp32 is the series and a broad term that covers the entire variety of esp32’s each with a specific name that follows “esp32”

You should really be including the specific board on any future posts and then people can better help you and also not have to wait around for an answer. It’s not always the case, but a lot of times the specific board matters and is an important detail.

Thank you for this post @catdogmaus !! It was driving me crazy. I received an Atom Lite and configured it through Ready-Made Projects as a bluetooth proxy and was not able to add an Onvis HS2 via bluetooth to HomeKit (and then add it to my Thread network). It always gave me the same errors that you have put in your log.

Just as you say, I copied the configuration and removed the lines from the framework and Onvis connected me the first time!

Thank you

I think for those who use esp32-generic or esp32-generic-c3 it is still better to stick to esphome recommended setup. (If everyting works of course) Also esphome has made heavy changes lately. Some of them breaking. So I am not sure how long this option will be useful. So far glad I could help.

1 Like

espidf works much better for me with the M5Stack Atom Lite.