The Fermion BMI323 6DOF IMU Sensor is a 6-axis inertial motion sensor module based on the Bosch BMI323. It integrates a 3-axis accelerometer and a 3-axis gyroscope, making it suitable for motion detection, tilt recognition, angular velocity measurement, step counting, and embedded motion data acquisition.
For embedded developers, robotics developers, wearable developers, and hardware makers, they usually focus on a few questions when choosing an IMU module:
To help developers intuitively understand the performance of the Fermion BMI323 in practical development environments, the DFRobot engineering team conducted basic functional tests on this module, including 6-axis data reading, accelerometer stability, gyroscope response, hardware step counting, and I2C address switching.
This article is an engineering test note, mainly intended to demonstrate the actual performance of the module in common development scenarios, rather than a laboratory calibration report.
| Item | Configuration |
| Main Controller Board | FireBeetle 2 ESP32-C5 |
| Sensor Module | Fermion BMI323 6DOF IMU Sensor |
| Communication Method | I2C |
| Default I2C Address | 0x69 |
| Optional I2C Address | 0x68 |
| Test Library | DFRobot_BMI323 |
| Example Used | SixAxisData, StepCounter, I2C Scanner |

The most fundamental function of an IMU module is to output acceleration and angular velocity data. For robotic posture detection, motion interaction, wearables, and embedded motion acquisition projects, the sensor needs to be able to initialize stably and continuously output 3-axis acceleration and 3-axis gyroscope data.
The test uses the SixAxisData example from the DFRobot_BMI323 library to read the acceleration and gyroscope data of the BMI323 via I2C.
During the test, the module was kept stationary, moved, tilted,and rotated to observe whether the serial port output changes with the posture and motion state.
The module initialized normally and continuously output acceleration and angular velocity data.
When the module's posture or motion state changes, the Accel and Gyro data change accordingly, indicating that basic I2C communication, sensor initialization, and 6-axis data reading functions are working properly.

This test shows that the Fermion BMI323 can serve as a basic motion input module for platforms like Arduino, ESP32, Raspberry Pi, etc., to read acceleration, angular velocity, posture changes, and motion state data.
Suitable projects include:
In tilt detection, posture determination, and robot state monitoring, the stability of acceleration readings in a static state is very important.
When the module is placed horizontally and kept static, under ideal conditions:
This test is used to verify whether the static output of the module is stable under different acceleration ranges.
The test configures the four measurement ranges of the BMI323 accelerometer respectively:
The module is placed horizontally and kept static to observe the X/Y/Z triaxial acceleration output.
Under the four measurement ranges of ±2g, ±4g, ±8g, and ±16g, when the module is placed horizontally and kept static, the X/Y axis readings are close to 0g, and the Z-axis reading is close to 1g, with stable overall output.
This indicates that the module performs stably in basic static posture detection scenarios, making it suitable for applications such as tilt detection, posture change determination, and robot horizontal status detection.
(±2g Range Configuration)

(±4g Range Configuration)

(±8g Range Configuration)

(±16g Range Configuration)

Different acceleration ranges are suitable for different application scenarios:
| Acceleration Range | Recommended Application |
| ±2g | Tilt detection, static posture recognition, slow motion |
| ±4g | General motion detection, handheld devices, interactive projects |
| ±8g | Small robots, wearable devices, more obvious motion |
| ±16g | Shock detection, vibration detection, fast motion |
For tilt detection or slow attitude changes, lower ranges can provide finer reading resolution. For shock, vibration, or fast motion, higher ranges can prevent data saturation.
The gyroscope is used to detect angular velocity and is a key data source in robot steering, attitude changes, gesture recognition, and motion control.
When stationary, the gyroscope output should be close to 0°/s. When rotating the module, the angular velocity of the corresponding axis should change with the direction and speed of rotation. After stopping rotation, the reading should return to close to 0°/s.
The gyroscope test configuration is as follows:
| Parameter | Configuration |
| Range | ±2000°/s |
| Mode | Normal |
The test is divided into two parts:
When the module is stationary, the triaxial gyroscope data remains within the range of a few tenths of a °/s, which is overall stable.
When the module rotates, the angular velocity reading of the corresponding axis changes with the rotation direction and speed. After stopping rotation, the data can quickly return to close to 0°/s.
This indicates that the Fermion BMI323 performs stably in basic angular velocity detection scenarios, making it suitable for projects such as small robot steering feedback, handheld controllers, motion interaction, and attitude change detection.
Actual Effect




