CubePilot CubeOrange Septentrio GNSS Integration: RTK Setup Guide for ArduPilot and PX4

CubePilot CubeOrange is one of the most popular Pixhawk-style flight controllers used in custom drone builds, R&D platforms, and professional UAV systems. While the CubeOrange comes with an internal u-blox NEO-M8N or ZED-F9P GPS module, many advanced users quickly outgrow its capabilities — especially when building drones that demand centimeter-level RTK positioning, multi-frequency GNSS support, or anti-jamming protection for GNSS-denied environments.

Upgrading to a Septentrio-powered GNSS receiver gives your CubeOrange build access to the same GNSS technology used by the DJI M300/M350 RTK and other high-end industrial drones. This guide walks through exactly how to integrate a Septentrio Mosaic-X5 or Mosaic-G5 receiver with the CubeOrange flight controller — covering wiring, telemetry, dual-antenna heading, configuration in ArduPilot and PX4, and real-world performance benchmarks.

Why Replace the CubeOrange’s Internal GNSS?

The CubeOrange flight controller includes an internal GPS module paired with the standard 6-pin JST connector. For basic Waypoint navigation or loiter modes, this works fine. But if you need:

  • RTK centimeter-level accuracy for precision landing, mapping, or survey-grade data collection
  • Multi-band reception (L1/L2/L5) for reliability in tree cover or urban canyons
  • Heading without a compass via dual-antenna GNSS for difficult magnetic environments
  • Anti-jamming and anti-spoofing for security-sensitive or commercial operations

Then the internal GPS simply cannot deliver. The Septentrio Mosaic-X5 module, for example, provides RTK accuracy to 1 cm + 1 ppm, supports all four global constellations (GPS, GLONASS, Galileo, BeiDou), and offers the AIM+ anti-jamming technology that filters out more than 99% of interference signals before they reach the position engine.

CubeOrange GNSS Limitations at a Glance

Feature CubeOrange Internal GPS Septentrio Mosaic-X5
Accuracy (Single Point) ~2.5 m CEP ~1.2 m CEP
RTK Accuracy ~2.5 cm (ZED-F9P) 1 cm + 1 ppm
Constellations GPS + GLONASS GPS + GLONASS + Galileo + BeiDou
Bands L1 only (or L1/L2 for F9P) L1/L2/L5/E1/E5a/E5b/E6/B1I/B2I
Heading via Dual Antenna No (requires external compass) Yes (single module, true North heading)
Anti-Jamming Protection None AIM+ (military-grade)
Update Rate 10 Hz Up to 100 Hz

Wiring the Septentrio GNSS Receiver to CubeOrange

The CubeOrange provides several serial ports and a CAN bus interface. For GNSS integration, the recommended approach is using one of the dedicated GPS UART ports (GPS1 or GPS2), or the CAN bus if your GNSS receiver supports CAN output.

UART Connection (Recommended)

For all UFOFACTORY GNSS receivers (HB6, EV322, HB21), the standard 10-pin ST6 connector maps directly to the CubeOrange’s GPS port pinout:

CubeOrange GPS Port (JST-GH 10-pin) Septentrio GNSS Receiver (ST6 10-pin) Signal
Pin 1 (5V) Pin 1 (VCC) Power — 5V DC
Pin 2 (TX) Pin 2 (RX) GPS → Flight Controller data
Pin 3 (RX) Pin 3 (TX) Flight Controller → GPS config
Pin 4 (GND) Pin 4 (GND) Ground
Pin 7 (SAFE) Pin 8 (nRST) Safe-to-arm signal (optional)
Pin 9 (SCL) N/C I²C compass (not used)
Pin 10 (SDA) N/C I²C compass (not used)

Important notes:

  • Use GPS1 port (the one labeled MODE 1 on the CubeCarrier) for the primary GNSS receiver. This maps to serial port Serial 3 in ArduPilot and TELEM2 / GPS1 in PX4.
  • If using a dual-antenna heading receiver (EV322 with Mosaic-G5 P3H), connect the primary GNSS to GPS1 and configure a second serial port to receive the heading NMEA sentences — or use CAN bus for a single-cable solution.
  • The SAFE signal from the CubeOrange allows the GNSS receiver to indicate it has a valid 3D fix before the flight controller will arm. This is a critical safety feature for autonomous operations.

Power Considerations

