CSC Measurement (0x2A5B): byte layout
GATT characteristic · org.bluetooth.characteristic.csc_measurement · read from the Bluetooth SIG’s repository on 2026-10-17 · commit 408f4a0 (2026-10-14)
CSC Measurement is Bluetooth GATT characteristic 0x2A5B, org.bluetooth.characteristic.csc_measurement in the Bluetooth SIG's assigned numbers. The SIG's GATT Specification Supplement file lays its value out as 3 fields: Flags, Wheel Revolution Data and Crank Revolution Data. The first, Flags, is a boolean[8]; 2 of the others are present only when a bit of it is set as the field's text states, so after the first of those, a field's offset depends on which bits are set.
- UUID
- 0x2A5B
- Identifier
org.bluetooth.characteristic.csc_measurement- The SIG’s description
- The CSC Measurement characteristic is used to represent data related to a cycling speed and cadence (CSC) sensor.The structure of this characteristic is defined below.
- Service the SIG’s files tie it to
- None: no file in the repository lists this characteristic under a service.
- Source file
- gss/org.bluetooth.characteristic.csc_measurement.yaml
Byte layout: 3 fields
In the order the SIG’s structure lists them. Type and size are as published; sizes count octets except where a struct is marked as sized in bits. The offset is printed only where every earlier field has a fixed size; where an earlier field can be absent or vary, the cell names what it depends on. “Present when” is read from the field’s own “Present if” line, shown in full in the field notes below.
| Offset | Field | Type | Size | Present when | Unit |
|---|---|---|---|---|---|
| 0 | Flags | boolean[8] | 1 | Always (fixed size) | — |
| 1 | Wheel Revolution Data | struct | 0 or 6 | Bit 0 of Flags is 1 | — |
| +0 | ↳ Cumulative Wheel Revolutions | uint32 | 4 | Always (fixed size) | not an id in units.yamlorg.bluetooth.unitless |
| +4 | ↳ Last Wheel Event Time | uint16 | 2 | Always (fixed size) | time (second)org.bluetooth.unit.time.second |
| Depends on Flags (bit 0) | Crank Revolution Data | struct | 0 or 4 | Bit 1 of Flags is 1 | — |
| +0 | ↳ Cumulative Crank Revolutions | uint16 | 2 | Always (fixed size) | not an id in units.yamlorg.bluetooth.unitless |
| +2 | ↳ Last Crank Event Time | uint16 | 2 | Always (fixed size) | time (second)org.bluetooth.unit.time.second |
Field notes
Each field’s text in the SIG’s file, line by line.
- Flags boolean[8] · 1
- See Flags
- Wheel Revolution Data struct · 0 or 6
- See Wheel Revolution DataPresent if bit 0 of Flags field is set to 1
- Crank Revolution Data struct · 0 or 4
- See Crank Revolution DataPresent if bit 1 of Flags field is set to 1
Flags and value tables
The definitions the SIG’s file gives for its fields, every row as published. On a flags table the last column lists the fields whose “Present if” line names that bit.
Flags
The bits of this field are defined below.
| Bit | Description | Fields its condition names |
|---|---|---|
| 0 | Wheel Revolution Data Present | Wheel Revolution Data when 1 |
| 1 | Crank Revolution Data Present | Crank Revolution Data when 1 |
| 2–7 | Reserved for Future Use | — |
Wheel Revolution Data
The structure of this field is defined below.
| Field | Data type | Size | Description |
|---|---|---|---|
| Cumulative Wheel Revolutions | uint32 | 4 | Unit: org.bluetooth.unitless |
| Last Wheel Event Time | uint16 | 2 | Base Unit: org.bluetooth.unit.time.secondRepresented values: M = 1, d = 0, b = -10Unit is 1/1024th of a second |
Crank Revolution Data
The structure of this field is defined below.
| Field | Data type | Size | Description |
|---|---|---|---|
| Cumulative Crank Revolutions | uint16 | 2 | Unit: org.bluetooth.unitless |
| Last Crank Event Time | uint16 | 2 | Base Unit: org.bluetooth.unit.time.secondRepresented values: M = 1, d = 0, b = -10Unit is 1/1024 second |
Guides on this site
The metric CSC Measurement carries, on every platform this site covers — each type quoted in its platform's own words:
The connected-device guides that name 0x2A5B:
Questions
- What is the UUID of the CSC Measurement characteristic?
- 0x2A5B. The Bluetooth SIG's characteristic_uuids.yaml lists CSC Measurement as 0x2A5B with the identifier org.bluetooth.characteristic.csc_measurement. No file in the SIG's repository ties it to a service: the repository lists service and characteristic UUIDs separately.
- Which CSC Measurement fields are optional?
- 2 of its 3 fields have a published size that can be zero: Wheel Revolution Data (0 or 6; Present if bit 0 of Flags field is set to 1); Crank Revolution Data (0 or 4; Present if bit 1 of Flags field is set to 1). Flags (1) has a fixed size.
- What do the bits of the CSC Measurement Flags field mean?
- The SIG defines them as: bit 0, Wheel Revolution Data Present (Wheel Revolution Data when 1); bit 1, Crank Revolution Data Present (Crank Revolution Data when 1). The remaining bits are reserved for future use.
Source
Read on 2026-10-17 from gss/org.bluetooth.characteristic.csc_measurement.yaml and assigned_numbers/uuids/characteristic_uuids.yaml in the Bluetooth SIG’s public repository (branch main, commit 408f4a0, committed 2026-10-14), by scripts/fetch-bluetooth-gatt.mjs. The file’s notice says it is proprietary to Bluetooth SIG, that furnishing it grants no licence, and that it is subject to change without notice; it is © Bluetooth SIG, Inc., and its text is quoted here for identification. Generated by AIFitnessAPI, which is not affiliated with Bluetooth SIG; the SIG’s file remains the authority. The full notice and the conventions used on these pages are on the reference hub.