Problem:
My preferred Zwift setup has my computer running Zwift connected to my Wahoo Kickr via Bluetooth through the Zwift Companion on my Android phone. Sometime around mid February (for me), this setup stopped working, and I fell back to using the Zwift app directly on my phone.
The bug presents as follows:
- I get everything started up, Zwift on my computer connects to the Companion app, and I get to the Paired Devices screen
- The “Power Source” and “Controllable” connections appear to be made, but the “Cadence” sensor is never found
- On the companion app, the Game screen is showing, and notably the bluetooth icon in the upper right cycles several times between orange (no connections), blue (connection made), and blue with an orange exclamation triangle badge on the bottom right of the icon (connection lost). After 4-5 seconds of this cycling behavior, it stays orange.
- On my computer, it indicates that the power source and controllable are still connected, which is not the case. Trying to start a Zwift session sometimes will end up allowing data to move through, but within 20-60 seconds it will disconnect.
I finally got annoyed and tracked it down to a firmware update that Wahoo released, Kickr v5 Firmware v4.2.1, released on 27 January 2021. I extracted the bluetooth HCI snoop log from my phone, and looked at what was going on.
It looks like the packets coming from the Kickr specifically when requesting data from the Cycling Power Feature are malformed (see screenshot from Wireshark, since I can’t actually post my btsnoop log here). Every time one of these packets came through, handshake started over from scratch, and after an inconsistent number of repetitions, the handshake requests stopped.
I’m not an expert in the Bluetooth protocol, nor in FTMS, so all I really could do was compare against what I was seeing for the regular Zwift on android app, and those Cycling Power Feature responses are well-formed when it’s the Zwift app requesting. So this very well might be an issue with the Kickr’s firmware, but since I am only seeing it with the Companion app I figured it made more sense to contact Zwift about it.
For any other users reading this, there is a workaround:
- Open up your Wahoo app, and let it connect to your Kickr
- Click the blue button into your linked sensor
- In the upper left, there is a little icon with the name of your kickr next to it. Tap on that 10 times in a row
- Click “Firmware Upgrade”
- Scroll to “older releases” and install v.4.1.2, which is the version prior to the FTMS switch.
Please let me know if there is somewhere I could send the bluetooth snoop log if it’d help!
Thanks!
–Owen