No clue how to get ESPHome bluetooth to work

I have 3 ESP32-wroom devices set up with the bluetooth proxy and none of them ‘do anything’. I’ve spent about 4 days on this so far and it just is not fun.

They show up in the ESPHome Builder addon in home assistant, I can update them and watch the log show files buildings and being deployed successfully, but… No bluetooth devices ever appear, if I manually try to add something (like an ARANet4) the aranet integration says ‘no bluetooth adaptors’, if I load up the logs via wifi for one of them it just says:

INFO ESPHome 2024.12.2
INFO Reading configuration /config/esphome/esphome-web-f1bda4.yaml...
INFO Starting log output from 10.0.5.173 using esphome API
INFO Successfully connected to esphome-web-f1bda4 @ 10.0.5.173 in 0.628s
INFO Successful handshake with esphome-web-f1bda4 @ 10.0.5.173 in 0.283s
[16:33:08][I][app:100]: ESPHome version 2024.11.1 compiled on Nov 25 2024, 08:39:04
[16:33:08][I][app:102]: Project esphome.web version 24.11.1
[16:33:08][C][wifi:600]: WiFi:
[16:33:08][C][wifi:428]:   Local MAC: 94:54:C5:F1:BD:A4
[16:33:08][C][wifi:433]:   SSID: [redacted]
[16:33:08][C][wifi:436]:   IP Address: 10.0.5.173
[16:33:08][C][wifi:440]:   BSSID: [redacted]
[16:33:08][C][wifi:441]:   Hostname: 'esphome-web-f1bda4'
[16:33:08][C][wifi:443]:   Signal strength: -60 dB ▂▄▆█
[16:33:08][C][wifi:447]:   Channel: 11
[16:33:08][C][wifi:448]:   Subnet: 255.255.254.0
[16:33:08][C][wifi:449]:   Gateway: 10.0.4.1
[16:33:08][C][wifi:450]:   DNS1: 10.0.4.110
[16:33:08][C][wifi:451]:   DNS2: 10.0.4.1
[16:33:08][C][logger:185]: Logger:
[16:33:08][C][logger:186]:   Level: DEBUG
[16:33:08][C][logger:188]:   Log Baud Rate: 115200
[16:33:08][C][logger:189]:   Hardware UART: UART0
[16:33:08][C][esp32_ble:391]: ESP32 BLE:
[16:33:08][C][esp32_ble:393]:   MAC address: 94:54:C5:F1:BD:A6
[16:33:08][C][esp32_ble:394]:   IO Capability: none
[16:33:08][C][esp32_ble_server:200]: ESP32 BLE Server:
[16:33:08][C][esp32_improv.component:269]: ESP32 Improv:
[16:33:08][C][captive_portal:089]: Captive Portal:
[16:33:08][C][web_server:153]: Web Server:
[16:33:08][C][web_server:154]:   Address: esphome-web.local:80
[16:33:08][C][mdns:116]: mDNS:
[16:33:08][C][mdns:117]:   Hostname: esphome-web-f1bda4
[16:33:08][C][esphome.ota:073]: Over-The-Air updates:
[16:33:08][C][esphome.ota:074]:   Address: esphome-web.local:3232
[16:33:08][C][esphome.ota:075]:   Version: 2
[16:33:08][C][safe_mode:018]: Safe Mode:
[16:33:08][C][safe_mode:020]:   Boot considered successful after 60 seconds
[16:33:08][C][safe_mode:021]:   Invoke after 10 boot attempts
[16:33:08][C][safe_mode:023]:   Remain in safe mode for 300 seconds
[16:33:08][C][api:140]: API Server:
[16:33:08][C][api:141]:   Address: esphome-web.local:6053
[16:33:08][C][api:145]:   Using noise encryption: NO
[16:33:08][C][improv_serial:032]: Improv Serial:
[16:33:13][D][api:103]: Accepted 10.0.4.113
[16:33:13][D][api.connection:1446]: Home Assistant 2025.1.2 (10.0.4.113): Connected successfully
[16:33:59][I][safe_mode:041]: Boot seems successful; resetting boot loop counter
[16:33:59][D][esp32.preferences:114]: Saving 1 preferences to flash...
[16:33:59][D][esp32.preferences:143]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed

I initially installed one with the ‘ready made project’ from esphome and it just threw errors about invalid certificates, so since the bluetooth proxy setup is so trivial I just made my own yaml to install on them.

Here is an example

esphome:
  name: esphome-web-f1bda4
  friendly_name: Bluetooth Proxy f1bda4
  min_version: 2024.11.0
  name_add_mac_suffix: false

esp32:
  board: esp32dev
  framework:
    type: esp-idf

# Enable logging
logger:

# Enable Home Assistant API
api:

# Allow Over-The-Air updates
ota:
- platform: esphome

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  fast_connect: true

esp32_ble_tracker:
  scan_parameters:
#    interval: 1100ms
#    window: 1100ms
    active: true

bluetooth_proxy:
  active: true

#sensor:
#  - platform: wifi_signal # Reports the WiFi signal strength/RSSI in dB
#    name: "WiFi Signal dB"
#    id: wifi_signal_db
#    update_interval: 60s
#    entity_category: "diagnostic"

Why doesn’t this work and how do I get it to work?

I even tried adding the extra lines found in another forum post (ESP32-S3 as bluetooth proxy doesnt work?) and all that did was make an unresponsive ESP


framework:
    type: esp-idf
    sdkconfig_options:
      CONFIG_BT_BLE_50_FEATURES_SUPPORTED: y
      CONFIG_BT_BLE_42_FEATURES_SUPPORTED: y
      CONFIG_ESP_TASK_WDT_TIMEOUT_S: "10"

What Bluetooth devices do you have which you exect it to detect?

It’ll have to be one that HA supprts, so do tell us exactly what devices you are expectng to show up.

You will also need to add the integration for the device you are trying to discover. For instance, to add my Inkbird grill thermometers, I first set up a proxy, add the integration, turn on the sensors, THEN they are discovered.

Oops - just spotted that…

Sounds like it should work.

Did you add the bluetooth proxies to Home Assistant?

3 Likes

Edit: the forum prevents me from putting multiple images in a single post. So I had to remove them.

