Skip to main content

RTK Setup Guide — From Unboxing to RTK FIXED

This tutorial takes a MicoAir MA-RTK-BASE and any MA-RTK-AIR rover (982 / 626 / F9P) from the box to a centimeter-accurate RTK FIXED solution, on ArduPilot or PX4. It assumes the rover is already wired and configured per the series user manual; background concepts live in the plain-English RTK explainer.

The two ways corrections can reach your drone

The base station produces RTCM correction data; the only design decision is how that stream gets to the rover:

Two RTK correction workflows — RTCM relay through the ground station software, or direct broadcast through a telemetry radio

Mode 1 — GCS relayMode 2 — direct radio broadcast
PathBase → USB → laptop GCS → existing telemetry link → FC → roverBase → UART → radio → radio → rover 4P port
Extra hardwarenone (reuses your telemetry)one extra radio pair (e.g. LR900-F)
Needs a laptop running all missionYesNo — fully standalone
Shares telemetry bandwidthYesNo
Best formapping days where a GCS is open anywaylight shows, swarms, long deployments

Swarm note: in Mode 2 one radio broadcast serves every drone in range — each aircraft just needs a receiver radio on its rover's 4P port. In Mode 1, MAVLink-routed corrections reach each vehicle individually through their telemetry links.

Step 1 — Deploy the base station

  1. Pick the spot. Widest sky view you can get: away from buildings, tree lines and metal roofs, elevated if possible. Every satellite the base can't see is a satellite your rovers can't use in the RTK solution.
  2. Set up the tripod, screw the mushroom antenna on top, and connect it to the base's SMA port with the feeder cable.
  3. Power on (hold the power button). The OLED lights up; when the PVT LED goes solid the base has a position fix and is already emitting RTCM3 on both USB-C and the GH1.25-4P UART — there is nothing to configure.
  4. Don't move it. The base averages its own position after power-up ("survey-in"); relocating it mid-session shifts every rover's frame. Runtime on internal batteries is ≈ 12 h — for all-day-plus operation feed it 5 V/2 A over USB-C.
Absolute vs relative accuracy

The self-surveyed base position is itself only meter-accurate, so all rover positions share that same constant offset. For mapping against real-world coordinates, either post-shift your outputs using a known point, or program the base's true surveyed coordinates with Unicore's UPrecise tool. For light shows, precision landing and any "repeatability" job, the offset is irrelevant.

Step 2, Mode 1 — Relay corrections through the ground station

