Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    BNO055 Calibration, Cal. reuse, Cal. status, Run modes, Offsets, Axis mapping

    BNO055 Calibration, Cal. reuse, Cal. status, Run modes, Offsets, Axis mapping

    New Poster


    I am evaluating the BNO055 using a Microchip Xplained Pro Kit and a Raspberry Pi, connected via I2C bus.

    I've managed to set basic settings such as run mode, read the Calibration status byte, etc. However, I am not sure which data can be read in which run mode respectively when exactly some data is updated by the sensor controller. My questions are:

    1. Is it correct, that the calibration data (addresses 0x55 to 0x6A) can only be read in CONFIGMODE?

    2. Is it correct, that the calibration status byte (address 0x35) can only be read in a run mode, i.e., any operation mode other than CONFIGMODE, e.g., NDOF?

    3. Given the sensor was fully calibrated, i.e., the CALIB_STAT byte at 0x35 holds 0xFF, and the calibration data (0x55-0x6A) was stored on the host system and uploaded to the sensor in the following fashion: Calibrate, save data, power cycle the sensor, ensure sensor is in CONFIGMODE, write calib. data to according addresses, put sensor into operation mode (e.g., NDOF), read calibration status. Should the CALIB_STAT byte then immediately be 0xFF and the sensor calibrated and ready to use? I observed the sensor not showing fully calibrated after uploading the calib. data.

    4. Is it possible to force the sensor to not update the calibration data after it was uploaded? Can it be done reading only raw data from the sensor and using the BSXlite sensor fusion software?

    5. Is it correct, that using the default axis mapping P1 (AXIS_REMAP_CONFIG = 0x24, AXIS_REMAP_SIGN = 0x00) the forward direction of the measured heading is as is depicted using the red arrow in the attached picture? I observed 90 degree offsets to magnetic north which makes me question the axis mapping.

    Thanks in advance for your answers!

    5 REPLIES 5

    Community Moderator
    Community Moderator

    Hello DRA,

    1.After a full cablibration is achieved and operation mode is switched to CONFIG_MODE, you could read calibration profile;

    BNO055 reading calibration profile.png

    2.To do calibration, it should be switched to fusion mode.

    BNO055 operation mode.pngBNO055 calibration.png

    3.Could you confirm your calibration profile is correct?

    Setting calibration profile.png

    4.For example, geomagnetic calibration, when the surrounding magnetic field environment changes, the calibration value will change.

    Do you want to read the RAW data and run the algorithm on the host side?

    fusion software in background to remove the offsets.png

    5.You need to determine your coordinate system first. If the red direction in your picture refers to the Y axis, you should use P0 mapping.

    BNO055 axis mapping.png



    Hello BSTRobin!

    Thanks for your answers!

    ad 2.: This doesn't really answer my question. I am aware that calibration happens in the fusion modes, my question is in which modes the calibration data can be read, as it appears to be only accessible in CONFIGMODE and all zeros otherwise.

    ad 3.: If you are saying, that the CALIB_STATUS being 0xFF does not guarantee "correct calibration", how can one then be sure that the calibration is correct?

    ad 4.: Yes, if it is not possible to disable automatic calibration on-chip (which is the case from my understanding) my plan would be to only read raw data from the sensor, use the fusion software on the host CPU and only calibrate on demand. Does BSXlite support this?

    ad 5.: According to the datasheet, registers 0x1A, 0x1B give the HEADING. So really the question is, how "HEADING" is defined initially. Usually, heading denotes the deviation of the system's "forward" direction from magnetic north. Therefore I implicate, that HEADING is the angle between the sensor coordinate system X-axis, and the world coordinate system X-axis (which is how usually these things are defined). Accordingly, the red arrow in the graphic denotes the X-axis of the system. Is the P1 configuration suitable then?


    Community Moderator
    Community Moderator

    Hello DRA,

    ad 2.: document mentioned after a full cablibration was achieved and operation mode was switched to CONFIG_MODE, you could read calibration profile that included calibration data;
    ad 3.: There are corresponding steps about read calibration profile and set calibration profile. Make sure that the operation is correct and you will get the correct calibration value.
    ad 4.: If you want to run fusion algorithm on host side, you could switch mode to non fusion mode and get RAW data;
    ad 5.: coordinate system must be clearly defined first. The red arrow in the graphic denotes the X-axis of the system, is it positive or negative?


    ad 4.: Does BSXlite host side fusion software support disabling of continous calibration?

    ad 5.: The read arrow in the figure denotes positive X axis.

    6. How is HEADING defined? Is it the angle between configured sensor positive X axis and true north?