Long post, so short summary first: I’ve been trying use a Bluetooth-based heartrate monitor (HRM) with Zwift but unable to get it to be reliable. With some experiments, I believe I’ve identified a fundamental issue with Zwift failing to reconnect to Bluetooth HRMs which makes them much less reliable than when connecting with ANT+.
Can someone at Zwift HQ confirm whether this is a known issue/limitation in the current code? It seems to me that reliability of BT-based connections would improve significantly if this was fixed.
Long story and details of experiments below.
I use a Kickr Bike so I have to pair with BT to get all features like steering. I wanted to eliminate ANT+ from my setup to reduce 2.4GHz interference and mis-pairing (Zwift likes to bind to the bike’s ANT+ instead of BT by default).
Pairing with the bike’s power meter, cadence sensor and controllable trainer all works great. Never any dropouts or issues. However, I’ve not been able to get a stable BT connection with my heartrate monitor.
The symptom is that it pairs fine initially and shows my HR correctly. If the signal drops out for any reason (e.g. I walk out of range to fill a water bottle) it never actually reconnects and the pairing UX alternates between showing stale HR data and “No Signal” every few seconds.
I have tried three different BT HRMs: Garmin HRM-Dual, HRM-Pro and Wahoo Tickr X. All with latest firmware. My PC is a desktop gaming PC with a TP-Link Archer TX50E PCI-Express card with an Intel AX200 chip and latest Intel BT drivers. The PC has recently been upgraded to Windows 11 (same problem was present with Windows 10). I have also tested with an ASUS USB-BT500 BT USB adapter.
ANT+ works fine. I can move out of range and when I get back in range it reconnects and continues to show HR just fine. The problem only happens with BT. The problem occurs even when I don’t have any other devices paired to the HRM.
I made a test using two other devices at my disposal, a Garmin Edge 1030 Plus cycling computer and a Garmin Fenix 6 watch. The watch has a wrist HR sensor and a neat function to broadcast HR to both ANT+ and BT receivers. When a BT device is paired, it shows the name of the paired device on the watch screen, effectively allowing me to monitor the health of the connection in real-time.
Here’s what I observe with different device connections:
Zwift on PC paired with watch: the initial pairing is successful and the name of the PC is displayed on the watch. If I move out of range, the name on the watch screen is cleared and Zwift displays “No Signal” on the pairing screen. Moving back into range, the watch screen stays blank (no connection) and Zwift cycles between showing stale HR data and “No Signal”.
Edge 1030 Plus paired with watch: the initial pairing is successful and “(BLE)Edge 1030 Plus” is displayed on the watch. If I move out of range, the name on the watch screen is cleared and Edge stops showing HR. Moving back into range, the Edge displays “Heart Rate Sensor Found”, “(BLE)Edge 1030 Plus” is again displayed on the watch and HR display on Edge resumes (as expected).
My conclusion is that Zwift fails to implement BT HRM reconnection correctly and is therefore very vulnerable to one short dropout causing HRM connection to fail completely.