Mission Planner (ArduPilot)

  1. Connect the base to the laptop with the USB-C cable. Windows needs the CH340 driver (chip in the base's USB port) — if no COM port appears in Device Manager, install the CH340 driver and replug.
  2. Connect Mission Planner to your vehicle over telemetry as usual.
  3. Open Setup → Optional Hardware → RTK/GPS Inject.
  4. In the top-left dropdown pick the base's COM port, set baud 115200, click Connect.
  5. The status panel starts counting RTCM messages and shows the satellites the base sees. Mission Planner now wraps the RTCM into GPS_RTCM_DATA MAVLink messages and injects them through the telemetry link — no vehicle-side setting needed.
  6. Watch the HUD GPS status walk up: 3D Fix → RTK Float → RTK Fixed (typically well under 2 minutes in open sky).

QGroundControl (PX4 or ArduPilot)

QGC does the same job with zero clicks: plug the base into the laptop and QGC auto-detects an RTCM stream and forwards it to the connected vehicle. GPS state is visible in the top toolbar (RTK Float / RTK Fixed).

MicoConfigurator (MicoAir's GCS)

MicoConfigurator has a dedicated RTK page: select the base COM port and it relays RTCM to any connected vehicles — the workflow mirrors Mission Planner's RTK Inject.

MicoConfigurator RTK page relaying base station corrections

Step 2, Mode 2 — Broadcast corrections over a telemetry radio

Fully standalone: no laptop after setup.

Ground side: connect the base's GH1.25-4P UART (GND·VCC·TX2·RX2) to a telemetry radio in transparent mode — base TX2 → radio RX, base RX2 → radio TX. The base powers the radio from the same connector. Radio serial rate: 115200 to match the base.

Air side: connect a paired radio to the rover's GH1.25-4P port the same way (radio TX → rover RX2). The rover ingests RTCM on that port automatically — the flight controller isn't involved in correction transport at all and needs no extra parameters.

With LR900-F radios: pair them, transparent mode, serial 115200 — the defaults work. One ground radio broadcasts to any number of air radios listening on the same channel — ideal per-fleet.

Which mode am I in? Both, if you like.

The rover simply eats RTCM from whichever source delivers it — GCS relay via the FC, or the 4P port. Don't run both simultaneously for the same vehicle; pick one path per session.

Step 3 — Confirm RTK FIXED

  • Mission Planner: HUD shows RTK Fixed; in the status tab gpsstatus reads 6 (RTK_FIXED; 5 = FLOAT). Horizontal accuracy (gpshacc) settles to centimeters.
  • QGroundControl: toolbar GPS indicator reads RTK Fixed.
  • Expect FLOAT within ~30 s of corrections flowing and FIXED shortly after with open sky. Stuck in FLOAT → see troubleshooting.

Dual-antenna GNSS heading (982)

The MA-RTK-AIR-982 Dual-Antenna Kit measures true heading from the geometry of its two antennas — no magnetometer involved, so motor current, steel structures and geomagnetic storms can't touch it.

Dual-antenna GNSS heading — two antennas on one baseline give yaw without a compass

Mounting rules:

  • Baseline (antenna separation) ≥ 20 cm — longer baseline = finer heading resolution.
  • ANT1 (primary) toward the nose, ANT2 aft, both on the airframe centerline (any known orientation works if you set the offset parameter).
  • Both antennas vertical with clean sky view; keep feeders away from power wiring.

ArduPilot:

GPS1_TYPE = 25 # UnicoreMovingBaselineNMEA
GPS1_RATE_MS = 100
EK3_SRC1_YAW = 2 # EKF yaw from GPS
GPS_POS1_X/Y/Z # ANT1 position relative to CG (m)

Write, refresh parameters, reboot. Verify on the bench: with the vehicle stationary, the HUD heading should track as you rotate the airframe — before any takeoff, and unlike a compass, it will be rock-solid next to a steel bench. You may then set COMPASS_USE = 0 to drop the magnetometer entirely, or keep it as a fallback source (EK3_SRC2_YAW).

PX4:

GPS_1_PROTOCOL = 6 # NMEA
EKF2_GPS_CTRL = 15 # position+velocity+yaw fusion
GPS_YAW_OFFSET = 0 # ANT1 forward; else clockwise offset in degrees

Heading accuracy scales with baseline — with the kit's antennas at 20–30 cm expect well under 1° once in RTK.

Troubleshooting

SymptomLikely cause → fix
Base COM port never appearsCH340 driver missing → install, replug
RTK Inject connects but 0 RTCM messagesWrong COM port or baud ≠ 115200; base PVT LED not solid yet (no fix → no corrections)
Rover stuck in RTK FloatMarginal sky at base or rover (multipath) → move base, raise rover antenna; weak radio link → shorten distance, check antennas; very long baseline → move base closer
FIXED drops in flightCorrection link dropping — telemetry bandwidth saturated (Mode 1: lower stream rates or switch to Mode 2) or radio range exceeded
982 shows position but no yawGPS1_TYPE still 24 (single) → set 25 and refresh; baseline < 20 cm; ANT2 sky view blocked
626 not detected by ArduPilotGPS_AUTO_CONFIG not 0, or port baud ≠ 115200
Heading offset by a constant angleANT1/ANT2 swapped or mounted off-axis → fix GPS_YAW_OFFSET (PX4) / antenna orientation
Erratic position near structuresMultipath — RTK cannot fix reflections; add height, move away from walls

FAQ

Can I fly RTK without any base station? Yes, via NTRIP: Mission Planner and QGC can pull RTCM from an internet caster (public network or paid service) and inject it exactly like Mode 1 — you need cell coverage at the field and a nearby reference station.

How many drones can one base + one radio serve? Unlimited — RTCM broadcast is one-way. Every rover in radio range gets the same corrections.

Does RTK still work if the correction link drops? The rover degrades gracefully: FIXED → FLOAT → normal GPS over a few seconds, and recovers automatically when corrections resume. Missions keep flying on ordinary GPS accuracy meanwhile.

Base and rover from different vendors? Fine — anything speaking RTCM3 interoperates.