KICKR GATT Profile - StephenDone/kickr_bluetooth GitHub Wiki

Bluetooth standard UUIDs are all based around the Bluetooth Base UUID of xxxxxxxx-0000-1000-8000-00805F9B34FB.

In a similar way, the Wahoo UUIDs that I have seen so far have a base of a026xxxx-0a7d-4ab3-97fa-f1500f9feb8b. This is anecdotal, but holds true for me so far.

BLE Advertisement

Very sensibly, the KICKR Bike advertises its most important services.

Found KICKR with name "KICKR BIKE xxxx", advertising...
  00001818-0000-1000-8000-00805f9b34fb  Cycling Power
  00001826-0000-1000-8000-00805f9b34fb  Fitness Machine
  a026ee0d-0a7d-4ab3-97fa-f1500f9feb8b  ### KICKR Virtual Bike

BLE Services

Note that in the table below, the names I have come up with for the Wahoo services are my own, since they are not documented, to my knowledge.

Full Service UUID Short UUID Description Notes
0000180a-0000-1000-8000-00805f9b34fb Bluetooth 0x180A Device Information Service Manufacturer, firmware revision, hardware revision & serial number
0000181c-0000-1000-8000-00805f9b34fb Bluetooth 0x181C User Data Service Just Rider Weight
00001826-0000-1000-8000-00805f9b34fb Bluetooth 0x1826 Fitness Machine Service Training status, FTMS feature, FTMS control point, FTMS status, indoor bike data, supported power range.
00001818-0000-1000-8000-00805f9b34fb Bluetooth 0x1818 Cycling Power Service Cycling power feature, sensor location, cycling power measurement, cycling power control point. Also includes an additional, non-standard characteristic
a026ee0b-0a7d-4ab3-97fa-f1500f9feb8b Wahoo 0xEE0B Tilt Service Physical Tilt of Bike
a026ee01-0a7d-4ab3-97fa-f1500f9feb8b Wahoo 0xEE01 Possibly Firmware Update Service Best left alone
a026ee0d-0a7d-4ab3-97fa-f1500f9feb8b Wahoo 0xEE0D KICKR Virtual Bike Service Shifter buttons, groupset configuration and chosen gear.

BLE Service Dump using Python Script

This is a little more raw than the information above, but shows the handles too. I guess these may change with firmware updates though...

Handle    UUID                                  Characteristic Properties                     Description - '###' Indicates My Own Naming
10        00001801-0000-1000-8000-00805f9b34fb                                                Generic Attribute Profile
   11     00002a05-0000-1000-8000-00805f9b34fb  ['indicate']                                  Service Changed

14        0000180a-0000-1000-8000-00805f9b34fb                                                Device Information
   17     00002a25-0000-1000-8000-00805f9b34fb  ['read']                                      Serial Number String
   21     00002a26-0000-1000-8000-00805f9b34fb  ['read']                                      Firmware Revision String
   15     00002a29-0000-1000-8000-00805f9b34fb  ['read']                                      Manufacturer Name String
   19     00002a27-0000-1000-8000-00805f9b34fb  ['read']                                      Hardware Revision String

23        a026ee01-0a7d-4ab3-97fa-f1500f9feb8b                                                Unknown
   24     a026e002-0a7d-4ab3-97fa-f1500f9feb8b  ['write-without-response', 'notify']          Unknown
   27     a026e004-0a7d-4ab3-97fa-f1500f9feb8b  ['notify']                                    Unknown
   30     a026e03b-0a7d-4ab3-97fa-f1500f9feb8b  ['write-without-response', 'notify']          Unknown

33        00001818-0000-1000-8000-00805f9b34fb                                                Cycling Power
   44     00002a66-0000-1000-8000-00805f9b34fb  ['write', 'indicate']                         Cycling Power Control Point
   34     00002a63-0000-1000-8000-00805f9b34fb  ['notify']                                    Cycling Power Measurement
   41     a026e005-0a7d-4ab3-97fa-f1500f9feb8b  ['write', 'indicate']                         ### KICKR Cycling Power Extension
   37     00002a65-0000-1000-8000-00805f9b34fb  ['read']                                      Cycling Power Feature
   39     00002a5d-0000-1000-8000-00805f9b34fb  ['read']                                      Sensor Location

47        00001826-0000-1000-8000-00805f9b34fb                                                Fitness Machine
   48     00002acc-0000-1000-8000-00805f9b34fb  ['read']                                      Fitness Machine Feature
   50     00002ad3-0000-1000-8000-00805f9b34fb  ['read', 'notify']                            Training Status
   59     00002ad2-0000-1000-8000-00805f9b34fb  ['notify']                                    Indoor Bike Data
   62     00002ad8-0000-1000-8000-00805f9b34fb  ['read']                                      Supported Power Range
   56     00002ada-0000-1000-8000-00805f9b34fb  ['notify']                                    Fitness Machine Status
   53     00002ad9-0000-1000-8000-00805f9b34fb  ['write', 'indicate']                         Fitness Machine Control Point

64        0000181c-0000-1000-8000-00805f9b34fb                                                User Data
   65     00002a98-0000-1000-8000-00805f9b34fb  ['read', 'write']                             Weight

67        a026ee0d-0a7d-4ab3-97fa-f1500f9feb8b                                                ### KICKR Virtual Bike
   74     a026e03c-0a7d-4ab3-97fa-f1500f9feb8b  ['notify']                                    ### KICKR Buttons
   68     a026e039-0a7d-4ab3-97fa-f1500f9feb8b  ['write-without-response', 'notify']          ### KICKR Groupset
   71     a026e03a-0a7d-4ab3-97fa-f1500f9feb8b  ['notify']                                    ### KICKR Chosen Gear

77        a026ee0b-0a7d-4ab3-97fa-f1500f9feb8b                                                ### KICKR Tilt Service
   78     a026e037-0a7d-4ab3-97fa-f1500f9feb8b  ['read', 'write-without-response', 'notify']  ### KICKR Tilt Characteristic