Data Sheet
October 2017  BNO080 Datasheet  1000-3927 
www.hillcrestlabs.com  © 2017 Hillcrest Laboratories, Inc. All rights reserved.  38 / 57 
3.1.1 Calibration Command 
The SH-2 firmware in the BNO080 allows a host microcontroller to enable or disable the dynamic calibration of 
the accelerometer, gyroscope and magnetometer. Refer to the SH-2 Reference Manual [1] for the command used 
to control calibration of each sensor. The command allows the host to control when calibration is performed. Note 
that the calibration settings do not persist across resets of the BNO080. 
3.1.2 Accelerometer 
Dynamic calibration for an accelerometer is the removal of zero-g offset (ZGO). An accelerometer at rest should 
only report gravity, any deviation is the zero-g offset. This is most easily seen when the accelerometer is placed 
with one axis perpendicular to the Earth, the other two axes should report zero. ZGO errors can manifest as tilts 
or tilt corrections (e.g. the screen on a head mounted display may be tilted with respect to the expected horizon) 
and this usually indicates that the accelerometer needs to be calibrated. The BNO80 provides two methods of 
calibrating the accelerometer ZGO; a full 3-dimensional approach for devices that can move in freely in space and 
a planar calibration for devices that are constrained to move in a plane (such as a robot vacuum cleaner). For 
more information on calibrating the accelerometer, see section 3.2.  
3.1.3 Gyroscope 
Dynamic calibration for a gyroscope is the removal of zero rate offset (ZRO). A gyroscope at rest should report 
zero rad/s on all axes.  Any deviation from zero is the zero rate offset (ZRO). ZRO errors can manifest as drifts 
(e.g. the screen on a head mounted display can continue moving even when the device is stationary). Note that 
though the BNO080 can continuously attempt to calibrate the gyroscope for ZRO, it is possible to fool the 
calibration algorithms through slow horizontal rotations (around the gravity vector). Placing the device on a stable 
surface will force the ZRO calibration to converge rapidly. The gyroscope calibration algorithm attempts to remove 
ZRO while the device is not on a very stable surface, for this to be successful the device to which the BNO080 is 
mounted must have sufficient tremor such as the human hand. If there is insufficient tremor it is advisable to 
disable the gyroscope calibration to prevent drift (i.e. by mis-calibrating ZRO). ZRO will always be corrected when 
the device becomes very stable (such as when laid on a table). 
3.1.4 Magnetometer 
Magnetometers measure the magnetic field around them and the typical use case is to determine the position of 
the Earth’s magnetic North pole. The magnetic field can be distorted by the presence of magnetic fields caused 
by speakers, magnets etc. (hard-iron effects) or other ferrous materials (soft-iron effects). BNO080 can 
dynamically calibrate the readings from the magnetometer to compensate for these distortions. Without calibration 
the heading reported by BNO080 will be highly suspect so it is highly recommended to calibrate the 
magnetometer. For more information on calibrating the magnetometer, see section 3.2. 
3.1.5 Calibration Accuracy 
The BNO080 provides input reports (see section 1.4.5) to send sensor data to the host microcontroller. The input 
reports include a “Status” field that indicates the accuracy status of the sensor. This is especially useful when the 
application needs to know the calibration status of the BNO080 outputs. Bits 1:0 of the Status field indicate the 
accuracy as shown in Figure 3-1. Refer to the SH-2 Reference Manual [1] for more information. 
Status Bits (1:0) 
Description 
0 
Unreliable 
1 
Accuracy Low 
2 
Accuracy Medium 
3 
Accuracy High 
Figure 3-1: Accuracy status of sensors 










