From FLOAT to FIX in minutes: the systematic checklist for drone and rover RTK problems.
FLOAT-instead-of-FIX has four families of cause, and checking them in the right order saves an hour: the base (is it actually producing healthy corrections?), the link (are they arriving?), the sky (can the rover use them?), and the settings (do both ends agree on what is being sent?). Crews that jump straight to rebooting the rover fix the 20% of cases that were rover-side and burn the morning on the other 80%. Work the chain from the source outward — every symptom below slots into one family.
Confirm three things at the source before touching anything else. Converged, not converging: a PPP base still resolving its position (or a network-calibrated base mid-initialization) serves corrections around a moving reference — rovers wobble in FLOAT precisely as designed. The console's status card answers this in one glance. Actually broadcasting: base mode started, stream state live, and — on a base-hosted caster — the client count incrementing when a rover connects. Sane position: a base accidentally restarted into a fresh averaged position will serve perfect corrections around wrong coordinates; the symptom is a rover FIX that disagrees with known ground. Absolute self-positioning makes this failure class rare, which is much of its appeal (why bases drift in the first place).
The rover's correction age number is the link's lie detector: 1–2 s is healthy; climbing age means transport trouble. NTRIP paths: verify host, port, and the case-sensitive mountpoint character-for-character (a wrong-case mountpoint often “connects” and receives the sourcetable instead of corrections); confirm the client device — remember DJI's Custom Network RTK runs through the controller — actually has data connectivity; watch for age spikes at cellular handovers. Radio paths: antenna seated, frequency and over-air protocol (TrimTalk 450S, transparent, etc.) matched on both ends, terrain line-of-sight plausible, and duty/licensing limits respected. RC-link paths: passthrough enabled in the flight app and firmware current. Identical RTCM rides all three transports, so swapping transports is a fast isolation test: if radio fixes what NTRIP could not, the payload was never the problem (transport trade-offs).
With corrections arriving fresh, ambiguity resolution needs raw material: satellites, clean. Common-view matters — base and rover must share constellations, so a base under open sky feeding a rover in a slot canyon still struggles. Multipath is the quiet killer around vehicles, containers, steel structures, and wet high walls: the signature is a FIX that flickers to FLOAT and back, or converges then wanders. Move metres, not settings — three steps away from the ute has fixed more rovers than any menu. Ionospheric storms lengthen everyone's initialization on bad space-weather days; multi-frequency hardware rides them, single-frequency suffers. And elevation masks set too low invite horizon garbage: 10–15° is the sensible default.
The residue of cases lives in configuration seams. Constellation asymmetry: rover demanding Galileo from a base not broadcasting it (check the RTCM message list — the numbers to look for). Legacy format expectations: a very old rover wanting 1004/1012 while the base emits MSM only. Update-rate starvation on constrained radio links carrying too many message types. Datum surprises masquerading as RTK faults: a solid FIX “off by half a metre” is frame arithmetic, not float — see epochs and datums before blaming the receiver. Each mismatch is a two-minute fix once named; the skill is naming it.
When the pressure is on, run this literally. 1) Base console: converged? broadcasting? clients? 2) Rover: correction age under 3 s? If not — credentials, transport swap. 3) Sky: move the rover three metres from metal, recheck. 4) Status: FIX yet? If FLOAT persists with fresh corrections and clean sky, compare constellation lists both ends. 5) Still stuck: log RINEX and fly anyway — PPK rescues the dataset while you debug the link at leisure. Ninety percent of field FLOATs die at steps 1–3; the script's real value is that it stops the random rebooting that destroys evidence.
The cheapest troubleshooting is the fault that never fires. Sixty seconds before the first battery: base console shows converged and broadcasting with client count where expected; rover or Pilot 2 shows FIX with correction age 1–2 s and standard deviations settled in the 1–2 cm band; and one glance at placement — nobody parked the ute beside the base, no new container throwing multipath at the rover's first waypoint. Crews that ritualize this minute report that the four-family script above becomes something they read about rather than run; the FLOATs that remain are genuine physics (a ridge, a storm) rather than process misses. Pair it with RINEX logging always-on and even the genuine physics loses its teeth (the insurance workflow).
Ticket one: rover FIXes at the truck, FLOATs at the pad 800 m away — correction age climbing on approach. Family 2, radio link: the whip antenna had been swapped for a stubby after transport; full-size antenna restored the horizon. Ticket two: everything healthy, FIX solid, but stakeout lands 40 cm off the design — Family 4 wearing a disguise: the controller had last week's localization file; frames, not floats (the datum lesson). Ticket three: FIX flickering rhythmically every few minutes on a calm day — Family 3: the rover pole was staged against a parked water cart between shots, multipath breathing with the operator's rhythm; three metres of separation ended it. The pattern to internalize: the symptom's texture (age behaviour, offset constancy, flicker rhythm) names the family before any menu opens.
Generic scripts triage; site playbooks prevent recurrence. After each resolved ticket, add one line to the site file: symptom, family, fix, and the tell that would have shortened it. Within a season the playbook reads like the site itself — ‘north pit rim shadows radio below bench 3: use NTRIP on the mesh’, ‘containers at laydown throw multipath: checkpoint on the west plinth instead’ — and new crew inherit in ten minutes what cost the first crew ten mornings. The correction architecture stays constant; the playbook is where the local knowledge lives.
The stream anatomy behind Family 4's message mismatches is in RTCM explained; the transport behaviours behind Family 2 are compared in the correction-path guide.
Carrier-phase ambiguities have real-number estimates but no integer resolution — accuracy sits at decimetres. FIX means integers resolved and centimetre confidence.
Radio shadow: corrections stop, age climbs, solution degrades. Raise the base antenna, relay from the crest, or switch that mission to NTRIP/RC-link transport.
Sky and settings families: multipath near metal, constellation mismatch between base and rover, or severe ionospheric conditions. Move first, then compare message lists.
A FIX certifies the geometry to centimetres relative to the base. If the base's own coordinates are wrong, the FIX is faithfully wrong too — verify with a known point or checkpoint.
UAV Mate is a self-converging PPP/RTK base station: 1.5 cm ITRF2020 coordinates in minutes, broadcast to any RTCM 3.x drone or rover.
See UAV Mate