The CubeOrange’s GPS port provides regulated 5V output at up to 1A. Septentrio Mosaic-X5 modules draw approximately 350-500 mA under full load with RTK corrections active. The internal regulator on the CubeOrange carrier board (the 5V rail from servo rail or USB power) can handle this, but ensure:

  • You are using the CNC aluminum case version of the GNSS receiver for proper heat dissipation
  • Total current draw from the GPS port (including any additional peripherals) stays under 1A
  • For cold starts or reacquisition, the Mosaic-X5 may briefly draw up to 750 mA — still within spec

ArduPilot Configuration for Septentrio GNSS

ArduPilot is the preferred firmware for the CubeOrange, and configuring an external Septentrio GNSS receiver requires only a few parameter changes.

Step 1: Set GPS Protocol and Baud Rate

GPS_TYPE = 1 (Auto)
GPS_AUTO_CONFIG = 1 (Automatically detect and configure)
SERIAL3_PROTOCOL = 5 (GPS)
SERIAL3_BAUD = 115 (115200 baud or 230 for higher update rates)

Septentrio receivers output NMEA and a proprietary SBF (Septentrio Binary Format). ArduPilot can parse SBF natively with GPS_TYPE = 9 (Septentrio) for the best performance. This enables dual-antenna heading parsing without a separate compass.

Step 2: Enable RTK Corrections (NTRIP)

With the HB21 GNSS Box Receiver, RTK corrections can come via its integrated 4G LTE modem — no tethering or base station needed. For the HB6 or EV322 without cellular, corrections arrive through the CubeOrange’s telemetry link:

  1. Connect the CubeOrange to QGroundControl or Mission Planner via telemetry radio (or USB)
  2. In QGC, navigate to Application Settings → RTK GPS → NTRIP Client
  3. Enter your NTRIP caster credentials (e.g., from RTK2go, Emlid Caster, or a local base station)
  4. The flight controller forwards the RTCM corrections to the GNSS receiver over the serial link

The GNSS receiver’s LED indicator will show a RTK FIX (solid green) when corrections are applied and the system has locked to centimeter-level accuracy.

Step 3: Compass-Free Heading with Dual Antenna

If using a dual-antenna configuration (Mosaic-G5 P3H or the EV322 receiver with two antennas), set the compass source:

COMPASS_TYPEMASK = 6 (disable internal and external compasses, use GNSS heading)
AHRS_EKF_TYPE = 3 (use EKF3 which supports GNSS yaw)
EK3_SRC1_YAW = 3 (GPS yaw as primary yaw source)
GPS_TYPE = 9 (Septentrio — includes heading data)

This configuration is particularly valuable for drones operating near high-voltage power lines, steel structures, or underground mines where magnetic compass calibration drifts or becomes impossible.

PX4 Configuration for Septentrio GNSS

PX4 users on CubeOrange can also integrate Septentrio receivers with straightforward parameter changes.

GPS Configuration

GPS_1_CONFIG = TELEM2 (Serial 3)
GPS_1_BAUD = 115200
GPS_1_PROTOCOL = 1 (NMEA)
GPS_1_GNSS_ID = -1 (Auto-detect)
SENS_EN_GPS = 1 (Enable GPS)

For best performance in PX4, set GPS_1_PROTOCOL = 0 (Auto) or 4 (Septentrio Binary) which directly parses the SBF messages for richer data (signal-to-noise ratio per satellite, raw ephemeris, and heading information).

RTK Corrections in PX4

PX4 supports a built-in NTRIP client:

  1. Set GPS_UBX_DYNMODEL = 6 (Airborne on autopilot with > 1g wingspan / multi-rotor) for UAV use
  2. Configure NTRIP via the PX4 Parameters or through QGroundControl Data Link settings
  3. Enable EKF2_GPS_CTRL = 3 (Enable GPS horizontal + vertical position)
  4. For heading, enable EKF2_GPS_CTRL = 7 (Add GPS yaw) when using dual-antenna

PX4’s ECL (Estimation and Control Library) processes the RTK corrections and provides 1 cm + 1 ppm positioning to the flight control system in real time.

Dual-Antenna Heading: Real-World Performance

One of the strongest reasons to integrate a Septentrio GNSS receiver with the CubeOrange is the ability to get true GNSS-based heading without any magnetic compass. This is achieved through the P3H firmware variant of the Mosaic-G5 module, which calculates heading from the carrier-phase difference between two antennas spaced 30-60 cm apart on the drone.

Heading Accuracy Specifications

Antenna Baseline Heading Accuracy (1σ) Typical Application
30 cm 0.30° Compact quadcopters, inspection drones
50 cm 0.18° Mid-size UAVs, mapping platforms
100 cm 0.09° Large VTOL, fixed-wing, robotic platforms

