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
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.
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).
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: