Requirements
Hardware
Section titled “Hardware”- CMF Watch Pro 2 (board
JX402, Actions ATS3089C). - Firmware verified:
1.0.0.73. Other builds may differ and require a diff first. - A Bluetooth LE adapter supported by Bleak.
- The watch is disconnected from the phone/Nothing X app, so that it advertises to the host.
- For flashing: a charged watch and a host that remains awake for 10–30 minutes.
Host software
Section titled “Host software”- Python 3.12+.
- uv for the Python workspace.
- Git.
- Optional: Ghidra 12.x for static analysis, Node 20+ and pnpm for the documentation site.
- Optional: a UART adapter for investigating the physical debug shell (not required).
Windows notes:
- Bleak uses the Windows BLE stack. The watch often stays at MTU 23; that is normal and still works, only slower.
- Pairing state is stored in
tools/.watch_state.json, which is gitignored and never shared.
Externally supplied files
Section titled “Externally supplied files”The published dumps under dumps/binaries/ contain the stock firmware image for this
device and the proof-of-concept image built from it. Vendor resources, watch-face packages and
copyrighted animation frames are not published separately; they are obtained legally for the
device in use and placed locally:
firmware/JX402_V1.0.0.73.binwatchfaces/ # optional .wfdl packagesBoth paths are gitignored.
Permissions
Section titled “Permissions”- Testing the watch in use requires permission.
- Write and flash commands are limited to hardware that is owned or explicitly authorised.
- The Limitations & risks page covers the risks that apply before the first write.