| .. SPDX-License-Identifier: GPL-2.0 |
| |
| ============================== |
| BNO055 driver |
| ============================== |
| |
| 1. Overview |
| =========== |
| |
| This driver supports Bosch BNO055 IMUs (on both serial and I2C busses). |
| |
| Accelerometer, magnetometer and gyroscope measures are always provided. |
| When "fusion_enable" sysfs attribute is set to 1, orientation (both Euler |
| angles and quaternion), linear velocity and gravity vector are also |
| provided, but some sensor settings (e.g. low pass filtering and range) |
| became locked (the IMU firmware controls them). |
| |
| This driver supports also IIO buffers. |
| |
| 2. Calibration |
| ============== |
| |
| The IMU continuously performs an autocalibration procedure if (and only if) |
| operating in fusion mode. The magnetometer autocalibration can however be |
| disabled writing 0 in the sysfs in_magn_calibration_fast_enable attribute. |
| |
| The driver provides access to autocalibration flags (i.e. you can known if |
| the IMU has successfully autocalibrated) and to the calibration data blob. |
| |
| The user can save this blob in a firmware file (i.e. in /lib/firmware) that |
| the driver looks for at probe time. If found, then the IMU is initialized |
| with this calibration data. This saves the user from performing the |
| calibration procedure every time (which consist of moving the IMU in |
| various way). |
| |
| The driver looks for calibration data file using two different names: first |
| a file whose name is suffixed with the IMU unique ID (exposed in sysfs as |
| serial_number) is searched for; this is useful when there is more than one |
| IMU instance. If this file is not found, then a "generic" calibration file |
| is searched for (which can be used when only one IMU is present, without |
| struggling with fancy names, that change on each device). |
| |
| Valid calibration file names would be e.g. |
| bno055-caldata-0e7c26a33541515120204a35342b04ff.dat |
| bno055-caldata.dat |
| |
| In non-fusion mode the IIO 'offset' attributes provide access to the |
| offsets from calibration data (if any), so that the user can apply them to |
| the accel, angvel and magn IIO attributes. In fusion mode they are not |
| needed (the IMU firmware internally applies those corrections) and they |
| read as zero. |