Different temperature reading between new (B8) and old (B7.1) Ruuvi Tags

This story starts in July of this year when the UK was experiencing some hot wet weather which would go on to be the hottest day ever recorded in the country.

18 months ago I bought some Ruuvi tags, and then bought some more and ended up with 10 of them dotted around nearly every room in my house, and one outside, logging data to a Pi Zero W. As the hot weather approached I wanted another tag for the front of the property so that I could get an accurate temperature reading as the tag at the back is in the shade for most of the day, but in the evening it gets the sun and this therefore inflates the reading. I also wanted one for fun that wouldn’t be logged to the Pi and could be carried around to places and just checked in the app.

Due to living in the UK and the other 52%, shipping to the UK is quite expensive so two tags turned into 4 and some stands and a case so I could get free shipping.

These turned up fairly promptly (as has been the case the other two times I’ve ordered) as a 3 x pack and a 1 x pack.

I took one out and connected it to my phone and thought I’d check the temperature reading against the current one in the study. They weren’t that close, off by more than 1 degree. But at that point I wasn’t too worried, I expected it would settle down.

I went ahead and installed one of the tags outside at the front and then waited to see what the data looked like in comparison to the one at the back. As expected there was a difference depending on the time of the day and where the sun was. Fine. However in the dead of night when everything had cooled off I was still seeing a difference of 4 degrees between front and back which seemed a bit unlikely.

So I started looking for reasons. One thing I noticed was that the battery voltage on the old original outside tag was quite a bit lower than the new one.

So, as I had a few spare tags, I swapped out the battery to see if it made a difference. It didn’t but this is when I discovered that I had a different revision of the tag (B8), as I’d previously had the pleasure of opening every single one of the original 10 up to initiate a firmware update. After doing this 10 times, you definitely remember pressing 2 buttons to start it and this new tag only had 1.

So it now seemed that one of these tags probably wasn’t being very accurate (far less accurate than ±0.5 degrees as mentioned in the spec). So I went about doing some tests to see if I could find out if this was an issue with one tag or there was something else going on.

I had 3 new tags that weren’t doing anything so these became the Roaming tags and were with-in more than acceptable tolerances of each other:

So we have a control. Well sort of – we know that the new tags agree with each other, but that doesn’t mean that this is an accurate temperature reading.

I therefore conduct a few tests to try and compare the new and the old tags to see if this is a trend or just a one off.

This was the layout I went for – the random cheap BBQ meat thermometer was there to give a non-Ruuvi measurement of the temperature.


The readings from the Ruuvi Station:

Things weren’t looking good for the B8 vs B7.1 comparison with Study showing more than 1 degree less than the others. I’d left this for a few hours to normalise and the meat thermometer was siding with B8 contingent.

So I moved on to the next test subject.


Discarding Roaming as it was in a rubber coat and this was in direct sunlight, Outside is again reading almost a full degree less than the rest of the pack.

To keep things fair I did the same test on the other in service B8:


As Roaming is at a different angle and is insulated from the heat in the window sill that explains that discrepancy. Although perhaps not as close as I would like the B8 devices all appear to be with-in tolerance of each other. The meat thermometer seems to have been absorbing a lot more heat from the surroundings due to the metal probe.

The last one is from the kitchen which also shows nicely that the casing colours are completely different shades of white between the tags. The ones on the B8s seem to match the stands better – they always look odd against the B7.1s however I would say that the B7.1s have a truer white colour.


So we see yet another situation where the old tag is reading 1 degree less than the new ones.

I did this with a few other tags and it was fairly consistently a degree less being recorded.

Clearly these are real world tests and aren’t infallible but this seems to show, in my case that the B8 and B7.1 aren’t showing the same temperatures. 1 degree is quite a difference and is more than the ±0.5 tolerance of the Bosch BME280 which I understand powers the 7.1 variant. I believe this chip was changed in the B8?

Is this a known discrepancy between the different variants?

You could suggest I calibrate them, but against what? I now have a set of tags that disagree with each other. If I bundle all of my B7.1s together are they also going to affirm that they are showing the correct temperature? Additionally, calibration is fine if you are using Ruuvi Station and Ruuvi Gateway which will take notice of it, I am not. Until the calibration can be updated against the firmware for the individual tag then it isn’t going to help in this case.

For people that only have 1 or 2 tags or don’t ever check them against each other, this isn’t going to be an issue, I just happened to stumble upon it due to the massive discrepancies that I am seeing between the front and back outside tags. It could be that the original tag has developed a fault and is under reporting the temperature far more than the others, but there still seems to be an issue, or what I would consider to be one when compared to the others.

I think what bothers me most about it, is that I’ve been logging this data since March 2021 and it could be inaccurate or not quite as accurate as I thought it was. As a data person (which I’m assuming most of us on here must be otherwise why would we get these) that’s really irritating.

Hi Ian,

Thank you for the long explanation and very good tests. Accuracy of Sensirion STHC3 (B8) is better than Bosch BME280 and typically SHTC3 is showing very close values compared to high accuracy Texas TMP117.

Please note that all sensors have typical and maximum absolute accuracy. In Bosch BME280 they only publish typical values but sensors maximum accuracy is in a worst case 3 x typical values. It means that according to Bosch quality manual it’s still feasible to some sensors are not in line with accuracy of ±0,5C.

I would calibrate this one B7.1 device according to new B8 variant (and Sensirion STHC3). When doing it, you should add these all devices to closed plastic box and take away from windows/walls/heat sources.

Hi Henri,

Thanks for the explanation regarding the differences between the tag revisions. I didn’t realise that the values that Bosch published weren’t exact and were able to deviate from the ±0.5 figure.

Clearly it’s a good thing that you are now able to use a sensor that is showing better accuracy and I completely understand that technology moves on and improvments are made.

My problem is that as I’m not using Ruuvi Station or the Gateway for logging, calibration won’t help improve things for my current fleet of B7.1 tags. As mentioned, the ability to send this to the tag itself as part of a firmware update would be really useful.

I’m using RuuviCollector at the moment, I don’t recall being able to add calibration data to this but I’d need to check. I also know that it has been replaced with something else, so I’ll check that out too.

At least I know that the more accurate tags are going to be the B8s and as I have spares, I can at least swap out the rear Outdoor sensor for one of those.


Implementing calibration values transfer to sensor would be rather challenging and it would be hard to get working perfectly (with every phone model, bad connections, etc) and therefore it’s not done. I think it’s possible to add calibration values to Grafana for example when visualizing the data.

Every sensor manufacturer gives values for min/max/typical values. Typical value is what is usually promoted, for example by Bosch. Sensirion offers also min/max values on their datasheet.

Hi Henri,

Thanks for the data sheet and the suggestion about adding the calibration to grafana.

In my mind having the calibration on the tag itself would get uploaded much the same way as the firmware does or as part of that process. So I’m not sure what difference the phone has, as I’d expect that would be dealt with by Ruuvi Station, so just the iOS and Android versions.

However I don’t know how much extra coding is involved to get the firmware upload part to work for different devices or whether the iOS / Android frameworks deal with that.