DroneCAN BMS

DroneCAN BMS node online but battery_status never updates (PX4 1.17, Pixhawk 6C)

I have a custom DroneCAN BMS node (STM32F446RE + STEVAL-114BMSTX, libcanard, node ID 40) broadcasting BatteryInfo at 2 Hz and NodeStatus at 1 Hz. In uavcan status, node 40 shows Online / OK / OPERATIONAL, but listener battery_status never changes - same values, same timestamp, no matter how long I wait or how many times I re-run it.

Relevant stats from uavcan status:

Transfer errors:   2052
RX transfers:      1667
CAN1: HW errors 2188, IO errors 2188, RX frames 4641
CAN2: HW errors 15415, IO errors 15415, RX frames 0

CAN1 has roughly a 47% frame error rate. My guess is NodeStatus (single CAN frame) gets through often enough to look healthy, while BatteryInfo (multi-frame message) fails to reassemble because any single corrupted frame kills the whole transfer - so PX4 just keeps the last transfer that fully arrived intact.

Does that match how the DroneCAN driver handles multi-frame transfers? And is Transfer errors the right counter to watch for this? Also curious why CAN2 shows heavy errors with 0 RX frames when only CAN1 has anything physically connected - is that expected/ignorable, or worth investigating? Termination measures a correct 60 ohm across CANH/CANL, so I don’t think that’s it. Any pointers appreciated.