Skip to content
AF

Treadmill Data (0x2ACD): byte layout

GATT characteristic · org.bluetooth.characteristic.treadmill_data · read from the Bluetooth SIG’s repository on 2026-10-17 · commit 408f4a0 (2026-10-14)

Treadmill Data is Bluetooth GATT characteristic 0x2ACD, org.bluetooth.characteristic.treadmill_data in the Bluetooth SIG's assigned numbers. The SIG's GATT Specification Supplement file lays its value out as 19 fields: Flags, Instantaneous Speed, Average Speed, Total Distance, Inclination and 14 more. The first, Flags, is a boolean[16]; 18 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
0x2ACD
Identifier
org.bluetooth.characteristic.treadmill_data
The SIG’s description
The Treadmill Data characteristic is used to represent data related to a treadmill.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.treadmill_data.yaml

Byte layout: 19 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.

OffsetFieldTypeSizePresent whenUnit
0Flagsboolean[16]2Always (fixed size)—
2Instantaneous Speeduint160 or 2Bit 0 of Flags is 0velocity (kilometre per hour)org.bluetooth.unit.velocity.kilometre_per_hour
Depends on Flags (bit 0)Average Speeduint160 or 2Bit 1 of Flags is 1velocity (kilometre per hour)org.bluetooth.unit.velocity.kilometre_per_hour
Depends on Flags (bits 0 and 1)Total Distanceuint240 or 3Bit 2 of Flags is 1length (metre)org.bluetooth.unit.length.metre
Depends on Flags (bits 0, 1 and 2)Inclinationsint160 or 2Bit 3 of Flags is 1percentageorg.bluetooth.unit.percentage
Depends on Flags (bits 0, 1, 2 and 3)Ramp Angle Settingsint160 or 2Bit 3 of Flags is 1plane angle (degree)org.bluetooth.unit.plane_angle.degree
Depends on Flags (bits 0, 1, 2 and 3)Positive Elevation Gainuint160 or 2Bit 4 of Flags is 1length (metre)org.bluetooth.unit.length.metre
Depends on Flags (bits 0, 1, 2, 3 and 4)Negative Elevation Gainuint160 or 2Bit 4 of Flags is 1length (metre)org.bluetooth.unit.length.metre
Depends on Flags (bits 0, 1, 2, 3 and 4)Instantaneous Pace (Time per 500 meters)uint160 or 2Bit 5 of Flags is 1time (second)org.bluetooth.unit.time.second
Depends on Flags (bits 0, 1, 2, 3, 4 and 5)Average Pace (Time per 500 meters)uint160 or 2Bit 6 of Flags is 1time (second)org.bluetooth.unit.time.second
Depends on Flags (bits 0, 1, 2, 3, 4, 5 and 6)Total Energyuint160 or 2Bit 7 of Flags is 1energy (kilogram calorie)org.bluetooth.unit.energy.kilogram_calorie
Depends on Flags (bits 0, 1, 2, 3, 4, 5, 6 and 7)Energy Per Houruint160 or 2Bit 7 of Flags is 1energy (kilogram calorie)org.bluetooth.unit.energy.kilogram_calorie
Depends on Flags (bits 0, 1, 2, 3, 4, 5, 6 and 7)Energy Per Minuteuint80 or 1Bit 7 of Flags is 1energy (kilogram calorie)org.bluetooth.unit.energy.kilogram_calorie
Depends on Flags (bits 0, 1, 2, 3, 4, 5, 6 and 7)Heart Rateuint80 or 1Bit 8 of Flags is 1period (beats per minute)org.bluetooth.unit.period.beats_per_minute
Depends on Flags (bits 0, 1, 2, 3, 4, 5, 6, 7 and 8)Metabolic Equivalentuint80 or 1Bit 9 of Flags is 1metabolic equivalentorg.bluetooth.unit.metabolic_equivalent
Depends on Flags (bits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9)Elapsed Timeuint160 or 2Bit 10 of Flags is 1time (second)org.bluetooth.unit.time.second
Depends on Flags (bits 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 and 10)Remaining Timeuint160 or 2Bit 11 of Flags is 1time (second)org.bluetooth.unit.time.second
Depends on Flags (bits 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 and 11)Force On Beltsint160 or 2Bit 12 of Flags is 1force (newton)org.bluetooth.unit.force.newton
Depends on Flags (bits 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 and 12)Power Outputsint160 or 2Bit 12 of Flags is 1power (watt)org.bluetooth.unit.power.watt

