Flights & Data

Importing flight logs into UAS Dashboard

Upload log files, sync from a connected source, or enter hours by hand — and understand how UAS Dashboard turns each import into one flight record.

10 min read Updated August 30, 2026For pilots and program admins

Every flight in UAS Dashboard starts as data from somewhere else — a log file on a controller, a vendor cloud account, or a pilot's memory of a flight the aircraft never recorded. This article covers each of those paths, what each fills in, and how the system keeps one flight from becoming three records.

Any signed-in user can upload a log. Adding vendor credentials and uploading flight spreadsheets are System Admin jobs; logging manual hours for a pilot requires Supervisor or above.

Before you start. Find Import in the sidebar under Management. It is visible to

everyone on every plan — file upload is part of the base flight-log product. The AirData section

inside the page only appears on instances that have the integrations feature and a saved API key.

How flight data gets in

There are four lanes, and most programs use two or three at once. All four end up as one canonical flight record on the Flights list and the flight map; what differs is how much of it arrives filled in.

PathWhere you do itWho can use it
Log-file uploadImport page (drag and drop)Any signed-in user
Mobile auto-syncThe mobile app's sync settingsAny signed-in user
Connected sourceAdmin → Integrations, then automaticSystem Admin sets it up
Manual entryA pilot's Manual Hours tabSupervisor and above

Uploading log files on the Import page

The Import page's drop zone takes standard flight logs from any aircraft, with no vendor account involved. Drag files onto it, or click browse files to pick them.

FormatExtensionsTypical source
ArduPilot DataFlash.binMission Planner, ArduPilot autopilots
MAVLink telemetry log.tlogGround stations recording a MAVLink link
PX4 ULog.ulgPX4 autopilots
GUTMA.json, .gutmaVendors that export the open GUTMA format
DJI flight record.txtDJI Fly, GO 4, Pilot, and smart controllers

You can select many files at once; the limit is 40 MB per file, and up to 20,000 telemetry points are stored per flight. Each file reports its own result line — format, points, duration and distance — so a batch that half succeeds tells you which halves.

On a DJI smart controller (RC Plus / RC Pro)? You don't need to export anything. Install

the Android app directly on the controller, grant the DJI Pilot 2 flight-record folder once,

and every flight uploads itself about a minute after landing — see

Installing the app on a DJI smart controller.

DJI records need one extra piece. DJI flight records from log version 13 onward are

encrypted, and decrypting them requires a DJI Open API key configured on your instance. Without

it the upload fails with a message saying so, rather than silently dropping the flight — ask your

System Admin to add the key, then re-upload.

Syncing from a connected source

Connected sources pull flights in without anyone touching a file. A System Admin enters the credential once under Admin → Integrations, where it is encrypted at rest and never shown again.

  • AirData — the Import page grows a section with three cards: Flights, Pilots and UAS. Each stages what AirData has, minus anything already in your database, into a review table where you can edit a row, import one, or use Add All.
  • Skydio Cloud — save an organization API token, then use Sync now or let the schedule run.
  • DJI FlightHub 2 — save the API token; flights arrive the same way.
  • DJI Dock 3 — point the dock's bridge at the endpoint the admin page shows, sending the receiver secret in the x-dock-secret header.

Skydio and FlightHub sync on a timer as well as on demand: the instance keeps a per-source cursor and re-polls when it goes stale. Dock flights push in as they land.

Connected sources are an Enterprise capability. The integrations feature is never available

on the shared Core instance, on any plan. File upload, mobile sync and manual entry all work

everywhere.

Hands-off imports: mobile sync and the desktop watcher

Two tools automate the upload step for logs that live on a device.

The mobile app syncs a folder. Turn on Auto Sync Flight Logs in its settings, point the folder picker at the app folder that directly contains the flight records, and tap Sync Now. New flights then upload when you open the app, and Sync depth — 1 day, 1 week, 2 weeks, 1 month, or All — controls how far back each scan looks. The app asks the server which files it already holds first, so a reinstalled phone or a second device on the same controller does not re-send everything.

The desktop log-sync tool watches a folder on a computer and uploads new standard-format logs on a poll interval — a Mission Planner folder, an SD-card mount, or a folder you copy controller records into. It authenticates with the instance's ingest key rather than a login, and handles .bin, .ulg, .tlog, .gutma and .json. Encrypted DJI .txt records are not part of that lane; upload those through the web page or the mobile app.

Logging hours when there is no log

Some flights never produce a retrievable log. Record those by hand so totals and currency stay honest.

  1. Open the pilot's page from Pilots and select the Manual Hours tab.
  2. Choose Log Hours.
  3. Enter the date and a duration in minutes, plus optional aircraft type, night flag, and notes.

Manual entries count toward the pilot's totals and currency alongside imported flights, but they are hours, not flights: no track, no aircraft record, nothing on the map. Supervisors and above can add and remove them. For what currency actually requires, see the Part 107 guide.

For bulk historical data there is a spreadsheet lane. Under Admin → Integrations → Manual flight upload, a System Admin can upload a decrypted flight export as CSV or JSON. Column names are matched loosely — takeoff time, serial, pilot, duration, latitude and longitude are each recognized under several spellings — and rows carrying neither a time nor a serial are skipped. These become real flight records, but with no telemetry track.

