Please enable JavaScript to view this website.

Skip to main content

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.


3a. Pre-flight checks

  1. The tool record must have a platform defined, or abort.
  2. 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.
  3. 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.
  4. 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 isBleConnection equal to the current connection's BLE state.
  • 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:
    1. Write MPBID.
    2. Write User Password.
    3. Write Admin Password.
    4. Write Service Password.
    5. 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 typeActions
NailerReset the nails-fired count (cloud API, by serial number)
Hydraulic toolFetch 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 tickWrite the serial number and MPBID to the tick chip
Power trowelEnable 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 chargerSave non-volatile RAM
MX tool / battery / power trowelSend the SAVE_NVRAM packet

Power-trowel parameterization values

Written to their respective parameterization segments as 4-byte little-endian values:

ParameterBytes
EOD sputtering enable01 00 00 00
EOD sputtering percent14 00 00 00
Minimum-speed trigger map1C 07 00 00
Maximum-speed trigger mapFF 0F 00 00
ADC minimum trigger map00 00 00 00
ADC start-slope trigger map67 02 00 00
ADC end-slope trigger mapCC 0C 00 00
Variable-speed enable01 00 00 00
Soft-start positive slewCD 00 00 00
Soft-start negative slewFF 0F 00 00
Motor direction01 00 00 00