What happened on that flight? Replaying an ArduPilot log with its video and the settings it had

Ben Butterworth ·

To find out what happened on an ArduPilot flight, you need three things at the same moment: where the vehicle was and what mode it was in, what the camera saw, and which parameters it was flying with. UXDuck puts them on one timeline. Open a tlog or bin from the Logbook, add the flight's video with Add a video…, and press play. The maps, the Cockpit and every other tab show the flight as it was, the video plays in step, and the Parameters tab shows each value as the vehicle had it at that second, with every change marked on the timeline and who made it.

This post is for whoever has to answer "why did it do that?" after a flight: a flight-test engineer at the end of a test day, a team lead reading a crash report, or a pilot whose copter went home on its own. Each section below cites someone asking the same question in public and shows what UXDuck 0.13.0 does about it, with a real flight replayed step by step.

Why is "what happened on that flight?" slow to answer?

Because the answer is spread across three tools. The log is in one, the video in another, and the parameters in a third, and none of them share a clock.

Parameters are the clearest example. In August 2023 a Copter user wrote on ArduPilot Discourse: "I recently flew my vehicle to tune some parameters. Now I am analyzing the logs and I want to know if there is a way to see within the log when a specific parameters was changed so I can see the effects of the parameter change" (ArduPilot Discourse). The replies are good, and they show the work involved: save your current parameters to a file, open the old log in Mission Planner's "Review a Log", then Show Params and Compare Params, ignoring "a bunch of read only system parameters that always change, like flight time and boot count". Or use MAVExplorer's paramchange command, which "will show the old and new values". More than a year later, someone else in the same thread had zoomed into part of a flight in Mission Planner and selected Show Params, but "when I clicked on 'Modified,' nothing showed up". An earlier thread asks for "better ways to extract the parameters and their settings" from a DataFlash file (ArduPilot Discourse).

Video is the second. ArduPilot's own Video Overlay web tool exists to "Synchronise ArduPilot DataFlash log telemetry with video footage and export a composited video with telemetry overlay", and you line them up by setting "the sync offset" by hand (ArduPilot Video Overlay). It sits on ArduPilot's work-in-progress tools page. Before it, people screen-recorded Mission Planner's tlog playback next to their onboard video. One found in 2019 that "the video can't be synchronized with the telemetry data" and that "I had to speed up the video to 106.4 % to achieve a correct synchronization with the onboard video" (ArduPilot Discourse).

Graphs are the part that's solved. UAV Log Viewer at plot.ardupilot.org is "an easy to use viewer for ArduPilot dataflash and telemetry logs", where data "can be plotted and even manipulated, and the flight visually re-flown in 3D" (ArduPilot docs). When you know which field to graph, use it.

What's slow is the step before the graph: watching the flight, with its video and its settings, until you know where to look.

How do I open an ArduPilot log in UXDuck?

From wherever the log already is (Replay a flight):

  • Flights flown with UXDuck are in the Logbook. Click one, or its Replay link.
  • A file: Logbook › Open .tlog or .bin…, or drop a telemetry log (.tlog) or a DataFlash log (.bin) on the window. Mission Planner's, QGroundControl's and MAVProxy's telemetry logs all open.
  • The vehicle's SD card: plug it in and the Logbook offers to copy its DataFlash logs.
  • Mission Planner's and QGroundControl's own folders: UXDuck Desktop looks in Documents/QGroundControl/Telemetry and Documents/Mission Planner/logs and lists their flights in the Logbook, behind the menu beside On this computer. They replay straight from the file, and nothing is copied. Settings › Logbook › Logs from other apps turns each folder on or off and adds others, such as MAVProxy's (Logs from other apps).
The Logbook: a simulated Sim 1 flight on 7 November, 2 min 31 s, highest 20 m, with a Replay link, beside Open .tlog or .bin and Export CSV
The Logbook in UXDuck 0.13.0. Replay opens the flight.
Open .tlog or .bin with its tooltip: Replay a telemetry log from any ground station, or the autopilot's own log from its SD card. You can also drop either on the window.
Open .tlog or .bin… takes a log from any ground station

Prefer the terminal? uxduck replay flight.tlog --play --speed 5 opens the same replay, which is handy in a script.

A replay plays from 10 seconds before arming to 10 seconds after the flight ends, and turning off Armed only on the bar plays the rest. Nothing can be sent to a replay vehicle, so you can click around a crash without worrying about what you might command.

What does a replay show?

Everything the tabs show when the vehicle is live, as it was at the replay's time: the vehicle flying its path on both maps, the Cockpit, Telemetry, Messages and Parameters. The bar at the foot plays and pauses, sets the speed from ¼× to 16×, and steps a frame at a time with , and . (The bar).

Above it, Details opens the timeline. Its lanes are Armed, In air, Moving, Modes, Settings and Warnings, plus one lane for each video. "Click or drag along the lanes to seek, or click a warning to jump to it." So the first question, "when did it change mode, and why?", is answered by looking at where the Modes lane changes and what sits in the Warnings and Settings lanes just before it.