Real flight tests with a CubeOrange-equipped hexacopter show that GNSS-based heading eliminates the compass calibration drift that plagues multi-rotor drones with high current draw (60+ A). Compass errors in these scenarios can exceed 15° during aggressive maneuvers, while the GNSS heading maintains sub-0.5° accuracy throughout the flight envelope.

Antenna Placement Guidelines for CubeOrange Builds

  • Mount the primary antenna (Antenna 1 / Port A) on the aft of the drone, or wherever gets the clearest sky view
  • Mount the secondary antenna (Antenna 2 / Port B) forward along the drone’s longitudinal axis
  • Maintain a minimum 20 cm baseline — 50 cm is optimal for most 450-700 mm class quadcopters
  • Use matched antennas with identical gain patterns (we recommend Tallysman VSP6900 or similar dual-band GNSS antennas)
  • Cable length differences between the two antennas should not exceed 10 cm to avoid phase center bias

Mounting and Mechanical Integration

The UFOFACTORY GNSS receiver lineup offers form factors that fit different build types:

Receiver Model Dimensions (mm) Weight Best For
HB6 82 × 70 × 30 95 g Compact builds, 450-550 mm frames
EV322 66 × 56 × 18 108 g Dual-antenna builds, maximum precision
HB21 95 × 72 × 35 181 g Industrial builds with 4G LTE RTK

Each receiver comes with a CNC aluminum enclosure and vibration-dampening mounting holes matching the 30 mm standard M3 hole pattern used by most flight controller stacks. For CubeOrange builds, we recommend:

  • Top-mounting the GNSS receiver on the drone’s top plate for optimal sky view
  • Placing the CubeOrange underneath in the standard stack position
  • Using the provided 10-pin JST-GH cable (30 cm included) for clean routing
  • Adding ferrite beads on the power lines if running high-power ESCs nearby

Related GNSS Products

Browse our full GNSS receiver collection for professional UAV applications.

Frequently Asked Questions

Q1: Can I keep the CubeOrange’s internal GPS module as a backup when adding a Septentrio receiver?
Yes. ArduPilot and PX4 both support dual GPS blending. Configure the internal GPS on GPS2 port (Serial 4) with GPS_TYPE = 1 and the Septentrio receiver on GPS1 port (Serial 3) with GPS_TYPE = 9. Set GPS_BLEND_MASK = 3 to blend velocity and position. The flight controller automatically prefers the more accurate RTK solution and falls back to the internal GPS if RTK lock is lost — ideal for safety-critical missions.
Q2: What is the maximum cable length between the CubeOrange and the Septentrio receiver?
For UART connections at 115200 baud, keep cable length under 1 meter to avoid signal degradation and data corruption. If you need longer runs (e.g., the GNSS receiver is mounted on a mast or wingtip), use the CAN bus interface instead — CAN can handle cable runs up to 5 meters at 1 Mbps with proper termination. The HB6 and HB21 receivers both support CAN output via their connector.
Q3: Does the CubeOrange’s internal safety switch interfere with the external Septentrio GPS’s SAFE signal?
No — the two SAFE signals operate independently. The CubeOrange’s safety switch is a hardware arming mechanism that requires pressing a button before the motors can arm. The GNSS receiver’s SAFE output (Pin 8) tells the flight controller whether the receiver has a valid 3D position fix. ArduPilot uses the GPS_GLITCHING parameter to detect fix quality loss, and the SAFE signal provides an additional hardware-level interlock. Both must be satisfied before the flight controller allows arming.
Q4: Can I use the I²C port on the CubeOrange’s GPS connector for an external compass alongside the Septentrio GNSS?
Yes, the GPS port’s I²C pins (SCL/SDA) can still drive an external compass (e.g., HMC5883L or RM3100) even when the uart lines are used for the Septentrio receiver. However, if you are using the dual-antenna heading feature (GNSS-based yaw), you may not need a compass at all — which avoids magnetic interference issues entirely. If you do use both, set COMPASS_TYPEMASK to prefer the GNSS yaw over the compass for heading, and use the compass only as a backup.
Q5: What baud rate should I use for best performance with a Septentrio receiver on CubeOrange?
We recommend 230400 baud for most applications. At the default 115200 baud, a Mosaic-X5 outputting RTK-corrected position at 10 Hz with all satellite data can saturate the serial buffer. At 230400 baud, there is headroom for raw measurement data — useful for post-processing and advanced INS-SLAM integration. For heading outputs with dual antennas, 460800 baud provides even more margin. Set SERIAL3_BAUD = 230 in ArduPilot or GPS_1_BAUD = 230400 in PX4 and update the receiver’s baud rate via RxControl or the SBF command interface.

Similar Posts