Hi everyone, I’m Jeremy one of the engineers responsible for modernizing our connectivity stack. I hope this isn’t too technical, but provides you with insight into what/why we are updating our communication protocols.
Improvements to FTMS controllable trainers
First, what is FTMS? FTMS is essentially a language defined in the Bluetooth Specification that fitness devices can use to talk to applications like Zwift. SOME of the most popular trainers speak FTMS. As we saw more FTMS devices being used on Zwift, we prioritized modernizing our FTMS implementation to match the spec as closely as possible.
An example of a trainer that can speak FTMS is the Kickr v5, while older Kickr’s (I have a 2016) do not speak FTMS and rely on a proprietary protocol.
Some material changes to our FTMS implementation include:
- Better error handling from the protocol itself. Previously, some errors weren’t being handled correctly.
- Zwift no longer sends unnecessary grade change commands to the trainer - The legacy implementation would spam updates even when grade hadn’t changed. This had three very negative effects: 1) In rooms with excessive radio interference, the Bluetooth LE (BLE) signals would get overwhelmed, causing devices to timeout and disconnect temporarily (ever seen your watts go to zero for a few seconds then back to normal?) 2) In simulation mode (SIM) updates would “fall behind” causing lag in the experience, and 3) battery usage was increased.
- Improved trainer control and reset requests - The legacy implementation was spamming for control, now it respects the specification
- Better logging and analytics so we can troubleshoot any future issues more easily and make sure the health of the implementation doesn’t degrade again.
General BLE Improvements
Mostly bug fixes (a few crashes, undefined behaviors, and improper characteristic processing), which we keep behind server controlled settings so we can control the rollout to users and make sure our updates have a net-positive effect on the experience.
In the end, we’re Zwifters too and we want to make the experience as seamless as possible. We really appreciate your passion and feedback as we try to continually improve!
Ride On!
Thanks @shooj for letting me know about this thread!
(edit - formatting)