Skip to content

Pixhawk6X: support LSM6DSV-family IMUs on the ICM45686 layout#33758

Open
zebulon-86 wants to merge 2 commits into
ArduPilot:masterfrom
zebulon-86:pr/pixhawk6x-lsm6dsv-board
Open

Pixhawk6X: support LSM6DSV-family IMUs on the ICM45686 layout#33758
zebulon-86 wants to merge 2 commits into
ArduPilot:masterfrom
zebulon-86:pr/pixhawk6x-lsm6dsv-board

Conversation

@zebulon-86

Copy link
Copy Markdown
Contributor

Summary

Support LSM6DSV-family IMUs on Pixhawk6X boards using the existing three-IMU ICM45686 layout.

Classification & Testing (check all that apply and add your own)

  • Checked by a human programmer
  • Non-functional change
  • No-binary change
  • Infrastructure change (e.g. unit tests, helper scripts)
  • Automated test(s) verify changes (e.g. unit test, autotest)
  • Tested manually, description below (e.g. SITL)
  • Tested on hardware
  • Logs attached
  • Logs available on request

Description

Due to ICM45686 supply constraints, Holybro selected LSM6DSV-family
parts as an alternative. Bench and flight testing showed stable
operation and accelerometer and gyroscope behavior consistent with the
ICM45686.

Each IMU slot now probes ICM45686 first, then falls back to the
supported LSM6DSV-family devices declared in the hwdef. This preserves
the existing bus, chip-select, rotation, board type, and defaults while
using the unchanged LSM6DSV-family driver already in master. No new
board ID, target, bootloader, or parameter defaults are introduced.

Testing

Hardware detection

The following Holybro Pixhawk6X IMU populations were tested:

  • 1× ICM45686 + 2× LSM6DSK320X
  • 3× LSM6DSV32X
  • 3× LSM6DSV16X
  • 3× LSM6DSK320X

All four configurations booted normally and exposed three matched
accelerometer/gyroscope device-ID pairs. Each LSM6DSV-family variant was
reported with the expected device type, and the mixed configuration
correctly identified both the ICM45686 and LSM6DSK320X devices.

Device ID tables for the four tested Pixhawk6X IMU populations: mixed ICM45686 and LSM6DSK320X, triple LSM6DSV32X, triple LSM6DSV16X, and triple LSM6DSK320X

INS_ACC_ID and INS_GYR_ID values for the four tested IMU populations.
Device types 62, 66, and 67 correspond to LSM6DSV16X, LSM6DSV32X, and LSM6DSK320X, respectively.

Runtime validation

A bench log was collected from a Pixhawk6X containing one ICM45686
(IMU0) and two LSM6DSK320X IMUs (IMU1 and IMU2). The ICM45686 operated
at about 3.2 kHz and both LSM6DSK320X instances at about 2.0 kHz.
The IMU error and clipping counters remained at zero throughout the
recorded interval, with continuous temperature readings.

During manual board motion, the processed accelerometer and gyroscope
outputs from all three IMUs followed the same motion with closely
aligned trends and peak timing.

Bench-test sampling rates, error counters, temperatures, and clipping counters for one ICM45686 and two LSM6DSK320X IMUs Bench-test health data for the mixed 1× ICM45686 + 2× LSM6DSK320X configuration: sampling rates, IMU error counters, temperatures, and clipping counters. Processed accelerometer and gyroscope comparison for one ICM45686 and two LSM6DSK320X IMUs during manual board motion

Processed accelerometer and gyroscope outputs from the ICM45686
and two LSM6DSK320X IMUs during manual board motion.

No flight test was repeated on the exact PR revision because this is a
target-only change. The same LSM6DSV sensor configuration and runtime
data path were previously flight-tested on earlier firmware revisions,
including a mixed ICM45686 and LSM6DSK320X configuration, with consistent
IMU behavior and normal attitude and EKF performance.

This PR only changes board detection and hwdef probe declarations.
Ground hardware testing on the current revision directly covers the
affected detection, initialization, device identity, sampling, health,
and orientation behavior.

Notes

Allow each of the three IMU slots to detect either ICM45686 or a
supported LSM6DSV-family device.
Add LSM6DSV SPI aliases and fallback probes while preserving the
existing slot rotations.
@zebulon-86
zebulon-86 marked this pull request as ready for review July 17, 2026 10:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant