Skip to main content

IMU Sensors

The 305ap has two 6-axis IMUs (accelerometer + gyroscope) mounted on the top of the board. Each IMU slot supports two pin-compatible parts — the firmware probes at boot and starts whichever part is populated.

IMU 1IMU 2
Primary partLSM6DSV (ST)LSM6DSV (ST)
Fallback partICM-45686 (InvenSense)ICM-45686 (InvenSense)
BusSPI2SPI3

Hardware

SignalIMU 1IMU 2
CSPE4PA14
SCLKPD3PB3
MOSIPC1PB2
MISOPC2_CPB4
DRDY (INT1)PE0PC15
INT2PD4PA13

The LSM6DSV and ICM-45686 use the same footprint and share the same CS, DRDY, and SPI bus lines on each slot. No hardware rework is needed to swap between parts.

Auto-detection

At boot, the firmware tries to start the LSM6DSV on each bus first. If the WHO_AM_I read fails (part not populated), it falls back to the ICM-45686. This happens independently for each IMU slot, so mixed builds (one slot each) are supported.

To confirm which parts were detected, check the MAVLink console after boot:

lsm6dsv status
icm45686 status

Or watch the boot log — each driver prints its device name and bus on successful start.

Orientation

Both IMU slots have the same physical orientation. The LSM6DSV and ICM-45686 datasheets show the same axis convention for this footprint, so both parts use the same rotation: YAW_90 (-R 2), with pin 1 at top-left, chip X pointing right, chip Y pointing forward.

If the board is mounted at a different angle in the frame, set the rotation in PX4:

  • IMU_1_ROT: rotation for IMU 1
  • IMU_2_ROT: rotation for IMU 2

Redundancy

PX4 runs sensor voting across both IMUs. If one IMU reports data that diverges significantly from the other, PX4 will flag it and fall back to the healthy sensor. This is logged in flight logs as an IMU voting event.

Checking IMU Data in QGroundControl

To verify both IMUs are reporting:

  1. Open QGC → Analyze Tools → MAVLink Inspector
  2. Look for RAW_IMU and SCALED_IMU2 messages
  3. Both should show non-zero gyro and accelerometer values

Or in the MAVLink Console:

listener sensor_accel
listener sensor_gyro

Multiple instances (instance 0 and instance 1) confirm both IMUs are active.

Sensor Specifications

ST LSM6DSV (primary)

SpecificationValue
Axes3-axis accelerometer + 3-axis gyroscope
Host interfaceSPI, I2C, I3C
FIFOUp to 4 KB
Interrupts2 programmable interrupt pins (INT1 / INT2)
Accelerometer range±2 / ±4 / ±8 / ±16 g
Gyroscope range±125 / ±250 / ±500 / ±1000 / ±2000 / ±4000 dps

TDK InvenSense ICM-45686 (fallback)

SpecificationValue
Axes3-axis accelerometer + 3-axis gyroscope
Host interfaceSPI (primary), I2C, I3C
FIFOUp to 8 KB
Interrupts2 programmable interrupt pins (INT1 / INT2)
Accelerometer rangeConfigurable
Gyroscope rangeConfigurable

Both IMUs are powered from the quiet 3.3 V LDO rail (RT9193), isolated from the main digital 3.3 V switcher via a ferrite bead.

Vibration

Use soft-mount standoffs between the FC and the frame for best results. Review vibration levels post-flight in QGC → Analyze → Log Files → Vibration.