Skip to content

Add MRK-S36C device quirk for resistance-level ERG control - #4827

Merged
cagnulein merged 2 commits into
masterfrom
fix/mrk-s36c-erg-resistance
Jul 21, 2026
Merged

Add MRK-S36C device quirk for resistance-level ERG control#4827
cagnulein merged 2 commits into
masterfrom
fix/mrk-s36c-erg-resistance

Conversation

@cagnulein

Copy link
Copy Markdown
Owner

Summary

  • The MRK-S36C bike is a generic FTMS device that didn't match any name-based quirk, so it kept the default ergModeSupported = true.
  • When a companion app (Rouvy, via Dircon) switches to ERG mode and sends SetTargetPower, ftmsbike's power-request routing (ftmsbike.cpp:578) only forwards the request when the connected client is non-FTMS or a power sensor is configured. For this bike neither was true, so the target power request was silently dropped, and resistance froze at its last simulation-derived value instead of tracking the workout.
  • Analysis based on a user-provided debug log: resistance updates worked fine while Rouvy sent slope/simulation packets, then froze the moment Rouvy issued an ERG SetTargetPower command.

Fix: detect MRK-S36C-* by name and set resistance_lvl_mode = true + ergModeSupported = false, consistent with other MRK bikes (MRK-S28), so target power gets converted to a resistance level via the erg table instead of being forwarded/dropped as a native ERG command.

Test plan

  • Confirm build compiles for affected platforms
  • Manually verify with an MRK-S36C bike that resistance now follows Rouvy/Zwift ERG-mode target power changes, not just slope-based simulation

cagnulein and others added 2 commits July 19, 2026 18:08
The MRK-S36C bike is a generic FTMS device with no matching quirk, so
it defaulted to ergModeSupported=true. When an app targets ERG mode
(SetTargetPower) over Dircon, ftmsbike's power routing only forwards
the request when the bike is non-FTMS or a power sensor is configured,
so the target power request was silently dropped and resistance froze
at its last value instead of following the workout.

Detect the bike by name and force resistance-level mode with
ergModeSupported=false, matching other MRK bikes, so target power is
converted to a resistance level via the erg table instead.
@cagnulein cagnulein added this to the 2.21 milestone Jul 21, 2026
@cagnulein
cagnulein merged commit 27cef81 into master Jul 21, 2026
30 checks passed
@cagnulein
cagnulein deleted the fix/mrk-s36c-erg-resistance branch July 21, 2026 13:38
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.

1 participant