Turning Freestyle Libre into CGM: early observations.

Over the last 18 months, the MiaoMiao and Bluecon have become popular third party add-ons to convert the Libre into a CGM system, using software such as xDrip and Glimp.

This is an n=1 attempt to compare xDrip with the Libre using the xDrip algorithm for calibration, xDrip with the OOP algorithm, an alternative that packages up the Abbott LibreLink library and the Dexcom G6, which has proven to be pretty much the best that I’ve tried.

Throughout the course of this initial set of obervations, I don’t intend to go into the detail of MARDs on the different systems. I think in this context it’s more important to review the variation of the systems from calibrations and each other, and to understand where variability and consideration needs to lie in how you look at the data.

Libre with xDrip algorithm

The majority of people moving on to Libre with a bluetooth CGM converter use the xDrip algorithm. To be clear, this simply uses the glucose content of the Libre data packet and applies a linear calibration slope to interpret the value. As Pierre Vandevenne has written previously, there are potential issues with this approach.

The xDrip code in Libre currently only interprets the glucose data in the payload, which raises some questions relating to just how “raw” the raw data is, as it doesn’t use the temperature value as part of its evaluation.

Initially, the xDrip combination was intended to be calibrated twice daily, with variation on that determined after a period of running with it. Calibration was intended to be done when glucose levels had had three consecutive readings showing a flat arrow.

The initial dataset saw significant variation in this n=1 example and all the readings (with the exception of a very specific example) reading above the blood results. As a result, I elected to completey wipe out of the values and start again with calibration after five days. As the image below shows, there is enough of a difference to make the readings very unreliable in the early stage, and even after an effective restart, questions remain. 

Variation in algorithms in use
The odd example

In the one example, shown above, both the OOP and xDrip algorithms plummeted. I’ve decent hypo awareness and felt as though I was around 3.5 to 4, so ate accordingly. It didn’t feel deep, however both Libres throughly otherwise. That’s quite a significant difference and I wish I’d tested. 

Libre with OOP algorithm

The OOP algorithm in xDrip uses an Abbott library from LibreLink to allow calculation of the glucose data (which should be similar to the scan) and doesn’t allow calibration. It has so far generally provided a reading lower or significantly lower than the blood readings

Dexcom G6 

The Dexcom G6 is used with the Dexcom app to determine glucose levels. At the start, this was set up with a non-calibration code and used with calibration when it became clear that the variation was too high.

Early Observations

As can be seen from the following pictures, during the initial period of testing this out, there appears to be a lot of variation between the three sets of outputs, with, in general, Libre/OOP being regularly below bloods, Libre/xDrip being regularly above bloods and G6 being less above bloods.

Algo variation (1)

One thing that’s been very easy to observe is that the G6 is reacting earlier to changes in glucose levels than the Libre is. You can see a clear and consistent five minute advantage for the G6 over the Libre, whilst bearing in mind the mechanism that’s being used to calculate those values is slightly different. 

Example of calibration then later deviation

In the above image you can see two examples of calibration, followed by what happened a few hours later. 

Calibration 1, on the middle line, was for the G6. Calibration 2, from the top line, was on the Libre with xDrip. The calibration on the G6 resulted in a slightly higher value than the blood test. On the Libre it aligned perfectly and for a short period, appeared to run lower than G6. It then slowly reverted to a value that was higher. As the later blood tests in the image show, the G6 had once again become the go to trace. Prior to both those calibrations, the movement in glucose level over the previous 15-20 mins showed a flat arrow, on both the Dexcom app and the xDrip interpretation.

This pattern has repeated since I started attempting to do this, and there’s no clear explanation as to why, other than Pierre’s earlier observations. 

It’s too early to say whether there is an issue with the sensors or this is simply my physiology disagreeing with them, as we still have another 9 days of experimentation. But it’s enough for me to wonder what’s required to loop safely with the Libre, MiaoMiao and xDrip, without paying close attention to variability of the readings. It looks as though, at this early stage, that calibration may be all important, and that performance of the xDrip algorithm is linked closely to not only the glucose velocity when calibrating, but also the level at which that calibration is undertaken. It does appear that as the levels deviate further from the calibration level, the variance increases. 

However you look at it, users of MiaoMiao and Libre should be aware of possible mismatches in the readings they see. 


  1. Thanks for this detailed article. I am using NightRider since August and absolutely love this product. I wear it on my upper left arm and don’t feel at all, sometimes I have to touch my arm to check whether I am wearing the NightRider or not, almost weightless. Connection is solid, did not disconnect even a single time in last 10 days. I wear 24/7, helped me bring down A1C from 9.2 to 5.7.
    I use Ambrosia’s LinkBluCon app and my parents use FollowBluCon app to keep track of my readings. Setup is easy, also NightRider costs 145 USD, not very expensive relative CGM solution at a fraction of Dexcom cost


Leave a Reply

Your email address will not be published.