Writing BLE to Cycling Control Point - Adding Resistance Writing BLE to Cycling Control Point - Adding Resistance dart dart

Writing BLE to Cycling Control Point - Adding Resistance


You cannot use cycling control point(CPP) for adding resistance. CPP can only be used to copy data like wheel Revolution from old peripheral to new one or if you want to reset data on peripheral you can use cpp.

If you want to add resistance you need to check for fitness machine i am using elite and elite have Fitness Machine Control point you can write resistance and other things like inclination, elevation etc using FTCP.

Few of the vendor support fitness machine and other have given their api or source code you can use that to add resistance and other stuff like that.


I think you're using the wrong Bluetooth service for this. The Cycling Power Service is for collecting data from cycling power meters like this one: https://www.cyclist.co.uk/reviews/6705/long-term-review-fsa-powerbox-carbon-power-cranks

For your requirements, I believe you should be using the Fitness Machine Service (0x1826) which includes the Indoor Bike Data characteristic (0x2AD2) and most importantly for you, the Fitness Machine Control Point characteristic. Take a look at section 4.16.1 of the Fitness Machine Service specification and you'll see details of operations which the control point supports, including a reference to 4.16.2.5 Set Target Resistance Level Procedure. I think this is what you need.


Indoor trainers have a few services:

  1. Cycling Power Service (ANT+ or BT also have)
  2. ANT+FEC (ANT only)
  3. BTLE Fitness control (FTMS)
  4. TACX ANT+ FEC. over Bluetooth (https://blog.lazerwalker.com/2019/02/15/bike-game-part-2.html)
  5. Wahoo's Extension to the Cycling Power Service (to be able to set Target power for instance)

To Add Resistance to the trainer to #1, you need to check if it also has the #5 service as well. (this is the UUID used - A026E005-0A7D-4AB3-97FA-F1500F9FEB8B)

#4 is actually a protocol which Tacx came up w/ before FTMS was a standard and some trainers still use this.