Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    Is it Possible to Manually Recalibrate the BNO055?

    Is it Possible to Manually Recalibrate the BNO055?


    I am using the BNO055 in accelerometer only mode and have saved calibration offsets to EEPROM. The calibration offsets are successfully restored upon powering on the device.

    Would it be possible to add a button (in software or hardware) that can be used to recalibrate the BNO? So when you press the button, the BNO resets its calibration values to 0 for system, gryo, accel, and mag and goes through the entire calibration process again. I've tried adding a button that enters a fusion mode and sets the calibration values to 0, but it seems like that isn't enough to make the BNO look for new offsets.

    The ideal solution would not require me to power off the device or load a separate firmware in order to recalibrate.

    EDIT: I took another look at the BNO055 Data Sheet 1.4 and saw in section 3.11.4 it mentions "the internal calibration routine". I think this calibration routine is what I would like to manually invoke.


    Thank you

    5 REPLIES 5

    Hi Hugh,

    BNO055 calibrators are always active, whenever it sees the right motion, it will update its calibration, there is no way to manually trigger it.

    Gyroscope calibration is quite straightforward and only requires the device to be still.
    Magnetometer calibration requires the device to rotate, it is also quite straightforward.
    What you can do is for accelerometer, simply perform your own calibration (e.g. at the press of the user button, read raw accel data and compare it with expected data) adn write it to the offset register. Any data written to the offset register is considered valid and immediately used.


    Hello, thank you for the reply!

    That makes sense to me. Now I am trying to figure out the difference between "raw" and "expected" values. I have the accelerometer set to an acceleration range of +/- 2G and I get my readings by using:


     then converting them to more usable degree angles.


    Is this the call to get the raw acceleration values? If not, could you point me in that direction?

    Thank you

    Actually, I just double-checked and BNO055 does not have a raw data output.

    So what you can do is set the offset register to zero first, then read Accel data, calculate your own offset then set it to the correct value.

    The expected data depends how you perform your calibration. Assuming that you place the device on a flat surface parallel to the ground, it would be 0g, 0g, -1g..


    Ok I will give this some effort and let you know what happens.