One flight, one record: how duplicates are reconciled

Every import, whatever its lane, is written as a canonical flight: one record keyed by your instance, the source it came from, and that source's own flight ID. That key is unique, which is what makes re-importing safe — a second copy updates the existing record instead of creating a new one.

Reconciliation is deliberately conservative about what an update may overwrite:

  • Telemetry completeness only improves; a resync carrying no track cannot downgrade a flight that already has one.
  • Photos and videos merge by ID rather than replacing the previous list.
  • A pilot assigned after import — by hand or by checklist — is never clobbered by an empty pilot field from the vendor, and a manually set title is never overwritten by auto-enrichment.

Uploaded files get a second layer of protection: the server ledgers every log file it has ingested by name and size, so re-dropping a folder you already uploaded is a no-op. Logs without a source flight ID get one derived from their takeoff time, aircraft serial and sample count. AirData rows are filtered against your existing records before staging and checked again on save.

Re-uploading is safe; renaming is less tidy. The file ledger matches on name and size, so a

log you renamed looks new to it — the flight itself still reconciles on its content-derived ID,

so you get one flight, not two.

How imported flights connect to pilots, units, and aircraft

Most log formats do not name a pilot, so attribution follows a chain. The log's own pilot name wins if it has one. Otherwise a signed-in person's upload goes to their linked pilot record, falling back to their display name. Machine uploads — the desktop watcher, docks, vendor APIs — have no user, so they land on the agency's catch-all pilot, set under Admin → Flight Checklists → Dashboard settings. Completing that flight's checklist promotes whoever filled it out to Remote PIC, which is how autonomous and dock flights find their operator.

The unit follows the pilot: the pilot record's unit first, the importing user's unit as a fallback. Aircraft match on serial, and a serial not yet in your UAS registry is added with status pending so someone reviews it rather than finding a silently active airframe. It is mirrored into equipment so airframe hours accumulate, and battery serials link to their equipment records the same way.

Here is where each part of a flight record comes from:

On the flight recordFilled from
Takeoff, landing, durationFirst and last usable GPS fix in the log
Track, max altitude, max speed, distanceThe parsed telemetry samples
Aircraft make, model, serialThe log header, when the format carries it
Battery start and end percentageThe log's battery telemetry
rPICLog pilot, then importer, then catch-all pilot
UnitThe rPIC's unit, then the importer's unit
Title and addressTakeoff date and time; reverse-geocoded takeoff point

Weather and nearby TFRs are captured automatically for new imports, and every import is written to the audit log with the format it came from.

When a log is missing data

  • No usable position fix. The flight is rejected — there is nothing to build a record from. Log the hours manually instead.
  • A bad clock. Pre-GPS-lock samples and glitched timestamps are filtered out; when a whole log carries an implausible clock the timeline shifts so relative timing survives, and a DJI record whose filename holds the real local date and time is rebased onto it.
  • No pilot named. Attribution falls through the chain above. Fix it on the flight page — a Supervisor can add or change participants, including Pilot in Command.
  • No aircraft serial. The flight imports, but nothing is added to the fleet and no airframe hours accrue.

Frequently asked questions

What file types can I upload?

The Import page accepts ArduPilot DataFlash .bin files, MAVLink .tlog telemetry logs, PX4 .ulg logs, GUTMA logs as .json or .gutma, and DJI flight records as .txt. Files are limited to 40 MB each, and you can drop several at once. If a file's extension is unusual, the parser still inspects the contents before rejecting it.

Will re-uploading the same log create a duplicate flight?

No. The server keeps a ledger of ingested files by name and size, and separately keys every flight by its source and source flight ID. A repeat upload updates the existing record rather than adding a second one. Dropping an entire folder onto the page when only a few files are new is the intended way to use it.

Why is my imported flight attributed to the wrong pilot?

Most log formats do not record who flew. When you upload a log yourself, it is attributed to you. Machine and dock imports go to the agency's catch-all pilot instead. To correct it, open the flight and have a supervisor set the Pilot in Command participant, or have the pilot complete the flight's checklist, which claims the flight for whoever filled it out.

Do I need AirData to use UAS Dashboard?

No. AirData is one optional source among several, available on Enterprise instances once an admin saves an API key. File upload, mobile folder sync, the desktop watcher and manual hour entry all work without any vendor account, and they cover any aircraft that writes a standard log format.

My drone never produced a log file. What do I do?

Log the time by hand on the pilot's Manual Hours tab. Enter the date, duration in minutes, and optionally the aircraft type and whether it was a night flight. Those hours count toward the pilot's totals and currency the same as imported flights, though they carry no track and do not appear on the flight map.

Where to go next

Flight records and maps covers what to do with the flights once they are in — the track view, missions, participants and exports. If you are still setting the program up, getting started walks through the pilots, units and aircraft imported flights attach themselves to, and the UAS recordkeeping guide covers what you are required to retain.

Ready to set this up in your own instance?

Every workflow in this documentation is available on the free core platform. Agencies that need units, role-based access, DFR tools, and a dedicated instance run on Enterprise.

Product updates only — no spam, unsubscribe anytime.