MAVLINKHUD

Overview

The CAN parameter group configures the Controller Area Network (CAN) interfaces on the autopilot. CAN is a robust, differential signaling bus used for connecting critical peripherals (GPS, Compass, ESCs, Servos) with high reliability and noise immunity.

ArduPilot supports multiple CAN drivers (CAN_Dn_...), each mapped to a physical port (CAN_Px_...).

Key Concepts

1. Port vs. Driver

  • Port (CAN_Px_...): Configures the physical layer (Bitrate, Electrical).
    • CAN_P1_DRIVER: Assigns a logical driver (1 or 2) to physical port 1.
    • CAN_P1_BITRATE: Speed (typically 1000000 for 1Mbit).
  • Driver (CAN_Dx_...): Configures the protocol layer (DroneCAN, PiccoloCAN, KDE, etc.).
    • CAN_D1_PROTOCOL: Selects the language spoken on this driver (1 = DroneCAN).

2. DroneCAN (formerly UAVCAN)

The most common protocol.

  • CAN_Dn_UC_NODE: The Node ID of the autopilot itself.
  • CAN_Dn_UC_ESC_BM: Bitmask to detect DroneCAN ESCs.

3. CAN FD (Flexible Data-Rate)

Newer H7 boards support CAN FD for higher speeds (up to 5Mbit).

  • CAN_P1_FDBITRATE: Data phase bitrate.
  • CAN_FDMODE: Enables FD frame format.

Parameter Breakdown

Physical Layer

  • CAN_P1_DRIVER: 0=Disabled, 1=First Driver, 2=Second Driver.
  • CAN_P1_BITRATE: 1000000 (1Mbit) is standard.

Protocol Layer (Driver 1)

  • CAN_D1_PROTOCOL:
    • 1: DroneCAN
    • 4: PiccoloCAN
    • 7: KDECAN
    • 10: ToshibaCAN
  • CAN_D1_UC_OPTION: Options for DroneCAN (e.g., enable DNA server).

Integration Guide

Setting up a DroneCAN GPS (Here3)

  1. Driver: Set CAN_P1_DRIVER = 1.
  2. Protocol: Set CAN_D1_PROTOCOL = 1 (DroneCAN).
  3. GPS Type: Set GPS_TYPE = 9 (DroneCAN).
  4. Compass: Set COMPASS_TYPEMASK to allow DroneCAN (usually default).
  5. Reboot: The GPS should appear.

Troubleshooting

  • No Devices: Check termination. A 120-ohm resistor is required at each end of the CAN bus.
  • Node ID Conflicts: Use the "DroneCAN/UAVCAN" inspector in Mission Planner to see active nodes.

Developer Notes

  • Library: libraries/AP_CANManager
  • Tunnels: Support for tunneling Serial-over-CAN (CAN_D1_UC_SER_EN).

CAN_D1_PC_ECU_ID

Default 0
Range 0 255

PiccoloCAN ECU Node ID (CAN_D1_PC_ECU_ID)

Description

CAN_D1_PC_ECU_ID identifies the destination for engine control commands over PiccoloCAN.

  • 0: Disabled.
  • 1-254: Specific ECU Node ID.
  • 255: Broadcast to all ECUs.

Tuning & Behavior

  • Default Value: 0.
  • Recommendation: Match the ID configured in your Piccolo ECU.

CAN_D1_PC_ECU_RT

Hz
Default 50
Range 1 500

PiccoloCAN ECU Output Rate (CAN_D1_PC_ECU_RT)

Description

CAN_D1_PC_ECU_RT sets the update frequency for an internal combustion engine's Electronic Control Unit (ECU) connected via PiccoloCAN.

CAN_D1_PC_ESC_BM

Default 0
Range 0 4294967295

PiccoloCAN ESC Bitmask (CAN_D1_PC_ESC_BM)

Description

CAN_D1_PC_ESC_BM identifies which motor channels use the PiccoloCAN protocol.

PiccoloCAN is a specialized CAN protocol used primarily in industrial and long-endurance airframes. This bitmask tells ArduPilot which of the internal motor outputs should be translated into PiccoloCAN commands on this driver.

Tuning & Behavior

  • Default Value: 0.

CAN_D1_PC_ESC_RT

Hz
Default 50
Range 1 500

PiccoloCAN ESC Output Rate (CAN_D1_PC_ESC_RT)

Description

CAN_D1_PC_ESC_RT sets the update speed for motors connected via the PiccoloCAN protocol.

  • Higher Value (400-500Hz): Provides faster motor response and better flight stability, similar to high-speed DShot.
  • Lower Value (50Hz): Standard update rate.

Tuning & Behavior

  • Recommendation: Set to 400 for high-performance multirotors. Ensure your PiccoloCAN ESCs support the requested frequency.

