Improv via BLE

The esp32_improv component in ESPHome implements the open Improv standard for configuring Wi-Fi on an ESP32 device by using Bluetooth Low Energy (BLE) to receive the credentials.

The esp32_improv component will automatically set up the BLE Server.


The BLE software stack on the ESP32 consumes a significant amount of RAM on the device.

Crashes are likely to occur if you include too many additional components in your device’s configuration. Memory-intensive components such as Voice Assistant and other audio components are most likely to cause issues.

# Example configuration entry
  # ...

  authorizer: binary_sensor_id

Configuration variables:

  • authorizer (Required, ID): A binary sensor to authorize with. Also accepts none/false to skip authorization.

  • authorized_duration (Optional, Time): The amount of time until authorization times out and needs to be re-authorized. Defaults to 1min.

  • status_indicator (Optional, ID): An output to display feedback to the user.

  • identify_duration (Optional, Time): The amount of time to identify for. Defaults to 10s.

  • wifi_timeout (Optional, Time): The amount of time to wait before starting the improv service after Wi-Fi is no longer connected. Defaults to 1min.

Status Indicator

The status_indicator has the following patterns:

  • solid: The improv service is active and waiting to be authorized.

  • blinking once per second: The improv service is awaiting credentials.

  • blinking 3 times per second with a break in between: The identify command has been used by the client.

  • blinking 5 times per second: Credentials are being verified and saved to the device.

  • off: The improv service is not running.

See Also