PM08-CAN Power Modules — No BatteryInfo Broadcast on Latest AP_Periph Firmware (HolybroF4_PMU)

Looking for guidance from the community before pursuing RMA. I have two Holybro PM08-CAN modules in a dual-redundant configuration that are visible on the DroneCAN bus as OPERATIONAL but are not broadcasting any `uavcan.equipment.power.BatteryInfo` messages — only `uavcan.protocol.NodeStatus` heartbeats. The flight controller therefore reports zero voltage with a “Bad Battery” prearm error.

- **Flight controller:** CubeOrange Plus on Airbot Mini Carrier Board v1.3

- **ArduCopter version:** 4.6.3 (92b0cd78)

- **Power modules:** 2× Holybro PM08-CAN, hardware version 21.25

  • Left PM08-CAN → carrier POWER1 (6-pin Molex CLIK-Mate, 4 wires used: 2×VCC + 2×GND on pins 1, 2, 5, 6)

  • Right PM08-CAN → carrier POWER2 (same 4-wire config)

  • Both PM08 4-pin CAN cables → Holybro DroneCAN Hub (CAN_H, CAN_L, GND only; VCC pin removed because hub is fed 12V from APD PDB500)

- **Other DroneCAN nodes on bus:** 2× Holybro H-RTK F9P GPS (G4-based)

- **Main pack:** 6S, confirmed flowing through PM08 XT90 in/out path (multimeter verified at PM08 input terminals)

- **CAN bus baudrate:** 1 Mbps standard

## Firmware tested

**Original (working at firmware level, not broadcasting):**

- Holybro stock firmware: SW version `1.9.A2FA7A3A`, identifier `org.ardupilot.f405_HolybroPMU`

**Current (after attempting fix):**

- ArduPilot AP_Periph latest stable from `firmware.ardupilot.org/AP_Periph/stable/HolybroF4_PMU/AP_Periph.apj`

- Flashed via DroneCAN GUI Tool’s Update Firmware function

- Both PM08s came back OPERATIONAL on the bus after flash

- Software version visible in node info changed (flash confirmed successful)

**Result on both firmware versions:** zero BatteryInfo messages broadcast, only NodeStatus heartbeats at ~1 Hz.

-–

## What I’ve verified

**On the bus (via DroneCAN GUI Tool Bus Monitor and Mission Planner UAVCAN Inspector):**

- Both PM08s appear as nodes 120 and 122, Mode: OPERATIONAL, Health: OK, uptime increments normally

- Both publish `uavcan.protocol.NodeStatus` only (~7 Bps each)

- No `uavcan.equipment.power.BatteryInfo` messages at any rate from either node

- GPS nodes 124 and 125 broadcasting normally (~143–263 Bps each, MovingBaselineData, MagneticFieldStrength, Fix2)

- ArduPilot node 10 broadcasting normally (NotifyState, SafetyState, ArmingStatus)

**PM08 internal parameters (verified identical on both nodes via DroneCAN GUI Tool Fetch All):**

- `BATT_MONITOR = 8`

- `BATT_HIDE_MASK = 0`

- `BATT_CAPACITY = 10000`

- `BATT_SERIAL_NUM = 120` (and 122 on the other)

- `BRD_SERIAL_NUM = 120` (and 122)

- `CAN_NODE = 120` (and 122)

- `CAN_BAUDRATE = 1000000`

- `OPTIONS = 0 (tested with 1, no difference)

- `TEMP_MSG_RATE = 1` (tested 0 and 1, no difference)

**FC-side parameters:**

- `BATT_MONITOR = 8`

- `BATT2_MONITOR = 8`

- `BATT_SERIAL_NUM = 120`, `BATT2_SERIAL_NUM = 122` (also tested with -1 auto-assign)

- `CAN_P1_DRIVER = 1`

- `CAN_D1_PROTOCOL = 1`

- `BRD_BOOT_DELAY = 3000`

- Full FC parameter reset to defaults and reconfigured from scratch — no change

**Hardware:**

- Main pack voltage confirmed at PM08 XT90 input terminals on both modules (multimeter under load)

- 5V rail from PM08 to carrier POWER1/POWER2 confirmed (carrier boots normally on PM08 power)

- Both PM08s receive 5V from the FC carrier via the 6-pin cable

- No reverse polarity, no overvoltage events on this build

-–

## Key observation — features.txt analysis

Reviewing `firmware.ardupilot.org/AP_Periph/latest/HolybroF4_PMU/features.txt`, the following battery-related features are explicitly disabled in the current AP_Periph stable build:

- `!AP_BATTERY_ANALOG` (analog voltage divider sense)

- `!AP_BATTERY_INA2XX_ENABLED`

- `!AP_BATTERY_INA3221_ENABLED`

- `!AP_BATTERY_FUELLEVEL_ANALOG_ENABLED`

- `!AP_BATTERY_SUM_ENABLED`

- `!AP_BATTERY_FUELFLOW_ENABLED`

Only `AP_BATTERY_SMBUS_ENABLED` remains active.

Holybro support clarified that INA2XX and INA3221 are intentionally disabled because the PM08-CAN hardware doesn’t include those chips — which makes sense. However, this leaves an open question: **what driver actually reads voltage and current on the PM08-CAN, and is that driver compiled into the current AP_Periph build for HolybroF4_PMU?**

If the PM08-CAN reads voltage via the F405’s onboard ADC through an internal voltage divider, that would map to `AP_BATTERY_ANALOG` — which is disabled. If it uses a custom code path within the Holybro PMU firmware that doesn’t depend on the standard AP_Battery library backends, then the features.txt disable flags may be irrelevant and the issue lies elsewhere.

-–

## What I’m asking

1. **Has anyone successfully gotten the current AP_Periph stable build (HolybroF4_PMU target) to broadcast BatteryInfo on a PM08-CAN?** If yes, what configuration step did I miss?

2. **Does the PM08-CAN broadcast voltage via the standard AP_Battery library, or via custom Holybro firmware code that’s separate from the disabled drivers in features.txt?**

3. **Is there a known-good firmware build (— either an older AP_Periph version or a Holybro-maintained fork) that has full BatteryInfo broadcast support for the PM08-CAN?** If so, where can I obtain it?

4. **Is there a calibration step or DroneCAN service call required after firmware flash to enable voltage reporting?** I haven’t found this documented anywhere.

Happy to provide additional logs, parameter dumps, Bus Monitor captures, or screenshots if helpful. Both modules behave identically, which suggests this is firmware/configuration rather than hardware fault.

Thanks in advance for any insight.