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
Item | Description |
---|---|
ESP32 Board | Any ESP32, e.g., DevKitC or S3 |
ESP-IDF v5.4.1 | Installed via Espressif installer |
ESP BLE Provisioning App | Android / iOS |
USB Cable | For flashing the board |
2.4GHz Wi-Fi Network | ESP32 does not support 5GHz Wi-Fi |
- 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
- 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.
- 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.
- 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
- 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!