Skip to content

[Bug]: MCP9600 Driver fails to initialize on Pixhawk 6X #32885

@GiannisA

Description

@GiannisA

Copy and Paste the text below:

Bug Report
MCP9600 Temperature Sensor Driver silently fails to initialize on Pixhawk 6X (bdshot) despite hardware, bus, and silicon ID being verified as 100% functional via Lua.

Issue details
I am attempting to use an MCP9600 temperature sensor on I2C3 (external bus) of a Holybro Pixhawk 6X Baseboard V2. Despite compiling a custom firmware with the MCP9600 driver included, setting the correct parameters, and verifying the hardware works perfectly via Lua scripting, the native C++ driver completely ignores the sensor.

There are no initialization errors in the boot log (it acts as if the driver doesn't exist or isn't attempting to load).

TEMP1_TYPE stays at 2, but the battery temperature output remains at 0.00 and the raw battery_status temperature field reports 32767 (disconnected).

A warm reboot does not resolve the issue, ruling out a slow sensor power-up/early I2C probe issue.

Diagnostic Proof (Hardware is fully functional):
To rule out hardware/wiring issues, I bypassed the C++ driver using the Lua scripting engine (SCR_ENABLE = 1).

Bus Scan: Running an I2C Lua scanner on Bus 3 successfully found the device at address 103 (0x67).

Silicon ID Check: I wrote a Lua script to read register 0x20 (Device ID). It returned exactly 64 (0x40). This proves it is original MCP9600 silicon and should pass the strict ID check at line 38 of AP_TemperatureSensor_MCP9600.cpp.

Lua Driver Bypass: I wrote a custom Lua script to read register 0x00 and push it to a NAMED_VALUE_FLOAT. It successfully outputs highly accurate live temperature data at 1Hz.

Hypothesis:
Either the Custom Firmware Builder is silently stripping the AP_TemperatureSensor_MCP9600 driver from the Pixhawk6X-bdshot target to save space, or there is an internal initialization conflict preventing the driver from binding to the external I2C bus on this specific board.

Version
ArduCopter V4.6.3 (92b0cd7) - bdshot target

Platform
[ ] All
[ ] AntennaTracker
[X] Copter
[ ] Plane
[ ] Rover
[ ] Submarine

Airframe type
QUAD/X

Hardware type
Flight Controller: Holybro Pixhawk 6X (bdshot target)
Baseboard: Holybro Pixhawk Baseboard V2
Sensor: MCP9600 breakout board (Default Address 0x67)

Parameters Set:

TEMP1_TYPE = 2

TEMP1_BUS = 3

TEMP1_ADDR = 103

TEMP1_SRC = 3

TEMP1_SRC_ID = 1

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions