Provision ESP32 Wi-Fi via BLE

Provisioning Wi-Fi credentials to an ESP32 can be tricky without a screen or keyboard. Thankfully, Espressif provides a simple way to do it via Bluetooth using the ESP BLE Provisioning App. In this guide, you’ll learn how to use the built-in BLE provisioning example from ESP-IDF v5.4.1, with zero configuration or code changes.


What You’ll Need

ItemDescription
ESP32 BoardAny ESP32, e.g., DevKitC or S3
ESP-IDF v5.4.1Installed via Espressif installer
ESP BLE Provisioning AppAndroid / iOS
USB CableFor flashing the board
2.4GHz Wi-Fi NetworkESP32 does not support 5GHz Wi-Fi

  1. Open the ESP-IDF Terminal
  • Press Start on Windows
  • Search and open ESP-IDF Command Prompt (v5.4.1)
  • The terminal will auto-load your development environment

  1. Copy the Provisioning Example to Your Workspace

In the terminal, run:

cd %USERPROFILE%
mkdir esp
cd esp
xcopy /E /I /Y ^
  "C:\Espressif\frameworks\esp-idf-v5.4.1\examples\provisioning\wifi_prov_mgr" ^
  "wifi_prov_mgr"
cd wifi_prov_mgr

This copies the default BLE Wi-Fi provisioning project to your own folder.


  1. Build and Flash the Project

Now build and flash the example, no config required:

idf.py set-target esp32
idf.py build
idf.py flash monitor

Once flashed, the ESP32 will start advertising a BLE device named like:

PROV_XXXX

You’ll see this in the terminal output.


  1. Step 4: Provision Wi-Fi Using Your Phone
  • Open the ESP BLE Provisioning App
  • Tap “Provision New Device”
  • On the QR scanner screen, tap “I don’t have a QR code”
  • Select your device (e.g., PROV_045EC8)
  • When prompted, enter the default Proof-of-Possession:
abcd1234
  • Choose your Wi-Fi network or enter it manually
  • Enter your Wi-Fi password and tap Provision

  1. Confirm the Wi-Fi Connection

Check the terminal output for:

I (...) wifi: connected
I (...) got ip: 192.168.x.x
I (...) app_prov: Provisioning successful

Your ESP32 is now connected to your Wi-Fi network!

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top