Skip to content

CAN PMU Firmware Upgrade ​

Firmware updates add features and improve performance. Before upgrading, complete the wiring described in the CAN PMU overview.

NOTE

ArduPilot AC4.0 / AP4.0 and later support upgrading and debugging UAVCAN devices through the controller (PX4 firmware does not). The steps below require that firmware version or newer.

Parameter setup ​

Enable CAN PMU on the controller (CAN_P1_DRIVER set to 1), then set the following parameters to enable CAN SLCAN:

CUAV V5+ / V5 Nano

  • CAN_SLCAN_CPORT set to 1
  • SERIAL7_PROTOCOL set to 22
  • Reboot the controller

NOTE

Under AP4.0 and later, CUAV V5 / V5 Nano / FMU V5 expose two USB serial ports: one for MAVLink, one for SLCAN. If only one appears, reinstall the USB driver.

Pixhack series / FMU V2 / FMU V3 / FMU V4

  • CAN_SLCAN_CPORT set to 1
  • CAN_SLCAN_TIMEOUT set to 130000
  • CAN_SLCAN_SERNUM set to 0
  • Do not reboot until the upgrade finishes

NOTE

STM32F4 does not support dual virtual USB ports, so controllers below FMU V5 can only use SLCAN after MAVLink transmission is disabled. With the settings above the USB port stops outputting MAVLink and becomes an SLCAN port; MAVLink resumes after a reboot.

Wiring ​

CAN PMU upgrade wiring

  • Connect the CAN and Power cables
  • Connect the controller to the PC over USB and power the CAN PMU from a battery

Upgrade procedure ​

Method 1: Mission Planner ​

ArduPilot firmware download

Select the SLCAN port

  1. Select the device port that corresponds to SLCAN
  2. In the UAVCAN view, click slcan mode CAN1
  3. Click Update and choose No in the dialog (Yes selects online firmware, No selects a local file)
  4. Select the firmware file

Select the firmware

  1. Wait for the flashing to finish

Method 2: UAVCAN GUI Tool ​

UAVCAN GUI Tool download

  1. Select the SLCAN device port and click OK

Select the port

  1. Click √, then double-click the device entry

Device list

  1. Click Update Firmware and confirm with Yes

Start the upgrade

  1. mode / health / uptime change to Software_update

Upgrading

  1. Wait for the flashing to finish

Upgrade complete