ESP-IDF 6 Provisioning Migration: Dependencies, API Renames and App Compatibility

An ESP-IDF provisioning migration is complete when the intended phone apps can configure the migrated product and recover from supported failures. A successful compiler run is an intermediate gate. Dependencies, manager lifecycle, security support and installed-app compatibility all belong in the change record.

Version boundary: this checklist uses the fixed ESP-IDF v6.0 migration guide and a v5.5 reference baseline. Select the exact releases for your product separately. No project was compiled or run on hardware for this article; templates below are illustrative, and acceptance results must be supplied by the project.

Freeze Both Sides of the Migration

Archive a known working baseline before changing dependencies. Include the exact IDF tag or commit, chip target, toolchain, application revision, partition table, sdkconfig, sdkconfig.defaults, component manifests and dependency lock file. Capture the mobile app build and provisioning library revision as well. “IDF 5” and “latest app” are not reproducible identifiers.

Keep a baseline provisioning log with secrets removed, plus one supported failure-and-retry sequence. Record which security scheme the application actually selects and whether the phone requires additional onboarding material. The source configuration and the generated build configuration may differ; retain both so that an inherited option is not mistaken for a changed SDK default.

Make Provisioning an Explicit Dependency

The v6.0 migration guide moves wifi_provisioning out of the IDF tree and identifies its successor as network_provisioning. Declare the external dependency in the component manifest instead of relying on the former bundled component.

This YAML is an illustrative manifest template, not a buildable tested project. Replace the placeholder with the release validated against your selected IDF and target; then retain the resolved dependency lock.

# main/idf_component.yml — illustrative template
dependencies:
  espressif/network_provisioning:
    version: "<validated exact release>"

The guide’s version range is a starting example, not evidence that every permitted resolution passed your product tests. Inspect the chosen release’s dependencies in the versioned component registry; the linked 1.3.1 entry is a documentation reference, not a hardware-qualified recommendation. Review changes before accepting a new lock resolution.

If you first introduce the external component while still on 5.x, exclude the legacy wifi_provisioning component as directed by the migration guide. Keep that staged transition as its own commit, so failures introduced by component replacement can be separated from failures introduced by the IDF upgrade.

Audit API Names and Lifecycle Calls

Most provisioning API prefixes change from wifi_prov to network_prov, but several manager calls also add “wifi.” Use the following suffix mapping together with the old wifi_prov_mgr_ and new network_prov_mgr_ prefixes. Verify declarations in the exact resolved component headers.

Manager suffix changes called out by the v6.0 guide
Old suffix New suffix Path to review
is_provisioned is_wifi_provisioned Boot decision
configure_sta configure_wifi_sta Credential application
reset_provisioning reset_wifi_provisioning Stored-state reset
reset_sm_state_on_failure reset_wifi_sm_state_on_failure Failed-attempt recovery
reset_sm_state_for_reprovision reset_wifi_sm_state_for_reprovision Controlled re-entry

Search headers, callback types, events, build requirements and configuration options as well as function calls. Walk initialization, first setup, cancellation, failure, successful completion, deinitialization, and another setup attempt. For each path document who owns the manager and who can release transport resources. A rename that builds can still leave an old cleanup assumption in place.

Review Security Configuration with the App

The v6.0 migration guide states that support for protocomm Security 0 and Security 1 now defaults to disabled. This affects what the build supports; it does not automatically rewrite the application’s requested security scheme or upgrade an installed phone library.

Check the effective values of CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0 and CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1 in the generated sdkconfig. An older configuration can retain explicit values. The fixed-version protocomm API page contains an older-looking default description that differs from the migration guide; resolve the actual project through its generated configuration and selected SDK source rather than copying that paragraph.

Protocomm documents Security 0 as lacking encryption and authentication and recommends Security 2 for production. If moving to Security 2, validate both phone-library support and the device-specific onboarding-material process. If maintaining Security 1 for a justified compatibility period, make the exception explicit and test its authentication behavior. Turning security off is not a production fix for handshake failures.

Verify More Than a Successful Build

Migration verification gates from locked dependencies to clean build, secure handshake, recovery and release evidence
Original migration gate model. Passing one gate does not imply the following gate passed.

First build a small branch containing only the migration changes, in a clean build directory. Save dependency resolution, compiler and link output, the binary identifier and configuration diff. Then test discovery and secure-session establishment before attempting credentials. Classify failures as dependency resolution, compilation/linking, transport discovery, security negotiation, or Wi-Fi configuration.

After the first successful setup, test cancellation and re-entry, incorrect credentials, manager shutdown, and the intended resource-release policy. Compare heap and task behavior under the same workload as the baseline; define acceptable margins before measuring. A logging change should not expose onboarding secrets merely to make handshake troubleshooting easier.

Test App and Firmware Version Combinations

Minimum version-crossing matrix
Combination Required result
Supported older app + migrated firmware Completes the declared security and setup flow, or shows the explicitly approved upgrade requirement.
New app + supported older firmware Selects the supported protocol without silently weakening policy.
New app + migrated firmware Completes initial setup, failure recovery and authorized re-entry.
Unsupported combination Explains the next action before accepting a misleading success state.

Use the real distribution builds and the phone/OS combinations the product supports. Exercise SoftAP and BLE only if the product actually ships them. Reuse the fault cases in provisioning recovery, retaining old credentials where that is part of the upgrade path. Installing a fresh app for every test can conceal an installed-base problem.

Define Migration Release and Recovery Evidence

The release record should link the baseline and candidate binaries, dependency lock, API/configuration diff, phone matrix, failed cases, corrective commits, and final rerun results. Require every claimed supported combination to have a pass record or a specifically accepted limitation. Leave unmeasured recovery times and resource figures empty rather than filling them with expected values.

Keep source rollback separate from device rollback. Reverting a branch does not demonstrate that deployed hardware can accept an older image or interpret already-migrated persistent state. Device recovery must respect the product’s bootloader, security version and update policy. If rollback is unavailable, document the forward-repair or service procedure before release.

For migration scoping, provide your current project versions, target chip, component list and phone-library/security choices to Obeita’s firmware diagnostics team. Those inputs establish a reviewable regression scope.

Similar Posts