I recently received a new glucometer from LifeScan, as when I tried to re-download the specs of the protocol of my previous one they realized I had a very old model – even though they just sent it to me last summer – and offered to get me a new one. They sent me a OneTouch Ultra Easy (also called Ultra Mini in the United States it seems), which is just an evolution of the same design obviously.
The device also comes in two variants, as far as I can tell: the one I have uses the same TRS serial cable that I have already for the Ultra 2, even though it does not use the same protocol at all; according to the FAQ on LifeScan’s website, there also is a miniUSB version too. In either case, to be able to use it on the original Windows software, an extra driver is required.
Of course what I needed to do was to write a driver for my glucometerutils and so I did in the 48 hours following me receiving it. The protocol is very different, it’s binary, and not very obvious. The documentation gives you all the possible commands, but it does not explain why a given number is in a command rather than a different one, so they are all mapped to byte-array literals, not the nicest thing in the world.
The driver, without comments, is just as long as the Ultra 2 driver, which is fully commented, so it is a bit more complex than the textual protocol used in the previous two versions (the Ultra device should share the same protocol as Ultra 2, but I can’t verify that). On the other hand, at least this time they used a standard CRC implementation (16-bit CCITT), but I couldn’t find an obvious implementation of it so I wrote my own — they actually provide the full C sources to the CRC function in the specs, which is good.
The driver already supports the full features of the device; they are somewhat short of the Ultra 2, as there is no definition of comments or pre/post meal indication. As usual the device reads internally in mg/dL, and converts to mmol/l when displaying the data, or downloading the data to the computer. The same goes with my driver; the interesting part is that this sometimes lead to a slightly more precise reading than the device itself would show.
On the user side of the device, the new form factor is quite nice; it goes away without the power button, and without the backlight. The case is nice, not far from everything else, and now the compact pricking device makes much more sense.
Once again, thanks to LifeScan for actually being open on their protocols!
Update (2018): clearly that didn’t last long.
Can you give me a step by step tutorial on how to use your utility in one touch ultra 2 please……. I want my arduino read the one touch ultra 2 data..thank you in advance
You are better off requesting this on the GitHub issues because I don’t usually pay this much attention to Disqus. And that’s easier to keep around for others 🙂 But do check the README, it is fairly documented there.Though on an Arduino, that’s probably not going to work very well with Python.