OpenLink Initialization
This page covers the OpenLink path for M18 and M12 tools — Phase 3 (standard tool initialization) and Phase 5 (post-initialization actions). It is entered after Phase 2 path selection identifies the tool as an OpenLink device.
Phase 3 — Standard Tool Initialization (OpenLink, M18/M12)
3a. Pre-flight checks
- The tool record must have a platform defined, or abort.
- If this is a wired (non-BLE) connection: set the communication target to the current target and confirm the tool is actually being targeted; abort if not.
- If the product is not embedded-tick-only: write the default METCO password (enable default-password access at METCO level). If this fails and no subsystem has been initialized yet in this session, abort.
- If the product is multi-subsystem and wired: enable METCO access (default password, falling back to the real METCO password), then read the subsystem ID. If that subsystem ID is already in the session's initialized list, raise a "same side already initialized" warning and abort; otherwise add it to the list.
3b. BLE module preparation (if applicable)
This runs before writing the tool's own identity. Routing depends on connectivity class:
- Internal-OneKey-only products:
- M18: if the product communicates via the 2700-series adapter only, skip BLE init. Otherwise read the BLE MAC address, open an ad-hoc Simple-type BLE connection, and run BLE module preparation with
isBleConnection = true. - MX: if connected via legacy MXMA and adapter firmware < 4.1.8.1, skip BLE init. Otherwise, for MX battery/tool: send the "BLE chip power-on" packet, send the "BLE chip select-high" packet, then wait 1000 ms. Then run BLE module preparation with
isBleConnection = false. (MX super-charger skips the power-on packets but still prepares.) - M12: run BLE module preparation with
isBleConnectionequal to the current connection's BLE state.
- M18: if the product communicates via the 2700-series adapter only, skip BLE init. Otherwise read the BLE MAC address, open an ad-hoc Simple-type BLE connection, and run BLE module preparation with
- Embedded-tick-only products: run BLE module preparation with
isBleConnection = true. - Otherwise: no BLE init needed.
See BLE Module Initialization for the full detail of what BLE module preparation does.
3c. Write the tool's identity
- Embedded-tick-only product: re-instantiate the tool as an embedded-tick device using the BLE context MPBID (the tick chip is the identity carrier; see post-init). No OpenLink MPBID/password writes here.
- Otherwise, in order:
- Write MPBID.
- Write User Password.
- Write Admin Password.
- Write Service Password.
- Write METCO Password.
- Then, for all tools: write the Born-On-Date.
- If an ownership claim key is present, write it.
- Run post-initialization actions (Phase 5, below).
- Mark base initialization complete and remove the cached provision record for this MPBID from the local cache.
Phase 5 — Post-Initialization Actions (OpenLink path)
Run after the core identity is written, by tool type. Multiple may apply.
| Tool type | Actions |
|---|---|
| Nailer | Reset the nails-fired count (cloud API, by serial number) |
| Hydraulic tool | Fetch item-instance event status (cloud). Compute cycles-until-next-service = product default − events-since-last-service. Enable METCO (real password, fallback default). Write cycles-until-next-service. Erase the internal data logger. (Both writes are best-effort; failures are logged, not fatal.) |
| Embedded tick | Write the serial number and MPBID to the tick chip |
| Power trowel | Enable METCO (real, fallback default), then write 11 parameterization values (below), then save slow non-volatile RAM |
| Multi-subsystem (subsystem count > 1) | Read the software part number; the subsystem is master if that number is even. Set the subsystem ID (master/slave). Write the PCBA part number bytes [0x10, 0xB9, 0xD0, 0x9E]. Erase data logs. |
| MX charger | Save non-volatile RAM |
| MX tool / battery / power trowel | Send the SAVE_NVRAM packet |
Power-trowel parameterization values
Written to their respective parameterization segments as 4-byte little-endian values:
| Parameter | Bytes |
|---|---|
| EOD sputtering enable | 01 00 00 00 |
| EOD sputtering percent | 14 00 00 00 |
| Minimum-speed trigger map | 1C 07 00 00 |
| Maximum-speed trigger map | FF 0F 00 00 |
| ADC minimum trigger map | 00 00 00 00 |
| ADC start-slope trigger map | 67 02 00 00 |
| ADC end-slope trigger map | CC 0C 00 00 |
| Variable-speed enable | 01 00 00 00 |
| Soft-start positive slew | CD 00 00 00 |
| Soft-start negative slew | FF 0F 00 00 |
| Motor direction | 01 00 00 00 |