Quick start
Offline
Section titled “Offline”uv syncuv run fwkit info firmware/JX402_V1.0.0.73.binuv run fwkit verify firmware/JX402_V1.0.0.73.binThe inner contents of the image are unpacked for exploration:
uv run fwkit unpack firmware/JX402_V1.0.0.73.bin work/aotaBLE, read-only
Section titled “BLE, read-only”uv run python tools/cmf_watch.py scanuv run python tools/cmf_watch.py pair # once, or after a resetuv run python tools/cmf_watch.py infouv run python tools/cmf_watch.py ota-state --duration 5Watch faces
Section titled “Watch faces”uv run fwkit wf-info watchfaces/wf1.bin --treeuv run fwkit wf-res watchfaces/wf1.binuv run fwkit wf-unpack watchfaces/wf1.bin work/wf1uv run fwkit wf-set-res watchfaces/wf1.bin 0 icon.png -o work/wf1_new.binuv run python tools/cmf_watch.py wf-flash --file work/wf1_new.bin --dry-runThe --dry-run flag is removed only after the validation passes. See
Dial editing.
Firmware OTA
Section titled “Firmware OTA”This stage comes last, after the step-by-step OTA guide and the AOTA OTA flow have been reviewed. The dry run stops at the acknowledgement stage:
uv run python tools/ota_client.py --stop-after-a040 --version 0100005a -vThe run stops after the watch acknowledges 0xA040; no data is sent.