ESPHome BLE proxy does not detect ibeacons

There were similar topic, but I was never able to find a solution.

Setup:

  1. Home Assistant
  2. Several ESP32 with ethernet port (and some WiFi-connected just to test) flashed with ESPHome with BLE proxy mode
  3. A few Android phones with HA companion app set up to broadcast iBeacon messages
  4. iBeacon integration in HA

Outcome:

  1. HA sees a lot of BLE devices (smart watches etc) fine and stable
  2. HA does not see any iBeacons
  3. In VERY_VERBOSE logging on ESPHome I can’t see iBeacons either, only basic BLE
  4. When second phone is set up as an iBeacon monitor it can see the first phone fine with distance/major/minor/etc.

So my conclusion the problem is somewhere in the ESPHome most likely. Any ideas?

ESPHome config is more or less copy-paste from the docs:

esphome:
  name: ble-ethernet-house

esp32:
  board: esp-wrover-kit
  framework:
    type: esp-idf

ethernet:
  type: LAN8720
  mdc_pin: GPIO23
  mdio_pin: GPIO18
  clk_mode: GPIO0_IN
  phy_addr: 1
  power_pin: GPIO16

api:
ota:
logger:

esp32_ble_tracker:
  scan_parameters:
    active: false
    interval: 1100ms
    window: 1100ms

bluetooth_proxy:
  active: false

time:
- platform: homeassistant
  id: homeassistant_time

I was never able to get the iBeacon part of the HA app to work. I confirmed with another device that it was broadcasting (same as you did). I also confirmed with a dedicated iBeacon app I could get my phone to be detected by HA. Seemed to be a somewhat common problem and since I didn’t care enough, I didn’t bother to use another app.

iBeacons without names are not allowed since it would record all nearby Bluetooth devices.
The HA app can’t create a name due to limitations so that’s why it’s not working right now.
They are busy with an allowable iBeacon minor of 40004 but it hasn’t been pulled yet, see: Allow ibeacons with no name but a allowlisted minor by chatziko · Pull Request #104419 · home-assistant/core · GitHub

Hmm, is it certain that it’s just the names are the problem? Is there any Android App that can set the names somehow? I’ve tried a few beacon transmitter Apps and had zero success to see the beacons in HA.

You can read about it in the link.

I’ve read it and I don’t see a reference to some Android App that can generate proper iBeacon adverisements…

Exactly, thats why they are going for a allowable minor instead, so hold on until that walk-around is live.

Hmm, thanks. I found an app that can set the name, but as far as I see the name is not in the advertisement packet, but in a scan response, so ESPHome needs to query the beacon from its side I guess. Anyway, even if I set the name I don’t see it in the HA (I see the beacon on other phone).

I’ll try maybe to build ESPHome with that 40004 whitelisting PR merged in and see if that helps…

I have the same issue and have been running the custom component from here - iBeacons without names are not seen by the integration · Issue #80357 · home-assistant/core · GitHub and it’s been working a dream. All of my iBeacons that were previously missing, are now present.

Thanks, that really works for me now. The only problem is that when I disable/enable the iBeacon Transmitter in the HASS App it creates a new entity with same UUID/Major/Minor, but with some different suffix e.g.

4c351c7d-8698-48e8-aeff-3ac5308a96be_2000_2000 0EAA
4c351c7d-8698-48e8-aeff-3ac5308a96be_2000_2000 203F
4c351c7d-8698-48e8-aeff-3ac5308a96be_2000_2000 5099

I wonder if that can be circumvented somehow and what does this suffix mean…

Ah ok, it’s documented, those are randomized MACs, when it gathers 10 of those it combines them into a single entity.

1 Like