Skip to main content

Firmware variants

The BHI385 IMU chip can handle processing directly on-board, which is why Bosch Sensortec offers several firmware variants tailored for different projects. You can find the full list of firmware versions in their GitHub repository.


Understanding the Firmware Names

Here is how to read a firmware file name, using Bosch_Shuttle3_BHI385_BMM350C_bsxsam_ndof.fw.h as an example:

  • Bosch_Shuttle3_BHI385: Designed for the Bosch Shuttle Board 3.0 with the BHI385 as the primary sensor.
  • _BMM350C (or BMP58X, BME688): Supports external slave sensors connected directly to the BHI385.
  • _bsxsam (or *_lite, *_turbo, *_lite_Klio): Includes the full Bosch BSX Sensor Fusion library. It does all the math to turn raw sensor data into clean, usable physical orientation tracking.
    ℹ️
    *_Klio offers the Klio machine learning engine to learn repetitive motions and recognize activities, like gym exercises.
  • _ndof: N-degrees of Freedom. This usually means 9-DoF absolute orientation fusion if you connect the BMM350 magnetometer.
  • .fw.h (.fw): A C/C++ header version of the binary file, wrapped in a const unsigned char array so you can include it directly in your Arduino or embedded projects.

Choosing the Right Firmware

You can change the BHI385's firmware depending on what your project needs.

Firmware variantUse when...
bsxsam_liteYou only need accelerometer and gyroscope. It saves the most memory (smallest footprint).
bsxsamYou want accelerometer and gyroscope data combined with full BSX sensor fusion.
bsxsam_turboYou need a high output data rate (up to 800 Hz) with BSX fusion.
bsxsam_lite_KlioYou need accelerometer, gyroscope, and Klio motion pattern recognition.

Writing Your Own Firmware

Why write custom firmware? You might want to create your own firmware if you need to:

  • Create a virtual sensor: Calculate specific metrics directly on the chip, like golf swing angles or precise vibration patterns.
  • Connect unsupported hardware: Write custom drivers for new external sensors connected to the BHI385's master I2C or SPI pins.
  • Free up your main microcontroller: Move heavy math and filtering from your ESP32 or STM32 to run entirely inside the low-power BHI385.

To build your own firmware, you will need Bosch's official development tools:

  1. Bosch BHI3xx SDK (Software Development Kit): A C-based development kit with the framework, RTOS headers, and drivers.
  2. ARC GNU Toolchain: Required because the BHI385 runs on a Synopsys ARC EM4 architecture. You can download it here.
  3. Bosch Motion AI Studio: Use this to design, train, and run custom machine learning models (like gesture recognition) directly on the sensor.

For a step-by-step guide, check out the BHI3xx SDK Quick Start Guide.