CAN_D1_PC_SRV_BM

Default 65535
Range 0 65535

PiccoloCAN Servo Bitmask (CAN_D1_PC_SRV_BM)

Description

CAN_D1_PC_SRV_BM selects which servos on the drone are controlled via the PiccoloCAN network.

  • Bit 0 (1): Servo 1
  • Bit 1 (2): Servo 2
  • ...

Tuning & Behavior

  • Default Value: 65535 (All 16 channels enabled).

CAN_D1_PC_SRV_RT

Hz
Default 50
Range 1 500

PiccoloCAN Servo Output Rate (CAN_D1_PC_SRV_RT)

Description

CAN_D1_PC_SRV_RT defines the update frequency for control surfaces (ailerons, elevators) using PiccoloCAN servos.

CAN_D1_PROTOCOL

Default 1

Primary protocol for virtual driver 1 (CAN_D1_PROTOCOL)

Description

Defines the software protocol (e.g., DroneCAN, PiccoloCAN) used by the first virtual CAN driver.

Tuning & Behavior

  • Default Value: 1 (DroneCAN)
  • Values: 0:Disabled, 1:DroneCAN, 4:PiccoloCAN, 6:EFI_NWPMU, 8:KDECAN, 10:Scripting

CAN_D1_PROTOCOL2

Default 0
Range 0 12

CAN Driver 1 Protocol 2 (CAN_D1_PROTOCOL2)

Description

CAN_D1_PROTOCOL2 allows "Dual Mode" operation on a single CAN bus.

Typically, you can only run one protocol per bus (e.g., DroneCAN). However, some protocols use different message ID lengths (29-bit vs 11-bit) and can coexist. This parameter allows you to enable a secondary 11-bit protocol (like some BMS or ESC telemetry formats) on the same wires as your main DroneCAN network.

  • 0: Disabled.
  • 10: EFL_ESCORP. 11-bit ESC telemetry.

CAN_D1_UC_ESC_BM

Default 0
Range 0 4294967295

DroneCAN ESC Bitmask (CAN_D1_UC_ESC_BM)

Description

CAN_D1_UC_ESC_BM maps specific ArduPilot servo output channels to DroneCAN ESC commands.

If you have 4 DroneCAN ESCs controlling motors 1-4, you must set this bitmask to include channels 1, 2, 3, and 4. This tells the flight controller: "Don't send PWM for these motors; send a digital CAN message instead."

  • Bit 0 (1): Motor/Servo 1
  • Bit 1 (2): Motor/Servo 2
  • Bit 2 (4): Motor/Servo 3
  • Bit 3 (8): Motor/Servo 4

The Engineer's View

Defined in AP_DroneCAN.cpp.
When a bit is set, the standard PWM output for that channel is suppressed (or acts as a backup, depending on configuration), and uavcan.equipment.esc.RawCommand messages are broadcast on the CAN bus.

Tuning & Behavior

  • Default Value: 0
  • QuadCopter (Motors 1-4): Set to 15 (1+2+4+8).
  • HexaCopter (Motors 1-6): Set to 63.

CAN_D1_UC_ESC_OF

Default 0
Range 0 18

DroneCAN ESC Offset (CAN_D1_UC_ESC_OF)

Description

CAN_D1_UC_ESC_OF shifts the motor numbering on the CAN bus.

If you have 8 motors, but your CAN ESCs are programmed as IDs 9 through 16, you can use this offset to align the autopilot's internal motor 1 with CAN ID 9.

Tuning & Behavior

  • Default Value: 0.

CAN_D1_UC_ESC_RV

Default 0
Range 0 4294967295

DroneCAN Reversible ESC Bitmask (CAN_D1_UC_ESC_RV)

Description

CAN_D1_UC_ESC_RV identifies which CAN-based ESCs support reversing their motor direction in real-time.

  • Standard ESC: Only accepts 0..100% speed.
  • Reversible ESC: Accepts -100%..+100% speed.

Tuning & Behavior

  • Default Value: 0.
  • Recommendation: Set bits for all motors that need to provide reverse thrust (e.g., for 3D quads or rovers).

CAN_D1_UC_NODE

Default 0
Range 0 125

DroneCAN Node ID (CAN_D1_UC_NODE)

Description

CAN_D1_UC_NODE sets the autopilot's own address on the DroneCAN network.

Every device on the bus (GPS, ESC, Battery) needs a unique ID.

  • 0 (Default): Dynamic allocation. The autopilot will claim the first available ID (usually 10).
  • 1-125: Fixed ID.

Tuning & Behavior

  • Recommendation: Leave at 0 for most setups. If you have a complex network with many devices and want to enforce a strict ID map, set this to a fixed value (e.g. 10).

