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
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.
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
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 = 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.
result-value minimum and maximum are not known; comparing with other
Abbott device, it's possible that they use the constants
checksum is a simple accumulation of the ASCII values of the characters,
up until the
0x literal (excluded), including the
CR LF terminations.