FreeStyle Freedom Lite / Lite / Mini
Reverse Engineered by Alexander Schrijver (@flupzor).
Important device notes
This protocol is used in the following devices:
- FreeStyle Freedom Lite
- FreeStyle Lite
- FreeStyle Mini
Cable
These devices connect to a computer with a TRS (mini-jack) to RS232 cable.
Abbott provides a TIUSB3410 USB-to-Serial adapter by Texas Instruments. This cable is supported at least from Linux 3.14 and later.
Protocol
Serial port configuration
The serial port should be configured as such:
- 8 data bits;
- no parity bits;
- 1 stop bit;
- 19200 baud rate.
Messages and commands
The FreeStyle protocol has 2 types of messages a command and a result. Currently only one command exists which returns multiple results.
generic-message = command / result
The host starts with setting up the connection. After that it should send the following command:
command = "mem"
The device then sends the following data.
result = CR LF
serial-number CR LF
software-version CR LF
currentdatetime
log
serial-number = 7( ALPHA / DIGIT ) "-" 5( ALPHA / DIGIT )
software-version = CR LF 1*DIGIT "." 1*DIGIT *SP "-P"
The serial number is provided in the same format as other FreeStyle devices.
The software revision doesn't seem to be very consistent. It usually includes a
dot-version, as a normal software revision, and terminate with the -P
string. Sometimes the version is space-padded, and sometimes it's not.
Date and Time Format
currentdatetime = datetime
datetime = month SP day SP year SP time
month = "Jan " / "Feb " / "Mar " / "Apr " / "May " / "June" / "July" /
"Aug " / "Sep " / "Oct " / "Nov " / "Dec "
; N.B. Except June and July all months have spaces at the end.
day = 2DIGIT
year = 4DIGIT
time = hour ':' minute ':' second
hour = 2DIGIT
minute = 2DIGIT
second = 2DIGIT
Log
log = empty-log / log-contents
empty-log = "Log Empty END"
log-contents = CR LF
nrresult CR LF LF
resultline *(CR LF resultline)
checksum "END"
nrresults = 3DIGIT; e.g. 001 or 250
resultline = result-value datetime2 plasmatype "0x00"
result-value = 3DIGIT
datetime2 = month SP day SP year SP time2
time2 = hour ':' minute
plasmatype = 2DIGIT
checksum = "0x" 4HEXDIG
There is probably is a maximum number of results. At the moment we are guessing it is 450 which is the maximum the Abbott Precision Xceed can store. The minimum is 1
Note that the inconsistent spacing (including the additional LF) is intentional.
NOTE: result-value
minimum and maximum are not known; comparing with other
Abbott device, it's possible that they use the constants HI
and LO
instead.
The checksum
is a simple accumulation of the ASCII values of the characters,
up until the 0x
literal (excluded), including the CR LF
terminations.