Quick Answer
Holybro makes three sensors that add real capability to ArduPilot builds: the MS4525DO digital airspeed sensor for fixed-wing and VTOL aircraft, the PMW3901 optical flow sensor for indoor GPS-free position hold, and the RM3100 DroneCAN compass for high-precision magnetic heading. Each plugs in with a single cable and requires only a few parameter changes in Mission Planner or QGroundControl.
MS4525DO Digital Airspeed Sensor
The Holybro MS4525DO measures airspeed by detecting the difference in pressure between the front-facing pitot tube and a static port on the side. Unlike older analog sensors, the MS4525DO communicates digitally over I2C at address 0x28, which means it is not affected by electrical noise from nearby components or long cable runs.
Fixed-wing and VTOL aircraft need airspeed data for proper stall protection, auto-throttle, and wind estimation. Without it, ArduPilot has to rely entirely on GPS groundspeed, which can be dangerously inaccurate in headwinds. For a deeper look at how airspeed sensors work, see our airspeed sensor explainer.
Wiring
Connect the four I2C wires to your flight controller: SDA to SDA, SCL to SCL, VCC to 5V, and GND to GND. The pitot tube faces forward on the aircraft, ideally mounted where it gets clean airflow away from prop wash.
ArduPilot Configuration
In Mission Planner, enable the sensor by setting ARSPD_TYPE to 2 for the MS4525DO. Set ARSPD_USE to 1 to make ArduPilot use the airspeed data. The default calibration ratio of 1.0 works for most installations, but you can fine-tune it with the on-screen calibration tool after a few flights. In QGroundControl, enable via the SENS_EN_MS4525DO parameter instead.
PMW3901 Optical Flow Sensor
The Holybro PMW3901 optical flow sensor provides position data when GPS is unavailable, which makes it useful for indoor flights, under bridges, or anywhere satellite reception is poor. The sensor works like an optical mouse, tracking ground texture movement below the drone to estimate horizontal velocity.
This UART version comes with a built-in BEC and a pre-soldered 6-pin JST-GH connector that plugs directly into a TELEM port on most flight controllers. It works alongside a downward-facing rangefinder, which provides the altitude reference the flow sensor needs for accurate calculations.
Wiring
Plug the JST-GH connector into any free TELEM port on your flight controller. The sensor draws power and sends data over this single connection. Mount it on the underside of the frame, facing straight down, at least 10cm above the ground during flight.
ArduPilot Configuration
Set FLOW_TYPE to 4 to enable the PMW3901 protocol. Then configure the serial port it is connected to by setting SERIALx_PROTOCOL to 18 and SERIALx_BAUD to 115, where x is the TELEM port number. After enabling, perform a log-based calibration by flying in position hold mode with GPS available, then analysing the flow data against GPS to compute the scaling factor.
RM3100 DroneCAN Compass
The Holybro RM3100 is a professional-grade magnetometer that connects over DroneCAN rather than I2C. The RM3100 sensor offers significantly higher resolution and lower noise than the IST8310 or AK09916 compasses found on most flight controllers. It connects via a single 4-pin CAN cable and is automatically detected by ArduPilot and PX4.
This matters for large aircraft, surveying drones, and any build where the standard onboard compass sits too close to power lines, ESCs, or motors that generate magnetic interference. For more on DroneCAN versus older protocols, read our DroneCAN guide.
Wiring
Connect the 4-pin CAN cable from the RM3100 to the CAN1 or CAN2 port on your flight controller. CAN H to CAN H, CAN L to CAN L, VCC to 5V, and GND to GND. Terminate the CAN bus at both ends with 120-ohm resistors if your flight controller does not have built-in termination.
ArduPilot Configuration
Enable CAN by setting CAN_P1_DRIVER to 1 and CAN_P1_BITRATE to 1000000. The RM3100 will appear in the DroneCAN tab of Mission Planner once powered. Set CAN_D1_PROTOCOL to 1 for DroneCAN. After the compass shows up, run the standard compass calibration: rotate the aircraft through all axes until the progress bar completes. ArduPilot will automatically prioritise the RM3100 over the onboard compass based on its lower noise readings.
Quick Reference
| Sensor | Interface | Primary Use | Key Parameter |
|---|---|---|---|
| MS4525DO | I2C | Fixed-wing airspeed | ARSPD_TYPE = 2 |
| PMW3901 | UART | Indoor position hold | FLOW_TYPE = 4 |
| RM3100 | DroneCAN | Precision heading | CAN_D1_PROTOCOL = 1 |
Getting Started with ArduPilot
All three sensors require ArduPilot 4.3 or newer for full support. If you are new to ArduPilot, our ArduPilot setup guide walks through the initial flashing and configuration process. For hardware choices, browse the autopilots and flight controllers collection.
Frequently Asked Questions
Do I need a rangefinder with the optical flow sensor?
Yes. The flow sensor only measures horizontal movement. Without a rangefinder to provide altitude, ArduPilot cannot convert the flow data into usable position estimates.
Can I use multiple RM3100 compasses on the same CAN bus?
Yes. Each DroneCAN device gets a unique node ID automatically. ArduPilot can use data from multiple compasses and will compare them for consistency.