They show up in the ESP Buiilder add on, and the show up in the ESPHome integration
![IM
(Ignore the two offline, that is expected since they are unplugged)

But attempting to add a device just says “no devices found”. There are two on my desk, both work and are accessible via an Aranet Bluetooth connection via a python cli
![IMG_0543|690x282

Trying the Bluetooth integration I get “no adapters”
![IM

I tried a few other random integrations over the past week…. My house is littered with Bluetooth stuff. But nothing…

I’m not an expert with the Bluetooth proxy, but I do have one running on an ESP32 WROOM using the ‘ready made project’ build. I just updated mine this morning and looking at the boot log, it appears you may be missing a few pieces from your config.

My build includes sections for BLE Tracker and Bluetooth Proxy, which I don’t see when your device is booting.

Here’s the boot log from my device:

INFO Successfully compiled program.
INFO Connecting to 192.168.1.77 port 3232...
INFO Connected to 192.168.1.77
INFO Uploading /data/build/esp32-bluetooth-proxy-334650/.pioenvs/esp32-bluetooth-proxy-334650/firmware.bin (1387456 bytes)
Uploading: [============================================================] 100% Done...

INFO Upload took 6.96 seconds, waiting for result...
INFO OTA successful
INFO Successfully uploaded program.
INFO Starting log output from 192.168.1.77 using esphome API
INFO Successfully connected to esp32-bluetooth-proxy-334650 @ 192.168.1.77 in 11.194s
INFO Successful handshake with esp32-bluetooth-proxy-334650 @ 192.168.1.77 in 0.177s
[11:10:59][I][app:100]: ESPHome version 2024.12.4 compiled on Jan 17 2025, 11:07:09
[11:10:59][C][wifi:600]: WiFi:
[11:10:59][C][wifi:428]:   Local MAC: 30:C9:22:33:46:50
[11:10:59][C][wifi:433]:   SSID: [redacted]
[11:10:59][C][wifi:436]:   IP Address: 192.168.1.77
[11:10:59][C][wifi:439]:   BSSID: [redacted]
[11:10:59][C][wifi:441]:   Hostname: 'esp32-bluetooth-proxy-334650'
[11:10:59][C][wifi:443]:   Signal strength: -41 dB ▂▄▆█
[11:10:59][C][wifi:447]:   Channel: 1
[11:10:59][C][wifi:448]:   Subnet: 255.255.255.0
[11:10:59][C][wifi:449]:   Gateway: 192.168.1.254
[11:10:59][C][wifi:450]:   DNS1: 192.168.1.254
[11:10:59][C][wifi:451]:   DNS2: 0.0.0.0
[11:10:59][C][logger:185]: Logger:
[11:10:59][C][logger:186]:   Level: DEBUG
[11:10:59][C][logger:188]:   Log Baud Rate: 115200
[11:10:59][C][logger:189]:   Hardware UART: UART0
[11:10:59][C][bluetooth_proxy:091]: Bluetooth Proxy:
[11:10:59][C][bluetooth_proxy:092]:   Active: YES
[11:10:59][C][bluetooth_proxy:093]:   Connections: 3
[11:10:59][C][bluetooth_proxy:094]:   Raw advertisements: NO
[11:10:59][C][safe_mode.button:024]: Safe Mode Button 'Safe Mode Boot'
[11:10:59][C][safe_mode.button:024]:   Icon: 'mdi:restart-alert'
[11:10:59][C][factory_reset.button:011]: Factory Reset Button 'Factory reset'
[11:10:59][C][factory_reset.button:011]:   Icon: 'mdi:restart-alert'
[11:10:59][C][esp32_ble:418]: ESP32 BLE:
[11:10:59][C][esp32_ble:419]:   MAC address: 30:C9:22:33:46:52
[11:10:59][C][esp32_ble:421]:   IO Capability: none
[11:11:00][C][esp32_ble_tracker:661]: BLE Tracker:
[11:11:00][C][esp32_ble_tracker:662]:   Scan Duration: 300 s
[11:11:00][C][esp32_ble_tracker:663]:   Scan Interval: 320.0 ms
[11:11:00][C][esp32_ble_tracker:664]:   Scan Window: 30.0 ms
[11:11:00][C][esp32_ble_tracker:665]:   Scan Type: ACTIVE
[11:11:00][C][esp32_ble_tracker:666]:   Continuous Scanning: True
[11:11:00][C][mdns:116]: mDNS:
[11:11:00][C][mdns:117]:   Hostname: esp32-bluetooth-proxy-334650
[11:11:00][C][esphome.ota:073]: Over-The-Air updates:
[11:11:00][C][esphome.ota:074]:   Address: esp32-bluetooth-proxy-334650.local:3232
[11:11:00][C][esphome.ota:075]:   Version: 2
[11:11:00][C][safe_mode:018]: Safe Mode:
[11:11:00][C][safe_mode:019]:   Boot considered successful after 60 seconds
[11:11:00][C][safe_mode:021]:   Invoke after 10 boot attempts
[11:11:00][C][safe_mode:022]:   Remain in safe mode for 300 seconds
[11:11:00][C][api:140]: API Server:
[11:11:00][C][api:141]:   Address: esp32-bluetooth-proxy-334650.local:6053
[11:11:00][C][api:143]:   Using noise encryption: YES
[11:11:04][D][esp-idf:000][wifi]: I (16974) wifi:
[11:11:04][D][esp-idf:000][wifi]: <ba-add>idx:1 (ifx:0, 04:70:56:67:77:78), tid:3, ssn:1, winSize:64
[11:11:04][D][esp-idf:000][wifi]: 

[11:11:48][I][safe_mode:041]: Boot seems successful; resetting boot loop counter
[11:11:48][D][esp32.preferences:114]: Saving 1 preferences to flash...
[11:11:48][D][esp32.preferences:142]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed
[11:15:49][D][esp32_ble_tracker:273]: Starting scan...

Hope that’s helps…

We asked what devices. “Littered with Bluetooth stuff” is not an answer.

TEMPORARILY set your logging level to VERBOSE or VERY_VERBOSE and you’ll start seeing all of the nearby bluetooth devices (MAC Addresses) in the logs.

logger:
  level: VERY_VERBOSE

But as @nickrout stated, none of them will show up in Home Assistant unless they are officially supported or unless someone has written the code to support it.

Per the original message and my first reply, the primary device that I am attempting to connect is an aranet4, which is a bluetooth compatible air quality monitoring device that is supported by the Aranet home assistant integration. I have two such devices, they both are on and they both are responding over bluetooth when other apps attempt to use them.

Device: Aranet

Batteries in one were replaced yesterday when they died, in the other today as preventative maintenance.

Integration: Aranet - Home Assistant

The Aranet integration will automatically discover devices once the Bluetooth integration is enabled and functional.

Nothing is happening automatically, and nothing other than “No devices found” shows when I manually attempt to add one.

your Aranet device is updated to at least firmware version 1.2.0

They were both already 1.4+ before I started.

has the “Smart Home integration” feature enabled

Also already done before I started.

Example output from cli run on a computer on the same desk as the esp32 proxy and the 2 aranet4 devices showing that they are both live and responding.


aranetctl --scan
Looking for Aranet devices...
=======================================
  Name:     Aranet4 060B9
  Address:  ED7A2493-CB01-B19F-CE26-F2D66C28A845
  RSSI:     -65 dBm
--------------------------------------
  CO2:            845 pm
  Temperature:    23.0 °C
  Humidity:       36 %
  Pressure:       1025.2 hPa
  Battery:        99 %
  Status Disp.:   GREEN
  Age:            154/300
  Counter:        -1

=======================================
  Name:     Aranet4 19F15
  Address:  32F5FF1D-E49D-9153-51F1-0B9BAC2F367F
  RSSI:     -65 dBm
--------------------------------------
  CO2:            857 pm
  Temperature:    25.4 °C
  Humidity:       30 %
  Pressure:       1023.0 hPa
  Battery:        94 %
  Status Disp.:   GREEN
  Age:            102/300
  Counter:        -1

Scan finished. Found 2

Other random devices also don’t work. I didn’t want to list every single device, since generally focusing on a single issue is easier.

But, I have 3 Govee lights that are currently responding to bluetooth per the bluetooth sensor on my phone. They are neither automatically appearing in Home Assistant nor are they appearing when I use the Govee integration and click “Govee Bluetooth” (“No devices found on the network”)

Well this turned out to be a helpful suggestion!

After turning on very_verbose logging on all my test esp32 devices, I connected to the log of one and watched dozens of “Too many events to process” messages flow by.

5 minutes later, I got a notification that new devices were discovered. Clicking on to that page, there were multiple devices (including the two aranet4 monitors) showing up in the ‘Discovered’ section.

I’ll let it go for awhile longer and get the things I care about added in, then revert the log level back to normal debug.

Super weird that that somehow kickstarted things after dozens+ of reinstalls and dozens+ more worth of power cycling on the devices. “Something was super broken on 6 different ESP devices from 2 different suppliers and it un-broke when logging was turned on” is certainly not what I’d expect the conclusion to be, lol.

My apologies, I didn’t understand what aranet was. I was a little harsh.

Yea, I didn’t think that changing the logging level would have any effect on them showing up either! I think very_verbose is too chatty and just verbose would let you see more of the data that’s being pulled in. Glad you got it working.

I would not expect the logging level to make a difference. What I do wonder is did you have the bluetooth and BLE integration on HA before? I get the distinct impression that is needed for autodiscovery, even if the device itself has its own integration.
note the first line in the docs:

Could it be that with all your tinkering to get things working, this was also installed or enabled? The proxies just relay the info to the respective integrations on HA. They act as a bluetooth adapter but are useless without the proper integrations to use the info. The error the bluetooth integration gives is confusing, since the proxies behave as a bluetooth adapter in a way.