Skip to main content

Android Native Bridge

How Matter commissioning runs on Android with the in-app ChipTool flow: ChipToolCommissioningActivity for onboarding payload parsing, Wi‑Fi credentials, and BLE discovery; ChipDeviceController (Connected Home IP / CHIP) for PASE, commissioning, and NOC install; bridged to React Native via ESPMatterModule and Headless JS for RainMaker cloud APIs.

In one line: The app owns BLE scan, GATT, and Wi‑Fi network credentials; CHIP runs pairDevice over BLE; Headless JS issues the node NOC and confirms commissioning with the cloud.

Reference implementation

Paths and class names below match the Espressif RainMaker Home app (MATTER_COMMISSIONING_METHOD=ChipTool by default). Your module names may differ; keep the same responsibilities at each layer.

LayerClass / moduleRole
ChipTool UIChipToolCommissioningActivityParse QR/manual code, Wi‑Fi dialog, BLE scan/connect, progress UI
BLE transportChipToolBluetoothManager + AndroidBleManagerMatter service 0xFFF6 scan, GATT, register connection with CHIP
CHIPChipClientChipDeviceController (JNI)pairDevice (PASE + commission + network), NOC issuer, post-commission metadata
RN bridgeESPMatterModule + Headless JSFabric hand-off, events, issueNodeNoC / confirmMatterNodeCommissioning

Build-time back-end selection

ESPMatterModule.startEcosystemCommissioning routes by BuildConfig.MATTER_COMMISSIONING_METHOD (Gradle property MATTER_COMMISSIONING_METHOD, default ChipTool):

ValueNative entryWhen to use
ChipToolChipToolCommissioningActivityDefault — works without Google Play services Matter APIs
GooglePlayServicesMatterCommissioningActivity + ESPMatterCommissioningServiceLegacy path using GPS Home system UI (not documented in phases 3–4 below)

Phases (0–8)

Follow these in order. Phases 3–4 describe the ChipTool path.

PhaseDocSummary
0Screen boot and event listenerRegister listener, start fabric prep
1Fabric bootstrapConvert home, issue user NOC
2Hand off to nativestartEcosystemCommissioning → ChipTool activity
3ChipTool commissioning UIPayload parse, Wi‑Fi credentials, permissions
4BLE scan, GATT, and PASEChipToolBluetoothManager + awaitPairDeviceOverBle
5Device node NOCHeadless JS + cloud node cert
6Device commissioned + metadataRM metadata, ACL, trigger cloud confirm
7Cloud confirmHeadless JS confirm with cloud
8UI successTerminal HEADLESS_JS success → toast, sync, home

Start at Phase 0.

For shared terms (PASE, NOC, terminal vs intermediate events), see Native Bridge.


On this page