Re: BUG: iio: mpu3050: Wrong temperature scale
From: Linus Walleij
Date: Mon Apr 19 2021 - 06:08:13 EST
On Mon, Apr 19, 2021 at 8:06 AM Dmitry Osipenko <digetx@xxxxxxxxx> wrote:
> The driver uses
> (x+23000)/280 formula for the conversion of raw temperature value, which
> gives 82C for x=0, thus apparently formula is wrong because x=50000
> should give us ~25C.
> I tried to search for the datasheet with the formula, but couldn't find it.
There is no public datasheet. I have never seen a non-public datasheet
As the initial submission of the driver says:
"This driver is based on information from the rough input driver
in drivers/input/misc/mpu3050.c and the scratch misc driver
posted by Nathan Royer in 2011. Some years have passed but this
is finally a fully-fledged driver for this gyroscope. It was
developed and tested on the Qualcomm APQ8060 Dragonboard."
(you find the threads at the bottom)
This submission came from inside Invensense so it is the closest
authoritative source we have.
> Linus, will you be able to check whether the formula used by the driver
> is correct? Thanks in advance.
Sadly the code is the documentation when it comes to Invensense stuff,
I am CC:ing Nathans Invensense address in the vain hope he is still
working there and could help, also CC to Jean-Baptiste who was
there last year and maybe can help out.
I don't anymore remember exactly how I found this equation,
but it wasn't from any datasheet. I vaguely remember browsing
through some Android userspace sensor code.
What I tend to do is dig around in old mobile
phone Android trees, and there you sometimes find this information
in different GPL code drops. I bet I got it from browsing some of
Here is an example (Tegra):
Worst case what one *can* do is to calibrate the scale, like put
the device in a controlled environment of some two reasonably
far apart temperatures and measure, assuming it is at least
linear. Some professionals use controlled environment
chambers for this. But I hope there is a better way.