CAN_D1_UC_NTF_RT

Hz
Default 20
Range 1 200

DroneCAN Notify Transmit Rate (CAN_D1_UC_NTF_RT)

Description

CAN_D1_UC_NTF_RT controls how often the flight controller updates CAN-based status lights (LEDs) and buzzers.

If you are using a CAN LED (like the NeoPixel modules on some GPS units), this setting determines the smoothness of color transitions and how quickly the lights react to mode changes or arming events.

Tuning & Behavior

  • Default Value: 20 Hz.
  • Recommendation: Leave at 20 Hz. This is fast enough for smooth visual feedback without wasting bus bandwidth.

CAN_D1_UC_OPTION

Default 0
Range 0 1024

DroneCAN Options (CAN_D1_UC_OPTION)

Description

CAN_D1_UC_OPTION provides advanced configuration flags for the DroneCAN stack.

  • 1 (Bit 0): Clear DNA Database. Force re-allocation of Node IDs on next boot.
  • 4 (Bit 2): Enable CAN FD (Flexible Data-rate) if supported by hardware.
  • 16 (Bit 4): Send Servo output as raw PWM (instead of normalized -1..+1).

Tuning & Behavior

  • Default Value: 0
  • Recommendation:
    • CAN FD: Enable this if you have CAN FD peripherals (requires H7 or G4 processor).
    • DNA Reset: Set to 1 and reboot if you have duplicate Node ID errors. It will clear itself back to 0.

CAN_D1_UC_POOL

bytes
Default 8192
Range 1024 32768

DroneCAN Memory Pool Size (CAN_D1_UC_POOL)

Description

CAN_D1_UC_POOL sets the RAM budget for the DroneCAN communications stack.

The CAN bus is a "Message Based" network. As more devices (GPS, Compass, ESCs) send data, the flight controller needs a larger buffer to store and process those messages. If this pool is too small, messages will be dropped, leading to "Sensor Unhealthy" errors or sluggish control.

The Engineer's View

Defined in AP_DroneCAN.cpp.
This memory is allocated from the system heap during driver initialization. It is used by the libcanard library to manage the transfer buffers and reassemble multi-frame transfers.

Tuning & Behavior

  • Default Value: 8192 (8KB) on most boards; 16384 (16KB) on H7 boards.
  • High Load: If you have many CAN ESCs and sensors (high bus utilization), increase this to 16384 or 32768.
  • Low Memory Boards: On 1MB Flash boards (like F4), be careful increasing this as it takes away from the main system memory.
  • Reboot Required: Yes.

CAN_D1_UC_RLY_RT

Hz
Default 0
Range 0 200

DroneCAN Relay Transmit Rate (CAN_D1_UC_RLY_RT)

Description

CAN_D1_UC_RLY_RT sets the heartbeat rate for CAN-based relays.

  • 0: Send only on change (standard).
  • Non-Zero: Periodically re-broadcast the relay state at this rate. This is safer for hardware that needs a "Keep Alive" signal.

CAN_D1_UC_S1_BD

Default 57
Range 1 2000

DroneCAN Serial 1 Baud Rate (CAN_D1_UC_S1_BD)

Description

CAN_D1_UC_S1_BD sets the speed of the "Virtual UART" bridge.

This allows you to tunnel serial data (like GPS or telemetry) through the CAN bus. The value is in kilobaud (e.g., 57 = 57600 baud).

Tuning & Behavior

  • Default Value: 57 (57600).
  • Recommendation: Set this to match the physical baud rate of the device plugged into your remote CAN node (e.g. 115 for a high-speed GPS).

CAN_D1_UC_S1_IDX

Default -1
Range -1 10

DroneCAN Serial 1 Bridge Index (CAN_D1_UC_S1_IDX)

Description

CAN_D1_UC_S1_IDX links a specific autopilot serial manager instance to the CAN bridge.

If you want the device on the other end of the CAN bus to appear as "Serial 1" on your flight controller, set this to 1.

Tuning & Behavior

  • Default Value: -1 (Disabled).

CAN_D1_UC_S1_NOD

Default 0
Range 0 127

DroneCAN Serial 1 Node ID (CAN_D1_UC_S1_NOD)

Description

CAN_D1_UC_S1_NOD creates a virtual serial bridge over the CAN bus.

This allows you to connect a Serial GPS to a "Node" (like an AP_Periph adapter) and have ArduPilot talk to it as if it were plugged directly into a UART on the flight controller. This parameter sets the ID of that remote Node.

Tuning & Behavior

  • Default Value: 0 (Disabled).
  • Recommendation: Set to the Node ID of your DroneCAN-to-Serial adapter.

CAN_D1_UC_S1_PRO

Default -1
Range -1 60