Field notes

Each field’s text in the SIG’s file, line by line.

Flags boolean[16] · 2
See Flags
Instantaneous Speed uint16 · 0 or 2
Base Unit: org.bluetooth.unit.velocity.kilometre_per_hourRepresented values: M = 1, d = -2, b = 0Unit is 1/100 of a kilometer per hourThe Instantaneous Speed field represents the instantaneous speed of the belt of the treadmill.Present if bit 0 of Flags field is set to 0
Average Speed uint16 · 0 or 2
Base Unit: org.bluetooth.unit.velocity.kilometre_per_hourRepresented values: M = 1, d = -2, b = 0Unit is 1/100 of a kilometer per hourThe Average Speed field represents the average speed since the beginning of the training session.Present if bit 1 of Flags field is set to 1
Total Distance uint24 · 0 or 3
Unit: org.bluetooth.unit.length.metreThe Total Distance field represents the total distance reported by the Server since the beginning of the training session.Present if bit 2 of Flags field is set to 1
Inclination sint16 · 0 or 2
Base Unit: org.bluetooth.unit.percentageRepresented values: M = 1, d = -1, b = 0Unit is 1/10 of a percentThe Inclination field represents the current inclination of the Server. A positive value means that the user feels as if they are going uphill and a negative value means that the user feels as if they are going downhill.Present if bit 3 of Flags field is set to 1
Ramp Angle Setting sint16 · 0 or 2
Base Unit: org.bluetooth.unit.plane_angle.degreeRepresented values: M = 1, d = -1, b = 0Unit is 1/10 of a degreeThe Ramp Angle Setting field represents the current setting of the ramp angle of the Server.Present if bit 3 of Flags field is set to 1
Positive Elevation Gain uint16 · 0 or 2
Base Unit: org.bluetooth.unit.length.metreRepresented values: M = 1, d = -1, b = 0Unit is 1/10 of a meterThe Positive Elevation Gain field represents the positive elevation gain since the training session has started.Present if bit 4 of Flags field is set to 1
Negative Elevation Gain uint16 · 0 or 2
Base Unit: org.bluetooth.unit.length.metreRepresented values: M = 1, d = -1, b = 0Unit is 1/10 of a meterThe Negative Elevation Gain field represents the negative elevation gain since the training session has started.Present if bit 4 of Flags field is set to 1
Instantaneous Pace (Time per 500 meters) uint16 · 0 or 2
Unit: org.bluetooth.unit.time.secondThe Instantaneous Pace field represents the instantaneous pace of a user while exercising. This value is directly related to the instantaneous speed of the treadmill but is presented with different units.Present if bit 5 of Flags field is set to 1
Average Pace (Time per 500 meters) uint16 · 0 or 2
Unit: org.bluetooth.unit.time.secondThe Average Pace field represents the average pace of a user since the beginning of the training session. This value is directly related to the average speed of the treadmill but is presented with different units.Present if bit 6 of Flags field is set to 1
Total Energy uint16 · 0 or 2
Unit: org.bluetooth.unit.energy.kilogram_calorieThe Total Energy field represents the total expended energy of a user since the training session has started.Present if bit 7 of Flags field is set to 1
Energy Per Hour uint16 · 0 or 2
Unit: org.bluetooth.unit.energy.kilogram_calorieThe Energy per Hour field represents the average expended energy of a user during a period of one hour.Present if bit 7 of Flags field is set to 1
Energy Per Minute uint8 · 0 or 1
Unit: org.bluetooth.unit.energy.kilogram_calorieThe Energy per Minute field represents the average expended energy of a user during a period of one minute.Present if bit 7 of Flags field is set to 1
Heart Rate uint8 · 0 or 1
Unit: org.bluetooth.unit.period.beats_per_minuteThe Heart Rate field represents the current heart rate value of the user (e.g., measured via the contact heart rate or any other means).Present if bit 8 of Flags field is set to 1
Metabolic Equivalent uint8 · 0 or 1
Unit: org.bluetooth.unit.metabolic_equivalentThe Metabolic Equivalent field represents the metabolic equivalent of the user.Present if bit 9 of Flags field is set to 1
Elapsed Time uint16 · 0 or 2
Unit: org.bluetooth.unit.time.secondThe Elapsed Time field represents the elapsed time of a training session since the training session has started.Present if bit 10 of Flags field is set to 1
Remaining Time uint16 · 0 or 2
Unit: org.bluetooth.unit.time.secondThe Remaining Time field represents the remaining time of a training session that has been selected.Present if bit 11 of Flags field is set to 1
Force On Belt sint16 · 0 or 2
Unit: org.bluetooth.unit.force.newtonThe Force on Belt field represents the force being applied to the treadmill belt by the user’s steps. A positive value means that the user is accelerating the belt and a negative value means that the user is slowing down the beltPresent if bit 12 of Flags field is set to 1
Power Output sint16 · 0 or 2
Unit: org.bluetooth.unit.power.wattThe Power Output field represents the power being applied to the treadmill by the user’s steps. A positive value means that the user is accelerating the belt and a negative value means that the user is slowing down the belt.Present if bit 12 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.