Different gyroscope ranges are suitable for different motion speeds:
| Gyroscope Range | Recommended Applications |
| ±125°/s | Slow tilting, low-speed attitude changes |
| ±250°/s | General direction change detection |
| ±500°/s | Robot motion feedback, handheld control |
| ±1000°/s | Fast gestures, dynamic motion |
| ±2000°/s | High-speed rotation, UAVs, intense motion testing |
For most robot and handheld device projects, ±500°/s can be used as the initial configuration. For fast rotation or UAV applications, it is recommended to select ±1000°/s or ±2000°/s.
The BMI323 has a built-in hardware step counter function, which can perform some motion event recognition at the sensor side, reducing the main controller's burden of continuously processing motion data.
This function is suitable for wearable devices, activity detection devices, low-power motion nodes, and motion interaction prototypes.
The test uses the StepCounter example from the DFRobot_BMI323 library, enabling the hardware step counter function of the BMI323 and reading the accumulated step count.
During the test, the module is shaken at a fixed amplitude to simulate walking motion, and whether the accumulated step count increases is observed.
Under simulated walking motion, the module can output the accumulated step count.
During the test, not every shake is recognized as a step because the step-counting algorithm filters out invalid vibrations and non-walking movements. This filtering mechanism is meaningful for practical wearable applications, as it reduces false triggers.
The actual step-counting effect is affected by the fixing method, wearing position, range of motion, enclosure structure, and movement patterns. For products that require high-precision step counting, secondary verification should be performed under the target structure and actual wearing method.
Actual Effect

The hardware step counter function is suitable for:
If the target application is fitness tracking or long-term step recording, it is recommended to conduct multiple rounds of testing under the actual wearing position, combined with the device structure and target user action characteristics for verification.
In actual embedded projects, multiple sensors may be connected to the same I2C bus. If two devices use the same address, an address conflict will occur.
The Fermion BMI323 supports I2C address switching, allowing for more flexible integration into multi-sensor systems.
Test using the I2C Scanner program to scan the bus device address, testing the module address pad in both disconnected and soldered states respectively.
Address switching function is normal:
| Address Pad Status | I2C Address |
| Pad Disconnected | 0x69 |
| Pad Soldered | 0x68 |
When another device in the system already occupies the 0x69 address, the BMI323 can be switched to 0x68 to reduce the risk of I2C address conflicts.
Actual Effect


This engineering test verified the basic functional performance of the Fermion BMI323 6DOF IMU Sensor in common development scenarios:
| Test Item | Result |
| 6-axis acceleration and angular velocity data reading | Pass |
| Acceleration static stability | Pass |
| Gyroscope static zero bias and dynamic response | Pass |
| Hardware step counting | Pass |
| I2C address switching | Pass |
Overall, the Fermion BMI323 is suitable for small robots, wearable devices, motion detection, low-power activity recognition, I2C multi-sensor systems, and embedded product prototype verification.
If the project requires stable reading of 6-axis acceleration and angular velocity data, the use of hardware step-counting functions, reduction of I2C address conflicts, and integration of the IMU into compact devices, this module can serve as a practical development choice.
For time-sensitive applications such as high-speed sampling, strict sample rate control, closed-loop control, or vibration analysis, developers are advised to perform individual validation in combination with the target controller, library version, and actual I2C bus configuration.
Yes. The module is small in size, supports low-power motion detection, and features hardware step counting, activity recognition, tilt, and motion event detection capabilities, making it suitable for wearable device prototyping.
Yes. The module's default address is 0x69, and it can also be switched to 0x68 via the address pad to reduce I2C address conflicts.
No, it is not equivalent. The BMI323 provides hardware step counting capabilities, but the actual step counting accuracy will be affected by the wearing position, fixing method, motion range, enclosure structure, and algorithm configuration. It is still recommended to validate consumer-grade step counting applications in the final device form.
No. The BMI323 is a 6-axis IMU, containing an accelerometer and a gyroscope, but no magnetometer. For absolute heading angle or electronic compass applications, a 9-axis IMU is recommended.
No. Altitude-related applications typically require a barometer or other altitude reference sensors. This module does not contain a barometric pressure sensor.