Holybro DroneCAN RM3100 Compass — Setup and Calibration (ArduPilot & PX4)

Holybro DroneCAN RM3100 Compass — Setup and Calibration (ArduPilot & PX4)

When this applies

You have fitted a Holybro DroneCAN RM3100 compass to your drone and it is not showing up in Mission Planner or QGroundControl, or it appears but is not being used for heading data, or calibration will not complete.

Symptoms / question

  • The RM3100 is plugged in but Mission Planner does not show it anywhere.
  • The compass was wired to an I2C or GPS port and nothing is detected.
  • The device appears in the DroneCAN/UAVCAN tab, but the aircraft still uses the flight controller's internal compass.
  • Compass calibration fails or never completes.

Answer / solution

Step 1: Connect it to a CAN port, not I2C

The RM3100 is a CAN-only sensor. It communicates over DroneCAN and will not work when wired as an I2C device.

Connect it to a CAN port on the flight controller using the 4-pin JST-GH cable. If it is currently on an I2C or GPS port, move it to CAN1 or CAN2. This is the most common cause of the compass not showing up at all.

Step 2: Enable DroneCAN on the flight controller (ArduPilot)

In Mission Planner, go to Config, then Full Parameter List, and set these parameters:

For the CAN1 port:

  • CAN_D1_PROTOCOL = 1
  • CAN_P1_DRIVER = 1

For the CAN2 port:

  • CAN_D2_PROTOCOL = 1
  • CAN_P2_DRIVER = 1

These values come from Holybro's RM3100 setup guide (docs.holybro.com/peripherals/rm3100-compass-dronecan/rm3100-setup-guide) and match the CAN driver configuration described in ArduPilot's CAN bus documentation (ardupilot.org/copter/docs/common-canbus-setup-advanced).

Step 3: Confirm the device is detected

In Mission Planner, open Setup, then Optional Hardware, then DroneCAN/UAVCAN. Click MAVlink-CAN1 or MAVlink-CAN2 to match the port you used. The RM3100 should appear in the device list. Holybro CAN devices carry "HolybroG4" in their name.

If nothing is listed:

  • Double-check the Step 2 parameters, then reboot the flight controller.
  • Check the connector for bent or pushed-out pins.
  • On longer buses, check termination. Newer RM3100 units (serial numbers 18088002xxx and 18089002xxx onwards) can switch their internal 120 ohm termination resistor via the CAN_TERMINATE parameter: 1 = enabled, 0 = disabled. The supported serial numbers and steps are in Holybro's CAN termination guide (docs.holybro.com/can-termination-resistance-software-toggle).

Step 4: Set the compass priority and reboot

On the Compass tab in Mission Planner, set the RM3100 to first priority, then reboot the flight controller. ArduPilot assigns compass priorities at boot, so the change only takes effect after a reboot. The ordering controls are described in ArduPilot's compass setup guide (ardupilot.org/copter/docs/common-compass-setup-advanced).

Step 5: Calibrate

After the reboot, run the compass calibration from the Compass tab in Mission Planner. Mount the compass away from motor coils and metal parts. The RM3100 is designed to sit away from sources of magnetic interference for the best heading accuracy, as noted in Holybro's product documentation (docs.holybro.com/peripherals/rm3100-compass-dronecan).

PX4 users

Current PX4 firmware auto-detects DroneCAN devices and recognises the RM3100 as a compass by default. If it is not recognised, set UAVCAN_ENABLE to "Sensors Automatic Config" and UAVCAN_SUB_MAG to 1, then run the calibration.

After calibration, PX4 automatically selects the RM3100 or the onboard compass for directional data. Full details are in Holybro's RM3100 setup guide (docs.holybro.com/peripherals/rm3100-compass-dronecan/rm3100-setup-guide).

How to confirm it worked

  • The RM3100 appears in the DroneCAN/UAVCAN device list with "HolybroG4" in its name.
  • After the reboot, the Compass tab shows the DroneCAN compass at priority 1.
  • Calibration completes, and the heading display turns correctly when you rotate the aircraft.

Common pitfalls

  • Wiring the RM3100 to I2C instead of CAN. It is a CAN-only sensor, and nothing will be detected on an I2C port.
  • Forgetting to reboot after changing the compass priority. Priority changes only take effect at boot.
  • Updating the compass firmware from Mission Planner. Holybro advise avoiding DroneCAN firmware updates unless necessary. In rare cases an update can brick the device and require the case to be opened and the microcontroller flashed with an ST-Link programmer. If the compass stopped working after a firmware update, contact us rather than attempting a reflash yourself. Details: Holybro RM3100 Setup Guide.
  • Mounting the compass close to motors, ESCs or a metal frame. This causes heading drift and failed calibrations even when the compass itself is healthy.

Still having trouble?

If the steps above do not get it working, please open a support ticket with:

  • Your flight controller model and firmware version.
  • Which CAN port you used, plus a photo of the connector and wiring.
  • A screenshot of the DroneCAN/UAVCAN tab in Mission Planner after clicking MAVlink-CAN1 or MAVlink-CAN2.
  • If calibration is the problem: where you ran the calibration and the exact error message shown.