DroneCAN Serial 1 Protocol (CAN_D1_UC_S1_PRO)

Description

CAN_D1_UC_S1_PRO defines what language the serial bridge speaks. It uses the standard SERIAL_PROTOCOL values (e.g., 5 for GPS, 2 for MAVLink).

Tuning & Behavior

  • Default Value: -1 (Same as Serial Manager).

CAN_D1_UC_S2_BD

null
Default 57600
Range null

DroneCAN Serial default baud rate

Note: This parameter functions identically to CAN_D1_UC_S1_BD.

CAN_D1_UC_S2_IDX

null
Default -1
Range null

Serial port number on remote CAN node

Note: This parameter functions identically to CAN_D1_UC_S1_IDX.

CAN_D1_UC_S2_NOD

null
Default 0
Range null

Serial CAN remote node number

Note: This parameter functions identically to CAN_D1_UC_S1_NOD.

CAN_D1_UC_S2_PRO

null
Default -1
Range null

Serial protocol of DroneCAN serial port

Note: This parameter functions identically to CAN_D1_UC_S1_PRO.

CAN_D1_UC_S3_BD

null
Default 57600
Range null

Serial baud rate on remote CAN node

Note: This parameter functions identically to CAN_D1_UC_S1_BD.

CAN_D1_UC_S3_IDX

null
Default 0
Range null

Serial port number on remote CAN node

Note: This parameter functions identically to CAN_D1_UC_S1_IDX.

CAN_D1_UC_S3_NOD

null
Default 0
Range null

Serial CAN remote node number

Note: This parameter functions identically to CAN_D1_UC_S1_NOD.

CAN_D1_UC_S3_PRO

null
Default -1
Range null

Serial protocol of DroneCAN serial port

Note: This parameter functions identically to CAN_D1_UC_S1_PRO.

CAN_D1_UC_SER_EN

Default 0
Range 0 1

DroneCAN Serial Bridge Enable (CAN_D1_UC_SER_EN)

Description

CAN_D1_UC_SER_EN activates the "Virtual Serial Port" system on the first CAN bus.

When enabled, you can map physical serial devices (like a GPS or telemetry radio) that are connected to remote DroneCAN nodes (like an AP_Periph adapter) as if they were plugged directly into the flight controller.

Tuning & Behavior

  • 0: Disabled.
  • 1: Enabled.
  • Reboot Required: Yes.

CAN_D1_UC_SRV_BM

Default 0
Range 0 4294967295

DroneCAN Servo Bitmask (CAN_D1_UC_SRV_BM)

Description

CAN_D1_UC_SRV_BM maps specific output channels to DroneCAN Servo commands.

If you are using CAN-based servos (like the Hitag series), you use this bitmask to tell ArduPilot which logical outputs (Aileron, Elevator, etc.) should be routed to the CAN bus instead of the PWM rail.

The Engineer's View

Sends uavcan.equipment.actuator.ArrayCommand.
Can be configured to send raw PWM values or normalized -1 to +1 commands depending on CAN_D1_UC_OPTION.

Tuning & Behavior

  • Default Value: 0
  • Recommendation: Only set bits for channels physically connected to CAN servos.

CAN_D1_UC_SRV_RT

Hz
Default 50
Range 1 200

DroneCAN Servo Transmit Rate (CAN_D1_UC_SRV_RT)

Description

CAN_D1_UC_SRV_RT sets the "Update Frequency" for CAN-based servos.

If you are using DroneCAN servos (or an AP_Periph node acting as a servo adapter), this parameter determines how many times per second the flight controller sends new position commands.

Tuning & Behavior

  • Default Value: 50 Hz.
  • High Performance: Set to 100 Hz or 200 Hz for modern digital CAN servos to improve control response and stabilization.
  • Bandwidth: Higher rates use more CAN bus bandwidth. If your bus is congested, keep this at 50Hz.

CAN_D2_PC_ECU_ID

null
Default PICCOLO_CAN_ECU_ID_DEFAULT
Range 0 255

ECU Node ID

Note: This parameter functions identically to CAN_D1_PC_ECU_ID.

CAN_D2_PC_ECU_RT

Hz
Default PICCOLO_MSG_RATE_HZ_DEFAULT
Range 1 500

ECU command output rate

Note: This parameter functions identically to CAN_D1_PC_ECU_RT.

CAN_D2_PC_ESC_BM

null
Default 0
Range null

Output channels to be transmitted as ESC over DroneCAN

Note: This parameter functions identically to CAN_D1_PC_ESC_BM.

CAN_D2_PC_ESC_RT

Hz
Default PICCOLO_MSG_RATE_HZ_DEFAULT
Range 1 500

ESC output rate