BitDescriptionFields its condition names
0More DataInstantaneous Speed when 0
1Average Speed presentAverage Speed when 1
2Total Distance presentTotal Distance when 1
3Inclination and Ramp Angle Setting presentInclination when 1Ramp Angle Setting when 1
4Elevation Gain presentPositive Elevation Gain when 1Negative Elevation Gain when 1
5Instantaneous Pace presentInstantaneous Pace (Time per 500 meters) when 1
6Average Pace presentAverage Pace (Time per 500 meters) when 1
7Expended Energy presentTotal Energy when 1Energy Per Hour when 1Energy Per Minute when 1
8Heart Rate presentHeart Rate when 1
9Metabolic Equivalent presentMetabolic Equivalent when 1
10Elapsed Time presentElapsed Time when 1
11Remaining Time presentRemaining Time when 1
12Force On Belt and Power Output presentForce On Belt when 1Power Output when 1
13–15Reserved for Future Use—

Guides on this site

The connected-device guides that name 0x2ACD:

Questions

What is the UUID of the Treadmill Data characteristic?
0x2ACD. The Bluetooth SIG's characteristic_uuids.yaml lists Treadmill Data as 0x2ACD with the identifier org.bluetooth.characteristic.treadmill_data. No file in the SIG's repository ties it to a service: the repository lists service and characteristic UUIDs separately.
Which Treadmill Data fields are optional?
18 of its 19 fields have a published size that can be zero: Instantaneous Speed (0 or 2; Present if bit 0 of Flags field is set to 0); Average Speed (0 or 2; Present if bit 1 of Flags field is set to 1); Total Distance (0 or 3; Present if bit 2 of Flags field is set to 1); Inclination (0 or 2; Present if bit 3 of Flags field is set to 1); Ramp Angle Setting (0 or 2; Present if bit 3 of Flags field is set to 1); Positive Elevation Gain (0 or 2; Present if bit 4 of Flags field is set to 1); Negative Elevation Gain (0 or 2; Present if bit 4 of Flags field is set to 1); Instantaneous Pace (Time per 500 meters) (0 or 2; Present if bit 5 of Flags field is set to 1); Average Pace (Time per 500 meters) (0 or 2; Present if bit 6 of Flags field is set to 1); Total Energy (0 or 2; Present if bit 7 of Flags field is set to 1); Energy Per Hour (0 or 2; Present if bit 7 of Flags field is set to 1); Energy Per Minute (0 or 1; Present if bit 7 of Flags field is set to 1); Heart Rate (0 or 1; Present if bit 8 of Flags field is set to 1); Metabolic Equivalent (0 or 1; Present if bit 9 of Flags field is set to 1); Elapsed Time (0 or 2; Present if bit 10 of Flags field is set to 1); Remaining Time (0 or 2; Present if bit 11 of Flags field is set to 1); Force On Belt (0 or 2; Present if bit 12 of Flags field is set to 1); Power Output (0 or 2; Present if bit 12 of Flags field is set to 1). Flags (2) has a fixed size.
What units does Treadmill Data use?
The SIG's text names a unit for 18 of the 19 fields: Instantaneous Speed: velocity (kilometre per hour) (org.bluetooth.unit.velocity.kilometre_per_hour); Average Speed: velocity (kilometre per hour) (org.bluetooth.unit.velocity.kilometre_per_hour); Total Distance: length (metre) (org.bluetooth.unit.length.metre); Inclination: percentage (org.bluetooth.unit.percentage); Ramp Angle Setting: plane angle (degree) (org.bluetooth.unit.plane_angle.degree); Positive Elevation Gain: length (metre) (org.bluetooth.unit.length.metre); Negative Elevation Gain: length (metre) (org.bluetooth.unit.length.metre); Instantaneous Pace (Time per 500 meters): time (second) (org.bluetooth.unit.time.second); Average Pace (Time per 500 meters): time (second) (org.bluetooth.unit.time.second); Total Energy: energy (kilogram calorie) (org.bluetooth.unit.energy.kilogram_calorie); Energy Per Hour: energy (kilogram calorie) (org.bluetooth.unit.energy.kilogram_calorie); Energy Per Minute: energy (kilogram calorie) (org.bluetooth.unit.energy.kilogram_calorie); Heart Rate: period (beats per minute) (org.bluetooth.unit.period.beats_per_minute); Metabolic Equivalent: metabolic equivalent (org.bluetooth.unit.metabolic_equivalent); Elapsed Time: time (second) (org.bluetooth.unit.time.second); Remaining Time: time (second) (org.bluetooth.unit.time.second); Force On Belt: force (newton) (org.bluetooth.unit.force.newton); Power Output: power (watt) (org.bluetooth.unit.power.watt).
What do the bits of the Treadmill Data Flags field mean?
The SIG defines them as: bit 0, More Data (Instantaneous Speed when 0); bit 1, Average Speed present (Average Speed when 1); bit 2, Total Distance present (Total Distance when 1); bit 3, Inclination and Ramp Angle Setting present (Inclination when 1, Ramp Angle Setting when 1); bit 4, Elevation Gain present (Positive Elevation Gain when 1, Negative Elevation Gain when 1); bit 5, Instantaneous Pace present (Instantaneous Pace (Time per 500 meters) when 1); bit 6, Average Pace present (Average Pace (Time per 500 meters) when 1); bit 7, Expended Energy present (Total Energy when 1, Energy Per Hour when 1, Energy Per Minute when 1); bit 8, Heart Rate present (Heart Rate when 1); bit 9, Metabolic Equivalent present (Metabolic Equivalent when 1); bit 10, Elapsed Time present (Elapsed Time when 1); bit 11, Remaining Time present (Remaining Time when 1); bit 12, Force On Belt and Power Output present (Force On Belt when 1, Power Output when 1). The remaining bits are reserved for future use.

Source

Read on 2026-10-17 from gss/org.bluetooth.characteristic.treadmill_data.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.

← All Bluetooth GATT characteristics