The replay bar at 0:27 of 2:53 with Details open: lanes for Armed, In air, Moving, Modes with GUIDED then RTL, Settings, Warnings and Video
A short simulated flight opened from the Logbook, with Details open

A real flight: a low-battery failsafe, replayed

Here's one flown on 7 November 2026 in UXDuck Desktop 0.13.0 on Linux, with UXDuck's own ArduPilot Copter simulator. It's a simulated quadcopter, so the "camera" is a screen recording of UXDuck's 3D view taken during the flight. A screen recording of your simulator is one of the videos Add a video is made for (Add a video).

  1. 16:01:07: it takes off and climbs to 40 m in GUIDED.
  2. 16:01:31: it's sent to a point to the south-west.
  3. 16:03:57: while it holds there, two battery failsafe settings are changed in the Parameters tab: BATT_LOW_MAH from 0 to 1500 and BATT_FS_LOW_ACT from 0 to 2, which is RTL on Copter (ArduPilot battery failsafe). The reason typed for the change was "Testing the low-battery failsafe".
  4. 16:04:51: the vehicle says "Battery 1 is low 12.31V used 1801 mAh" and "Battery Failsafe", and switches to RTL.
  5. 16:06:38: it lands at home and disarms with 19% left. Straight after, it says "PreArm: Battery 1 low capacity failsafe", so it won't arm again on that battery.

In the replay, all of that is on the timeline without opening a single graph. The Modes lane shows STABILIZE, a long GUIDED and then RTL. The Warnings lane has a mark where RTL begins and another after landing. The Settings lane has a mark at 2:58, and hovering it says "2:58 · BATT_LOW_MAH 0 → 1500 by UXDuck". The video lane is labelled with the file's name.

The replay paused at 3:52 as RTL begins: the map, the screen recording showing Armed and RTL, BATT_LOW_MAH at 1500 in Parameters, and the timeline with Modes, Settings, Warnings and video lanes.
UXDuck Desktop 0.13.0 replaying a simulated Copter flight with its video.
Hovering the Settings lane shows 2:58 · BATT_LOW_MAH 0 → 1500 by UXDuck.

Pause at 3:52, where RTL begins. The map shows the vehicle turning for home, and the video shows the 3D view's own display reading "Armed · RTL" and "Battery left 45%". The Parameters tab says "All 1,427 · as at 16:04:51" and shows BATT_LOW_MAH as 1500. Drag back to 2:58 and it says "as at 16:03:56" and shows 0, because one second before the change, that's what the vehicle was flying with.

Parameters as at 16:03:56, one second before the change: BATT_LOW_MAH is 0.
Parameters as at 16:04:51, when RTL begins: BATT_LOW_MAH is 1500, and the video shows Armed, RTL and Battery left 45%.

That's the whole answer to "why did it come home?": the settings changed at 16:03:57, its estimated remaining capacity dropped below the new 1,500 mAh threshold 54 seconds later, and the failsafe did what it was set to do.

How do I see when a parameter changed in an ArduPilot log?

Open the replay's Parameters tab. It shows the values as the log had them at the replay's time, from a parameter download in the log or the one before the flight (Parameters in a replay). The line above the list says how many there are and when, such as "All 1,427 · as at 16:04:51". Search works as it does on a live vehicle.

Click that line to list every setting changed in the log, with its time, its old and new value, and who changed it. For the flight above:

The list of settings changed in the log: MIS_TOTAL and both barometer ground pressures by the vehicle at 15:59:29, BATT_FS_LOW_ACT 0 → 2 and BATT_LOW_MAH 0 → 1500 by UXDuck at 16:03:57, MOT_THST_HOVER by the vehicle at 16:06:36, and 36 changes of vehicle statistics not listed.
Every setting changed in the log, and who changed it

Two things in there are easy to miss when you compare parameter files. The barometer ground pressures and the hover throttle were changed by the vehicle itself, not by anyone at the ground station: Copter learns MOT_THST_HOVER in flight and saves it. And the 36 changes to vehicle statistics, the flight time and boot counters the Discourse reply says to ignore, are folded away for you. They're still there if you want them.

Values first read later in the log are marked later in the list, and values seen only before the vehicle restarted are left out, because they may not be current.

How do I sync a video with an ArduPilot log?

Add it to the replay. Choose Add a video… on the replay's Camera tab, or Logbook › … › Add a video…, and pick the file. The dialog says what it takes: "A screen recording or a phone's video from the same time: MP4, MOV or MPEG-TS. It stays where it is and plays with the replay." H.264 and HEVC play as they are, and MPEG-2 is converted once (Add a video).

The Camera tab's Add a video dialog on a replay with no video yet.

UXDuck places the video by its KLV time stamps when it has them. Otherwise it uses the time the file says it began, and if there's nothing to go on, the arming. Then you check it the obvious way: pause where the video shows the take-off and press This is the take-off, or This is the landing. The Camera tab also nudges it by −1 s, −0.1 s, +0.1 s or +1 s, or you can type when it starts. In the flight above, Starts at reads 16:00:40.0, the second the screen recording started.