Note: This parameter functions identically to CAN_D1_PC_ESC_RT.

CAN_D2_PC_SRV_BM

null
Default 0
Range null

Output channels to be transmitted as servo over DroneCAN

Note: This parameter functions identically to CAN_D1_PC_SRV_BM.

CAN_D2_PC_SRV_RT

Hz
Default 50
Range 1 200

Servo output rate

Note: This parameter functions identically to CAN_D1_PC_SRV_RT.

CAN_D2_PROTOCOL

null
Default float(AP_CAN::Protocol::DroneCAN
Range null

Enable use of specific protocol over virtual driver

Note: This parameter configures instance 2. It functions identically to CAN_D1_PROTOCOL.

CAN_D2_PROTOCOL2

null
Default float(AP_CAN::Protocol::None
Range null

Secondary protocol with 11 bit CAN addressing

Note: This parameter functions identically to CAN_D1_PROTOCOL2.

CAN_D2_UC_ESC_BM

null
Default 0
Range null

Output channels to be transmitted as ESC over DroneCAN

Note: This parameter functions identically to CAN_D1_UC_ESC_BM.

CAN_D2_UC_ESC_OF

null
Default 0
Range 0 18

ESC Output channels offset

Note: This parameter functions identically to CAN_D1_UC_ESC_OF.

CAN_D2_UC_ESC_RV

null
Default 0
Range null

Bitmask for output channels for reversible ESCs over DroneCAN.

Note: This parameter functions identically to CAN_D1_UC_ESC_RV.

CAN_D2_UC_NODE

null
Default AP_DRONECAN_DEFAULT_NODE
Range 1 125

Own node ID

Note: This parameter functions identically to CAN_D1_UC_NODE.

CAN_D2_UC_NTF_RT

Hz
Default 20
Range 1 200

Notify State rate

Note: This parameter functions identically to CAN_D1_UC_NTF_RT.

CAN_D2_UC_OPTION

null
Default 0
Range null

DroneCAN options

Note: This parameter functions identically to CAN_D1_UC_OPTION.

CAN_D2_UC_POOL

null
Default DRONECAN_NODE_POOL_SIZE
Range 1024 16384

CAN pool size

Note: This parameter functions identically to CAN_D1_UC_POOL.

CAN_D2_UC_RLY_RT

Hz
Default 0
Range 0 200

DroneCAN relay output rate

Note: This parameter functions identically to CAN_D1_UC_RLY_RT.

CAN_D2_UC_S1_BD

null
Default 57600
Range null

DroneCAN Serial default baud rate

Note: This parameter functions identically to CAN_D1_UC_S1_BD.

CAN_D2_UC_S1_IDX

null
Default -1
Range 0 100

DroneCAN Serial1 index

Note: This parameter functions identically to CAN_D1_UC_S1_IDX.

CAN_D2_UC_S1_NOD

null
Default 0
Range 0 127

Serial CAN remote node number

Note: This parameter functions identically to CAN_D1_UC_S1_NOD.

CAN_D2_UC_S1_PRO

null
Default -1
Range null

Serial protocol of DroneCAN serial port

Note: This parameter functions identically to CAN_D1_UC_S1_PRO.

CAN_D2_UC_S2_BD

null
Default 57600
Range null

DroneCAN Serial default baud rate

Note: This parameter functions identically to CAN_D2_UC_S1_BD.

CAN_D2_UC_S2_IDX

null
Default -1
Range null

Serial port number on remote CAN node

Note: This parameter functions identically to CAN_D2_UC_S1_IDX.

CAN_D2_UC_S2_NOD

null
Default 0
Range null

Serial CAN remote node number

Note: This parameter functions identically to CAN_D2_UC_S1_NOD.

CAN_D2_UC_S2_PRO

null
Default -1
Range null

Serial protocol of DroneCAN serial port

Note: This parameter functions identically to CAN_D2_UC_S1_PRO.

CAN_D2_UC_S3_BD

null
Default 57600
Range null

Serial baud rate on remote CAN node

Note: This parameter functions identically to CAN_D2_UC_S1_BD.

CAN_D2_UC_S3_IDX

null
Default 0
Range null

Serial port number on remote CAN node

Note: This parameter functions identically to CAN_D2_UC_S1_IDX.

CAN_D2_UC_S3_NOD

null
Default 0
Range null

Serial CAN remote node number

Note: This parameter functions identically to CAN_D2_UC_S1_NOD.

CAN_D2_UC_S3_PRO

null
Default -1
Range null

Serial protocol of DroneCAN serial port

Note: This parameter functions identically to CAN_D2_UC_S1_PRO.

CAN_D2_UC_SER_EN

null
Default 0
Range null

DroneCAN Serial enable

Note: This parameter functions identically to CAN_D1_UC_SER_EN.

CAN_D2_UC_SRV_BM

null
Default 0
Range null

Output channels to be transmitted as servo over DroneCAN

Note: This parameter functions identically to CAN_D1_UC_SRV_BM.

CAN_D2_UC_SRV_RT

Hz
Default 50
Range 1 200

Servo output rate

Note: This parameter functions identically to CAN_D1_UC_SRV_RT.

CAN_D3_PC_ECU_ID

null
Default PICCOLO_CAN_ECU_ID_DEFAULT
Range 0 255

ECU Node ID

Note: This parameter functions identically to CAN_D1_PC_ECU_ID.

CAN_D3_PC_ECU_RT

Hz
Default PICCOLO_MSG_RATE_HZ_DEFAULT
Range 1 500

ECU command output rate

Note: This parameter functions identically to CAN_D1_PC_ECU_RT.

CAN_D3_PC_ESC_BM

null
Default 0
Range null

Output channels to be transmitted as ESC over DroneCAN

Note: This parameter functions identically to CAN_D1_PC_ESC_BM.

CAN_D3_PC_ESC_RT

Hz
Default PICCOLO_MSG_RATE_HZ_DEFAULT
Range 1 500

ESC output rate

Note: This parameter functions identically to CAN_D1_PC_ESC_RT.

CAN_D3_PC_SRV_BM

null
Default 0
Range null

Output channels to be transmitted as servo over DroneCAN

Note: This parameter functions identically to CAN_D1_PC_SRV_BM.

CAN_D3_PC_SRV_RT

Hz
Default 50
Range 1 200

Servo output rate

Note: This parameter functions identically to CAN_D1_PC_SRV_RT.

CAN_D3_PROTOCOL

null
Default float(AP_CAN::Protocol::DroneCAN
Range null

Enable use of specific protocol over virtual driver

Note: This parameter functions identically to CAN_D1_PROTOCOL.

CAN_D3_PROTOCOL2

null
Default float(AP_CAN::Protocol::None
Range null

Secondary protocol with 11 bit CAN addressing

Note: This parameter functions identically to CAN_D1_PROTOCOL2.

CAN_D3_UC_ESC_BM

null
Default 0
Range null

Output channels to be transmitted as ESC over DroneCAN

Note: This parameter functions identically to CAN_D1_UC_ESC_BM.

CAN_D3_UC_ESC_OF

null
Default 0
Range 0 18

ESC Output channels offset

Note: This parameter functions identically to CAN_D1_UC_ESC_OF.

CAN_D3_UC_ESC_RV

null
Default 0
Range null

Bitmask for output channels for reversible ESCs over DroneCAN.

Note: This parameter functions identically to CAN_D1_UC_ESC_RV.

CAN_D3_UC_NODE

null
Default AP_DRONECAN_DEFAULT_NODE
Range 1 125

Own node ID

Note: This parameter functions identically to CAN_D1_UC_NODE.

CAN_D3_UC_NTF_RT

Hz
Default 20
Range 1 200

Notify State rate

Note: This parameter functions identically to CAN_D1_UC_NTF_RT.

CAN_D3_UC_OPTION

null
Default 0
Range null

DroneCAN options

Note: This parameter functions identically to CAN_D1_UC_OPTION.

CAN_D3_UC_POOL

null
Default DRONECAN_NODE_POOL_SIZE
Range 1024 16384

CAN pool size

Note: This parameter functions identically to CAN_D1_UC_POOL.

CAN_D3_UC_RLY_RT

Hz
Default 0
Range 0 200

DroneCAN relay output rate

Note: This parameter functions identically to CAN_D1_UC_RLY_RT.

CAN_D3_UC_S1_BD

null
Default 57600
Range null

DroneCAN Serial default baud rate

Note: This parameter functions identically to CAN_D1_UC_S1_BD.

CAN_D3_UC_S1_IDX

null
Default -1
Range 0 100

DroneCAN Serial1 index

Note: This parameter functions identically to CAN_D1_UC_S1_IDX.

CAN_D3_UC_S1_NOD

null
Default 0
Range 0 127

Serial CAN remote node number

Note: This parameter functions identically to CAN_D1_UC_S1_NOD.

CAN_D3_UC_S1_PRO

null
Default -1
Range null

Serial protocol of DroneCAN serial port

Note: This parameter functions identically to CAN_D1_UC_S1_PRO.

CAN_D3_UC_S2_BD

null
Default 57600
Range null

DroneCAN Serial default baud rate

Note: This parameter functions identically to CAN_D3_UC_S1_BD.

CAN_D3_UC_S2_IDX

null
Default -1
Range null

Serial port number on remote CAN node

Note: This parameter functions identically to CAN_D3_UC_S1_IDX.

CAN_D3_UC_S2_NOD

null
Default 0
Range null

Serial CAN remote node number

Note: This parameter functions identically to CAN_D3_UC_S1_NOD.

CAN_D3_UC_S2_PRO

null
Default -1
Range null

Serial protocol of DroneCAN serial port

Note: This parameter functions identically to CAN_D3_UC_S1_PRO.

CAN_D3_UC_S3_BD

null
Default 57600
Range null

Serial baud rate on remote CAN node

Note: This parameter functions identically to CAN_D3_UC_S1_BD.

CAN_D3_UC_S3_IDX

null
Default 0
Range null

Serial port number on remote CAN node

Note: This parameter functions identically to CAN_D3_UC_S1_IDX.

CAN_D3_UC_S3_NOD

null
Default 0
Range null

Serial CAN remote node number

Note: This parameter functions identically to CAN_D3_UC_S1_NOD.

CAN_D3_UC_S3_PRO

null
Default -1
Range null

Serial protocol of DroneCAN serial port

Note: This parameter functions identically to CAN_D3_UC_S1_PRO.

CAN_D3_UC_SER_EN

null
Default 0
Range null

DroneCAN Serial enable

Note: This parameter functions identically to CAN_D1_UC_SER_EN.

CAN_D3_UC_SRV_BM

null
Default 0
Range null

Output channels to be transmitted as servo over DroneCAN

Note: This parameter functions identically to CAN_D1_UC_SRV_BM.

CAN_D3_UC_SRV_RT

Hz
Default 50
Range 1 200

Servo output rate

Note: This parameter functions identically to CAN_D1_UC_SRV_RT.

CAN_FDMODE

Default 0
Range 0 1

Enable CAN FD Mode (CAN_FDMODE)

Description

CAN_FDMODE upgrades the CAN bus protocol to CAN FD (Flexible Data-rate).

Standard CAN is limited to 8 bytes per frame and typically 1 Mbps. CAN FD supports up to 64 bytes per frame and much higher data rates (up to 5-8 Mbps) for the data payload phase. This reduces bus congestion and latency.

  • 0: Disabled (Classic CAN).
  • 1: Enabled (CAN FD).

Tuning & Behavior

  • Default: 0.
  • Hardware Requirement: All devices on the bus MUST support CAN FD. If a single legacy CAN device is connected, communication will fail.
  • AP_Periph: This parameter is commonly found on AP_Periph nodes (like GPS or Airspeed sensors) to switch them into high-speed mode.

CAN_LOGLEVEL

Default 0
Range 0 4

CAN Loglevel (CAN_LOGLEVEL)

Description

Controls the verbosity of CAN-related diagnostic messages sent to the internal log. Useful for troubleshooting device initialization issues.

Tuning & Behavior

  • Default Value: 0 (None)
  • Values: 0:Log None, 1:Log Error, 2:Log Warning, 3:Log Info, 4:Log Everything

CAN_MIRROR_PORTS

Default 0
Range 0 3

CAN Port Mirroring (CAN_MIRROR_PORTS)

Description

CAN_MIRROR_PORTS turns the flight controller (or AP_Periph node) into a CAN Bridge.

Any message received on one port is instantly copied and sent out the other port. This is useful for creating a "Pass-Through" node or daisy-chaining buses that are electrically separate.

  • Bitmask:
    • Bit 0: Port 1
    • Bit 1: Port 2

Tuning & Behavior

  • Default: 0 (Disabled).
  • Warning: Both ports must be set to the same bitrate.
  • Danger: Do not create a loop (connecting Port 1 to Port 2 externally) while this is enabled, or you will create a "Broadcast Storm" that floods the bus and crashes the network.

CAN_NODE

Default 0
Range 0 127

DroneCAN node ID used by this node on all networks (CAN_NODE)

Description

This parameter sets the Node ID for the DroneCAN peripheral. The Node ID is the unique address of the device on the CAN bus.

The Mathematics

Address Arbitration.

The Engineer's View

Defined in Tools/AP_Periph/Parameters.cpp.

  • 0: Dynamic Node Allocation (DNA). The device listens for the flight controller (Node Allocator) to assign it a free ID.
  • 1-125: Static ID. The device claims this ID immediately.

Tuning & Behavior

  • Default Value: 0 (Dynamic)
  • Recommendation: Use 0 for most setups. Use static IDs if you need fixed addressing for specific scripting or redundancy requirements.

CAN_P1_BITRATE

Default 1000000
Range 10000 1000000

Bitrate of CAN interface 1 (CAN_P1_BITRATE)

Description

Defines the communication speed for the first physical CAN bus. All devices on the bus must use the same bitrate to communicate.

Tuning & Behavior

  • Default Value: 1000000 (1 Mbps)
  • Range: 10,000 to 1,000,000
  • 1 Mbps is standard for DroneCAN.

CAN_P1_DRIVER

Default 1
Range 0 3

Index of virtual driver for CAN interface 1 (CAN_P1_DRIVER)

Description

Enables the first CAN port and links it to one of the virtual CAN driver instances (D1, D2, or D3).

Tuning & Behavior

  • Default Value: 1
  • Values: 0:Disabled, 1:First driver (D1), 2:Second driver (D2), 3:Third driver (D3)
  • Requires reboot to take effect.

CAN_P1_FDBITRATE

Mbps
Default 5
Range 1 8

CAN Port 1 FD Bitrate (CAN_P1_FDBITRATE)

Description

CAN_P1_FDBITRATE enables "High Speed" mode for modern CAN FD devices.

Standard CAN is limited to 1Mbps. CAN FD (Flexible Data-rate) allows the data payload portion of the packet to be sent much faster.

  • 5 (5 Mbps): Standard for many modern DroneCAN FD peripherals.
  • 2 (2 Mbps): Conservative setting.

Tuning & Behavior

  • Requirement: Your hardware (Flight Controller and Peripheral) must support CAN FD.

CAN_P1_OPTIONS

Default 0
Range 0 31

CAN Port 1 Options (CAN_P1_OPTIONS)

Description

CAN_P1_OPTIONS provides hardware-level tweaks for the CAN interface.

  • Bit 0 (1): Log All Frames. Records every single CAN packet to the DataFlash log. (WARNING: Generates huge logs).
  • Bit 1 (2): Require Timestamps. Rejects frames that don't have hardware timestamps.

Tuning & Behavior

  • Default Value: 0.

CAN_P2_BITRATE

null
Default 1000000
Range 10000 1000000

Bitrate of CAN interface

Note: This parameter functions identically to CAN_P1_BITRATE.

CAN_P2_DRIVER

null
Default HAL_CAN_DRIVER_DEFAULT
Range null

Index of virtual driver to be used with physical CAN interface

Note: This parameter functions identically to CAN_P1_DRIVER.

CAN_P2_FDBITRATE

null
Default HAL_CANFD_SUPPORTED
Range null

Bitrate of CANFD interface

Note: This parameter functions identically to CAN_P1_FDBITRATE.

CAN_P2_OPTIONS

null
Default 0
Range null

quadplane options

Note: This parameter functions identically to CAN_P1_OPTIONS.

CAN_P3_BITRATE

null
Default 1000000
Range 10000 1000000

Bitrate of CAN interface

Note: This parameter functions identically to CAN_P1_BITRATE.

CAN_P3_DRIVER

null
Default HAL_CAN_DRIVER_DEFAULT
Range null

Index of virtual driver to be used with physical CAN interface

Note: This parameter functions identically to CAN_P1_DRIVER.

CAN_P3_FDBITRATE

null
Default HAL_CANFD_SUPPORTED
Range null

Bitrate of CANFD interface

Note: This parameter functions identically to CAN_P1_FDBITRATE.

CAN_P3_OPTIONS

null
Default 0
Range null

quadplane options

Note: This parameter functions identically to CAN_P1_OPTIONS.

CAN_SLCAN_CPORT

Default 0
Range 0 3

SLCAN CAN port (CAN_SLCAN_CPORT)

Description

Defines which physical CAN bus is mapped to the SLCAN bridge for direct hardware access (e.g., using UAVCAN GUI Tool).

CAN_SLCAN_SDELAY

s
Default 1
Range 0 127

SLCAN Start Delay (CAN_SLCAN_SDELAY)

Description

CAN_SLCAN_SDELAY introduces a pause after the SLCAN virtual interface is initialized but before it begins forwarding CAN frames.

This is primarily a developer or diagnostic feature used when bridging a computer to the DroneCAN bus via the flight controller's USB port (SLCAN mode).

Tuning & Behavior

  • Default: 1 second.
  • Usage: Increase this if your GCS or SLCAN tool struggles to connect immediately after the port opens.

CAN_SLCAN_SERNUM

Default -1

SLCAN Serial Port (CAN_SLCAN_SERNUM)

Description

Specifies the USB or hardware serial port instance that serves as the bridge to the CAN bus selected in CAN_SLCAN_CPORT.

CAN_SLCAN_TIMOUT

s
Default 0

SLCAN Timeout (CAN_SLCAN_TIMOUT)

Description

The inactivity period after which the SLCAN bridge is automatically closed.

CAN_TERMINATE

Default 0

Force Terminate (CAN_TERMINATE)

Description

This parameter is not found as CAN_TERMINATE in the main codebase. It appears to be a miscategorized Advanced Failsafe parameter.