SmartHomeShop Docs

Build a Bluetooth Proxy

You can turn an UltimateSensor Mini v2 Ethernet into an ESPHome Bluetooth Proxy by adding two components to its own ESPHome configuration and compiling the firmware yourself.

Advanced and unsupported customization: Bluetooth scanning runs continuously and consumes extra RAM, CPU time and network capacity. SmartHomeShop recommends this only for UltimateSensor Mini v2 Ethernet Basic. It is not part of the standard firmware and is not covered as a guaranteed product feature.

Compatibility

Device or firmware Advice
UltimateSensor Mini v2 Ethernet Basic Recommended starting point
Mini v2 Ethernet Complete Not recommended without your own stability testing
Mini v2 WiFi or cloud firmware Not recommended; BLE and WiFi share radio time and the cloud build adds more load
Mini v2 Thread firmware Not supported by this guide
UltimateSensor Mini v1 Do not use as a Bluetooth Proxy; voice and audio components already place substantial demands on the device

Ethernet is preferred because it avoids WiFi and Bluetooth competing for radio time. The Basic firmware also omits the SPS30 particulate-matter component and therefore leaves more resources available.

Mini v2 uses a single-core ESP32-C6 without external PSRAM. The Bluetooth stack and continuous tracker therefore compete directly with the normal sensor, radar, API and web-server workload for the available memory and processor time.

Before You Start

You need:

  • an UltimateSensor Mini v2 running Ethernet Basic firmware;
  • Ethernet or PoE connected and working;
  • the ESPHome Device Builder app in Home Assistant;
  • a backup of the adopted device YAML;
  • physical access to the USB-C port in case an OTA update fails.

A Bluetooth Proxy cannot be enabled by a Home Assistant switch after compilation. The proxy components must be present when ESPHome builds the firmware.

Add the Bluetooth Proxy

  1. Open Home Assistant -> Settings -> Apps.
  2. Install and start ESPHome Device Builder if it is not installed.
  3. Open ESPHome Device Builder from the Home Assistant sidebar.
  4. If the Mini v2 is not managed there yet, click Adopt.
  5. Open the device menu, choose Edit, and save a copy of the existing YAML.
  6. Keep the existing substitutions: and packages: sections unchanged.
  7. Add this block at the root level, without indentation:
esp32_ble_tracker:

bluetooth_proxy:
  active: true
  connection_slots: 1

The end of your configuration should resemble this structure:

substitutions:
  # Existing device substitutions remain here.

packages:
  # Existing SmartHomeShop package import remains here.

esp32_ble_tracker:

bluetooth_proxy:
  active: true
  connection_slots: 1

Do not create a second SmartHomeShop package and do not replace the existing firmware import. The added root-level components are merged with the imported Mini v2 configuration during compilation.

Validate and Install

  1. Choose Validate in ESPHome Device Builder and resolve every error before installing.
  2. Choose Install -> Wirelessly.
  3. Wait for compilation, upload and reboot to finish.
  4. Confirm that the Mini v2 reconnects through Ethernet and that its regular sensor entities still update.
  5. Open Settings -> Devices & services in Home Assistant and check the Bluetooth integration. The ESPHome proxy should become available automatically after the ESPHome device reconnects.

Use USB-C installation if the wireless upload fails or the device no longer reconnects.

Why Only One Connection Slot?

connection_slots limits the number of simultaneous active Bluetooth connections. ESPHome documents approximately 1 KB of RAM per slot, in addition to the Bluetooth stack and tracker overhead. One slot is the conservative choice for a sensor that is already running presence radars, air-quality sensors, a web server, the ESPHome API and diagnostics.

Passive Bluetooth advertisements do not each consume a connection slot. A slot is needed when Home Assistant must actively connect to a Bluetooth device, for example to read a GATT characteristic.

Do not increase the slot count until the Mini v2 has run reliably for several days. Monitor:

  • unexpected restarts or disconnects;
  • ESPHome warnings about memory, API or Bluetooth;
  • delayed presence or air-quality updates;
  • failed active Bluetooth connections;
  • device temperature and general responsiveness.

Keep the Default Scan Settings

Start with an empty esp32_ble_tracker: block as shown above. Do not initially set aggressive scan_parameters. Faster or longer scans increase CPU and radio usage and can make a loaded device unstable.

Change scan parameters only when you understand the target Bluetooth device's advertising interval and can retest the complete Mini v2.

Troubleshooting

ESPHome validation fails

Check that esp32_ble_tracker: and bluetooth_proxy: start at the left edge of the YAML and are not nested below packages:. Also make sure each component occurs only once in the final configuration.

The Mini v2 restarts or becomes unreliable

Return to the backup YAML and remove both Bluetooth blocks. Rebuild and install the configuration again. If OTA is unavailable, flash the normal Ethernet Basic firmware through USB-C.

Home Assistant sees advertisements but cannot connect

The single active connection slot may already be occupied. Wait for the current connection to close and try again. Increasing the slot count can help, but also increases resource usage and is not the recommended default.

A Bluetooth device is not discovered

Place the Mini v2 closer to the Bluetooth device, remove sources of radio interference and first test with ESPHome's default scan settings. Some devices advertise infrequently or require active connections.

Return to Standard Firmware

To remove the proxy:

  1. remove esp32_ble_tracker: and the complete bluetooth_proxy: block from your adopted YAML;
  2. validate and install the configuration again; or
  3. flash the normal Mini v2 Ethernet Basic firmware via the SmartHomeShop web flasher.

The standard SmartHomeShop firmware remains unchanged by this guide.

Technical References