Glucose Measurement (0x2A18): byte layout
GATT characteristic · org.bluetooth.characteristic.glucose_measurement · read from the Bluetooth SIG’s repository on 2026-10-17 · commit 408f4a0 (2026-10-14)
Glucose Measurement is Bluetooth GATT characteristic 0x2A18, org.bluetooth.characteristic.glucose_measurement in the Bluetooth SIG's assigned numbers. The SIG's GATT Specification Supplement file lays its value out as 7 fields: Flags, Sequence Number, Base Time, Time Offset, Glucose Concentration and 2 more. The first, Flags, is a boolean[8]; 4 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
- 0x2A18
- Identifier
org.bluetooth.characteristic.glucose_measurement- The SIG’s description
- The Glucose Measurement characteristic is used to represent data related to a glucose measurement record.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.glucose_measurement.yaml
Byte layout: 7 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 | Sequence Number | uint16 | 2 | Always (fixed size) | — |
| 3 | Base Time | struct | 7 | Always (fixed size) | — |
| 10 | Time Offset | int16 | 0 or 2 | Bit 0 of Flags is 1 | time (minute)org.bluetooth.unit.time.minute |
| Depends on Flags (bit 0) | Glucose Concentration | medfloat16 | 0 or 2 | Bit 1 of Flags is 1 | not an id in units.yamlorg.bluetooth.unit.mass_density.kilogram_per_liternot an id in units.yamlorg.bluetooth.unit.mass_density.mole_per_litre |
| Depends on Flags (bits 0 and 1) | Type-Sample Location | struct | 0 or 1 | Bit 1 of Flags is 1 | — |
| +0 bits | ↳ Type | uint4 | 4 bits | Always (fixed size) | unitlessorg.bluetooth.unit.unitless |
| +4 bits | ↳ Sample Location | uint4 | 4 bits | Always (fixed size) | unitlessorg.bluetooth.unit.unitless |
| Depends on Flags (bits 0 and 1) | Sensor Status Annunciation | boolean[16] | 0 or 2 | Bit 3 of Flags is 1 | — |
Field notes
Each field’s text in the SIG’s file, line by line.
- Flags boolean[8] · 1
- See Flags
- Sequence Number uint16 · 2
- Contains a sequence number of the record. It is used to number a sequence of measurements as defined by the service.
- Base Time struct · 7
- Refer to Date Time characteristic in Date Time (0x2A08)
- Time Offset int16 · 0 or 2
- Specifies the time difference from the value of the Base Time field.See Time Offsetunit: org.bluetooth.unit.time.minutePresent if bit 0 of Flags field is set to 1
- Glucose Concentration medfloat16 · 0 or 2
- If bit 2 of Flags field is set to 0,unit: org.bluetooth.unit.mass_density.kilogram_per_literIf bit 2 of Flags field is set to 1,unit: org.bluetooth.unit.mass_density.mole_per_litrePresent if bit 1 of Flags field is set to 1
- Type-Sample Location struct · 0 or 1
- See Type-Sample LocationPresent if bit 1 of Flags field is set to 1
- Sensor Status Annunciation boolean[16] · 0 or 2
- See Sensor Status AnnunciationPresent if bit 3 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 | Time Offset Flag:0 = Time Offset field not present1 = Time Offset field present | Time Offset when 1 |
| 1 | Glucose Concentration and Type-Sample Location Flag:0 = Glucose Concentration and Type-Sample Location fields not present1 = Glucose Concentration and Type-Sample Location fields present | Glucose Concentration when 1Type-Sample Location when 1 |
| 2 | Glucose Units Flag:0 = Glucose concentration in units of mg/dL1 = Glucose concentration in units of mmol/L | — |
| 3 | Sensor Status Annunciation Flag:0 = Sensor Status Annunciation field not present1 = Sensor Status Annunciation field present | Sensor Status Annunciation when 1 |
| 4 | Context Information Flag:0 = This record does not include context information1 = This record includes context information | — |
| 5–7 | Reserved for Future Use | — |
Time Offset
The values of this field are defined below
| Value | Description |
|---|---|
| 0x0000–0xFFFF | Time offset in minutes |
Type-Sample Location(sizes in bits, as the file marks)
The structure of this field is defined below.
| Field | Data type | Size | Description |
|---|---|---|---|
| Type | uint4 | 4 | Unit: org.bluetooth.unit.unitlessSee Type |
| Sample Location | uint4 | 4 | Unit: org.bluetooth.unit.unitlessSee Sample Location |
Type
The values of this field are defined below.
| Value | Description |
|---|---|
| 0x0 | Reserved for Future Use |
| 0x1 | Capillary Whole blood |
| 0x2 | Capillary Plasma |
| 0x3 | Venous Whole blood |
| 0x4 | Venous Plasma |
| 0x5 | Arterial Whole blood |
| 0x6 | Arterial Plasma |
| 0x7 | Undetermined Whole blood |
| 0x8 | Undetermined Plasma |
| 0x9 | Interstitial Fluid (ISF) |
| 0xA | Control Solution |
| 0xB–0xF | Reserved for Future Use |
Sample Location
The values of this field are defined below
| Value | Description |
|---|---|
| 0x0 | Reserved for Future Use |
| 0x1 | Finger |
| 0x2 | Alternate Site Test (AST) |
| 0x3 | Earlobe |
| 0x4 | Control solution |
| 0x5–0xE | Reserved for Future Use |
| 0xF | Sample Location value not available |
Sensor Status Annunciation
The bits of this field are defined below.
| Bit | Description | Fields its condition names |
|---|---|---|
| 0 | Device battery low:0 = The battery was not low at the time of measurement.1 = The battery was low at the time of measurement. | — |
| 1 | Sensor malfunction:0 = The sensor was not malfunctioning or faulting at the time of measurement.1 = The sensor was malfunctioning or faulting at the time of measurement. | — |
| 2 | Sample size insufficient:0 = There was enough blood or control solution on the strip during the measurement.1 = There was not enough blood or control solution on the strip during the measurement. | — |
| 3 | Strip insertion error:0 = The strip was inserted correctly.1 = The strip was not inserted correctly. | — |
| 4 | Strip type incorrect:0 = The strip was the right type for the device.1 = The strip was not the right type for the device. | — |
| 5 | Sensor result too high:0 = The reading or value was not higher than the device can process.1 = The reading or value was higher than the device can process. | — |
| 6 | Sensor result too low:0 = The reading or value was not lower than the device can process.1 = The reading or value was lower than the device can process. | — |
| 7 | Sensor temperature too high:0 = The ambient temperature was not too high for a valid test/result at the time of measurement.1 = The ambient temperature was too high for a valid test/result at the time of measurement. | — |
| 8 | Sensor temperature too low:0 = The ambient temperature was not too low for a valid test/result at the time of measurement.1 = The ambient temperature was too low for a valid test/result at the time of measurement. | — |
| 9 | Sensor read interrupted:0 = The reading was not interrupted and the strip was not pulled too soon during the measurement.1 = The reading was interrupted or the strip was pulled too soon during the measurement. | — |
| 10 | General device fault:0 = A general device fault has not occurred in the sensor device.1 = A general device fault has occurred in the sensor device. | — |
| 11 | Time fault:0 = A time fault has not occurred in the sensor device.1 = A time fault has occurred in the sensor device and the time is inaccurate. | — |
| 12–15 | Reserved for Future Use | — |
Guides on this site
The metric Glucose Measurement carries, on every platform this site covers — each type quoted in its platform's own words:
No guide on this site names 0x2A18 yet. The connected-devices guides cover pairing, subscribing and testing for the device types they do name.
Questions
- What is the UUID of the Glucose Measurement characteristic?
- 0x2A18. The Bluetooth SIG's characteristic_uuids.yaml lists Glucose Measurement as 0x2A18 with the identifier org.bluetooth.characteristic.glucose_measurement. No file in the SIG's repository ties it to a service: the repository lists service and characteristic UUIDs separately.
- Which Glucose Measurement fields are optional?
- 4 of its 7 fields have a published size that can be zero: Time Offset (0 or 2; Present if bit 0 of Flags field is set to 1); Glucose Concentration (0 or 2; Present if bit 1 of Flags field is set to 1); Type-Sample Location (0 or 1; Present if bit 1 of Flags field is set to 1); Sensor Status Annunciation (0 or 2; Present if bit 3 of Flags field is set to 1). Flags (1), Sequence Number (2) and Base Time (7) have a fixed size.
- What units does Glucose Measurement use?
- The SIG's text names a unit for 2 of the 7 fields: Time Offset: time (minute) (org.bluetooth.unit.time.minute); Glucose Concentration: org.bluetooth.unit.mass_density.kilogram_per_liter (not an id in units.yaml) and org.bluetooth.unit.mass_density.mole_per_litre (not an id in units.yaml), each on its own line of the field's text with the condition it states.
- What do the bits of the Glucose Measurement Flags field mean?
- The SIG defines them as: bit 0, Time Offset Flag: 0 = Time Offset field not present; 1 = Time Offset field present (Time Offset when 1); bit 1, Glucose Concentration and Type-Sample Location Flag: 0 = Glucose Concentration and Type-Sample Location fields not present; 1 = Glucose Concentration and Type-Sample Location fields present (Glucose Concentration when 1, Type-Sample Location when 1); bit 2, Glucose Units Flag: 0 = Glucose concentration in units of mg/dL; 1 = Glucose concentration in units of mmol/L; bit 3, Sensor Status Annunciation Flag: 0 = Sensor Status Annunciation field not present; 1 = Sensor Status Annunciation field present (Sensor Status Annunciation when 1); bit 4, Context Information Flag: 0 = This record does not include context information; 1 = This record includes context information. The remaining bits are reserved for future use.
Source
Read on 2026-10-17 from gss/org.bluetooth.characteristic.glucose_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.