Skip to content

Fix MOK Fitness S10 Ultra resistance control (use 0xFFF2 instead of FTMS control point) - #4853

Merged
cagnulein merged 1 commit into
masterfrom
claude/pr-issue-4844-9fle3i
Jul 27, 2026
Merged

Fix MOK Fitness S10 Ultra resistance control (use 0xFFF2 instead of FTMS control point)#4853
cagnulein merged 1 commit into
masterfrom
claude/pr-issue-4844-9fle3i

Conversation

@cagnulein

@cagnulein cagnulein commented Jul 26, 2026

Copy link
Copy Markdown
Owner

Summary

  • Fixes MOK Fitness S10 Ultra resistance/power issue #4844: auto-resistance still didn't work on the MOK Fitness S10 Ultra after the earlier power-table fix (Compute power from resistance for MOK Fitness S10 Ultra bike #4845), because the bike NAKs FTMS_SET_TARGET_RESISTANCE_LEVEL sent over the standard FTMS control point (0x2AD9).
  • Per the reporter's investigation (BLE packet capture of the official MOK Fitness app + confirmation via NRF Connect, see comment), the bike expects resistance changes as a single raw write to a proprietary characteristic (0xFFF2) with the format AF 05 04 <level> AA, no handshake required.
  • ftmsbike::forceResistance() now detects MOK_FITNESS and writes that raw command directly to 0xFFF2 instead of going through the FTMS control point; the characteristic/service are discovered and cached during stateChanged() alongside the existing FTMS/Zwift Play discovery.

Test plan

  • Reporter to confirm auto-resistance now follows target resistance (e.g. incline changes in MyWhoosh) on the MOK Fitness S10 Ultra
  • No local build environment available in this session (Qt not installed); changes reviewed by hand against the existing forceResistance/service-discovery patterns used for similar non-FTMS-control-point bikes (e.g. SL010, SPORT01).

Generated by Claude Code

… of FTMS control point

The bike NAKs FTMS_SET_TARGET_RESISTANCE_LEVEL sent over the standard
FTMS control point (0x2AD9), so auto-resistance never took effect.
Its own app writes resistance changes as a single raw command
(AF 05 04 <level> AA) to a proprietary characteristic (0xFFF2)
instead, confirmed via BLE packet capture and NRF Connect testing
(reported in #4844).
@cagnulein
cagnulein merged commit 0f9684b into master Jul 27, 2026
28 of 30 checks passed
@cagnulein
cagnulein deleted the claude/pr-issue-4844-9fle3i branch July 27, 2026 11:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

MOK Fitness S10 Ultra resistance/power issue

2 participants