Each video you add is its own camera with its own lane, and stays where you put it, so a phone video from the ground and a payload recording can both play with the same flight.

If what you need is a finished video with telemetry burnt into it, to post or send, ArduPilot's Video Overlay tool exports exactly that. UXDuck's replay is for watching a flight and working out what happened, not for exporting a composited video.

Can I replay several flights from a test day together?

Yes. An operation's Replay plays all its flights on one clock. If one is a little off, nudge it in the bar's sources list, and the operation keeps the nudge so it opens matched next time (Several flights together).

A log you opened from a file can be kept too: Save to account on the bar saves its flights to your account and uploads the log, so they replay on your other computers, and in UXDuck Web with nothing installed (Save a log to your account). Uploading needs UXDuck Desktop.

Can an AI agent read a replay?

Yes. With UXDuck connected to Claude or Codex over uxduck mcp, an agent reads a replay vehicle's parameters at the replay's time, or at a time it asks for, and param_changes lists what changed in the log, leaving vehicle statistics out unless it asks (Parameters in a replay, Use with AI agents). So "what was BATT_FS_LOW_ACT when it went into RTL, and who changed it?" is a question you can ask in words.

Which ArduPilot log viewer should I use?

It depends on the question.

ToolBest forVideoParameters over time
UAV Log Viewer (plot.ardupilot.org)Graphing any field and re-flying in 3D, in a browserNoParameters panel
Mission Planner, Review a LogGraphs and Auto Analysis on WindowsNoShow Params, and Compare Params against a file
MAVExplorerScripted analysis from a terminalNoparamchange with old and new values
ArduPilot Video OverlayExporting a video with telemetry burnt inYes, offset set by handNo
UXDuckReplaying the whole flight with its video and settings on one timelineYes, placed by KLV, file time or armingValues at each moment, with who changed them

UXDuck 0.13.0 doesn't graph log fields. When the replay has shown you where to look, UAV Log Viewer is the tool for the graph.

If you're new to ArduPilot, replays are also the quickest way to learn from your own flights, which the post on learning ArduPilot covers.

Log problems and where UXDuck covers them

ProblemWhat UXDuck doesGuide
Logs in different placesOpens .tlog and .bin, SD cards, and Mission Planner's and QGroundControl's log foldersReplay a flight
Finding the moment that mattersTimeline lanes for arming, in air, moving, modes, settings, warnings and videoThe bar
Video on its own clockAdd a video, placed by KLV, file time or arming, with take-off and landing buttonsAdd a video
Which parameters were in effectParameters as at the replay's time, and every change with who made itParameters in a replay
A test day of flightsAn operation's flights on one clockSeveral flights together
Asking about a flightparam_changes and parameters at a time over uxduck mcpUse with AI agents

Try it

  1. Download UXDuck. Adding a video needs UXDuck Desktop.
  2. Open Logbook › Open .tlog or .bin… and pick a .tlog or .bin, or one Mission Planner or QGroundControl already has.
  3. Open the Camera tab, choose Add a video…, and pick the flight's video.
  4. Press play, open Details, and click the first mark in the Settings or Warnings lane.

No log to hand? Open app.uxduck.com, choose Start flying, fly for a minute, then replay it from the Logbook.

Frequently asked questions

Can UXDuck open Mission Planner and QGroundControl logs?

Yes. It opens their telemetry logs (.tlog) and ArduPilot DataFlash logs (.bin). UXDuck Desktop also finds the logs in Mission Planner's and QGroundControl's own folders and replays them from the file without copying them.

How does UXDuck line up a video with an ArduPilot log?

By the video's KLV time stamps when it has them, else by the time the file says it began, else at the arming. You can then mark the take-off or the landing in the video, nudge it by a tenth or a whole second, or type when it starts.

Which video formats can I add to a replay?

MP4, MOV and MPEG-TS. H.264 and HEVC play as they are, and MPEG-2 is converted once. The file stays where it is.

Can I see which parameters were set at a moment in the flight?

Yes. A replay vehicle's Parameters tab shows each value as the log had it at the replay's time. Clicking the count above the list shows every change in the log, with its time, old and new value, and who changed it.

Does UXDuck plot log graphs?

Not in UXDuck 0.13.0. It replays the whole flight with its video and settings. For graphing log fields, UAV Log Viewer at plot.ardupilot.org is ArduPilot's recommended tool.

Can I replay a log in the browser?

Yes. UXDuck Web replays flights flown in the browser and logs saved to your account. Adding a video and uploading a log need UXDuck Desktop.

Can a replay send commands to a vehicle?

No. Nothing can be sent to a replay vehicle, and nothing is recorded of it.

Is UXDuck free?

UXDuck is free for personal, non-commercial use and non-commercial academic use. For business or government use, contact support@uxduck.com for pricing.