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.
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:
For the CAN2 port:
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:
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).
If the steps above do not get it working, please open a support ticket with: