FreeStyle Precision Neo, Optium Neo, Optium Neo H
Reverse engineered by Diego Elio Pettenò.
Important device notes
Abbott markets a number of similar meters with a different set of features enabled for each in different markets. These differences appear to be implemented similarly to the selection of glucose units used in display/reporting.
The known devices sharing the same base protocol are the following:
- FreeStyle Precision Neo, marketed in the United States;
- FreeStyle Optium Neo, marketed in Europe;
- FreeStyle Optium Neo H.
The FreeStyle Precision Neo (at the very least) can also read special β-ketones testing strips.
USB IDs
Device | Vendor ID | Product ID |
---|---|---|
FreeStyle Precision Neo | 1a61 | 3850 |
Protocol
This device uses the shared HID protocol used by other
meters in the FreeStyle family. All messages that have been identified are
considered text commands and use message type 0x60
.
Commands
All commands supported by the shared protocol are supported by the device. Those that deviate from said protocol are here documented.
$result?
The $result?
command is used to dump the readings records from the device, and
it follows the Multiple records command output format as described in the
shared protocol documentation.
The first field in the record specify the type of record; type 7 is a blood glucose reading, type 10 is an insulin input that was made on the device.
Blood glucose record fields
type = "7"
id
month = 1*2DIGIT
day = 1*2DIGIT
year = 1*2DIGIT
hour = 1*2DIGIT
minute = 1*2DIGIT
unknown
value = 1*DIGIT / "HI"
unknown
unknown
unknown
unknown
unknown
unknown
unknown
unknown
unknown
unknown
The HI
literal signifies a reading that was outside the range of the device
(or more likely of the strip.) For glucose results, this is an unknown value.
Insulin record fields
type = "10"
id
month = 1*2DIGIT
day = 1*2DIGIT
year = 1*2DIGIT
hour = 1*2DIGIT
minute = 1*2DIGIT
unknown
insulin-type
value = 1*DIGIT
unknown
unknown
unknown
The insulin type is defined as follows:
insulin-type = morning-long-acting / breakfast-short-acting /
lunch-short-acting / evening-long-acting /
dinner-short-acting
morning-long-acting = "0"
breakfast-short-acting = "1"
lunch-short-acting = "2"
evening-long-acting = "3"
dinner-short-acting = "4"
β-ketones record fields
type = "9"
id
month = 1*2DIGIT
day = 1*2DIGIT
year = 1*2DIGIT
hour = 1*2DIGIT
minute = 1*2DIGIT
unknown
value = 1*DIGIT
unknown
The Ketone value is in mg/dL not in mmol/L as it should be. Divide the value by 18 to get a proper Ketone value in mmol/L.
Other Commands
The following commands, used by other meters using the shared HID protocol, are identified as supported by the device:
$gunits?
Originally identified on FreeStyle Insulinx.
Unknown response. Best guess this may be "Glucose Units".
gunits-cmd = "$gunits?"
gunits-msg = "1" CRLF ; on a mg/dL device
The theory of this being the unit of measure is supported by the $uom?
command
reporting 0
for a mmol/L FreeStyle Libre reader.
$marketlev?
Originally identified on FreeStyle Libre.
marketlev-cmd = "$marketlev?"
marketlev-msg = "1,0" CRLF