Skip to content

Latest commit

 

History

History
1172 lines (818 loc) · 40.6 KB

File metadata and controls

1172 lines (818 loc) · 40.6 KB

Open DroneLog User Manual

A comprehensive guide to using Open DroneLog, your local-first drone flight log analyzer.


Table of Contents


Overview

Open DroneLog is a high-performance application for analyzing drone flight logs. It supports DJI flight logs (.txt format), Litchi CSV exports, and Airdata CSV exports. All your data is stored locally in a DuckDB database with no cloud uploads, no subscriptions, and complete privacy.

Key Capabilities

Feature Description
Unlimited Imports Import and manage as many flight logs as you need
3D Visualization Interactive flight path visualization with replay
Telemetry Analysis Comprehensive charts for all flight data
Smart Tagging Automatic descriptive tags based on flight characteristics
Advanced Filtering Powerful filtering, search, and sorting options
Photo/Video Tracking Automatic detection and counting of media captures
Battery Tracking Health monitoring and maintenance scheduling
Manual Entry Record flights without log files
Multiple Exports Export to CSV, JSON, GPX, and KML formats
Full Backup Complete database backup and restore
Profiles Multiple isolated profiles with optional password protection
Single Instance Only one app window runs at a time (desktop)

Getting Started

First Launch

When you first open Open DroneLog, you will see an empty dashboard with the import section expanded. The application automatically detects whether you have existing flights and adjusts the interface accordingly.

Importing Your First Flight

  1. Click Browse Files or drag-and-drop flight log files onto the import area
  2. Select your DJI .txt files, Litchi .csv files, or Airdata .csv files
  3. Wait for processing (the app will decrypt DJI logs, which requires internet on first import)
  4. Your flights appear in the sidebar list

Note

DJI V13+ flight logs require decryption keys from DJI's servers. You need to be online during the first import of each new log file. Once imported, the keys are cached locally for offline use.


Interface Layout

The application is divided into three main areas:

Left Sidebar

Component Function
View Toggle Switch between "Flights" and "Overview" modes
Import Section Drag-drop area and browse button (collapsible)
Filters Section Date range, drone, battery, tags, and range filters (collapsible)
Flight List All imported flights with selection, sorting, and search

Main Panel: Flights View

Section Content
Top Telemetry charts showing flight data over time
Bottom Interactive 3D flight map with replay controls

Main Panel: Overview View

Section Content
Statistics Cards Total flights, distance, time, and data points
Activity Heatmap Calendar view of flight activity
Charts Flights by drone, battery, duration, and time of day
Cluster Map Geographic view of all flight locations with optional heatmap
Battery Health Per-battery health indicators
Top Flights Longest and furthest flights
Maintenance Track maintenance schedules for batteries and aircraft

Resizable Panels

  • Drag the divider between sidebar and main panel to resize
  • Drag the horizontal divider between charts and map to adjust the split
  • Collapse the telemetry panel completely by dragging it to minimum width

Importing Flight Logs

Supported Formats

Format File Extension Source
DJI Flight Logs .txt Modern DJI format from DJI Fly app
Litchi CSV .csv Exported from Litchi app
Airdata CSV .csv Exported from airdata.com (all unit settings supported)
External Parser Plugins Depends on plugin User-defined parsers configured via parsers.json

Import Methods

Method Description
Drag and Drop Drag files directly onto the import area
Browse Button Click "Browse Files" to open a file picker
Multiple Files Select multiple files at once for batch import
Folder Sync Configure automatic import from a mounted folder

Sync Blacklist Behavior

When a file is deleted from a sync-imported workflow, its content hash is added to the sync blacklist so scheduled folder sync will skip that file in future runs.

You can manage these entries from Settings → Manage blacklisted logs (count):

  • View blacklisted entries with filename/presence status (when resolvable from the sync folder)
  • Select one or more entries and clear only the selected items

You can also use manual import as an alternative blacklist removal for specific files:

  • Import the file via Browse Files or Drag and Drop
  • The app imports it and automatically removes that file hash from the sync blacklist in the same flow

This is useful when you want to re-allow and import a specific file immediately, without opening the blacklist manager.

Duplicate Detection

The app automatically detects and prevents duplicate imports based on:

  • Drone serial number
  • Battery serial number
  • Exact start time

Tip

You can safely re-import files without creating duplicates. The app will skip any flights that already exist in your database.

Customization Persistence

When you customize a flight (rename, add notes, change color, or add manual tags), those customizations are automatically saved in a persistent overlay keyed by the file's content hash. This means:

  • If you delete a flight and re-import the same log file, your custom name, notes, color, and manual tags are automatically restored
  • This works for both individual flight deletion and bulk "Clear Project Database" operations
  • Manual-entry flights (which have no log file) are excluded from this feature
  • Customizations are included in database backups and restored along with them

Import Progress

During import, you will see:

  • Current file being processed
  • Progress counter (X of Y files)
  • Any errors or warnings

Manual Flight Entry

For flights where no log file is available (e.g., flights with other apps, flights before you started logging, or when logs were lost), you can manually create flight records.

Accessing Manual Entry

Click the Manual Entry button in the Import section of the sidebar.

Required Information

Field Description
Flight Title Optional custom display name (defaults to Aircraft Name if left blank)
Aircraft Name Name or model of the drone used
Drone Serial Serial number of the aircraft
Battery Serial Serial number of the battery used
Date Flight date (calendar picker)
Time Takeoff time in 12-hour format (converted to UTC internally)
Duration Flight duration in seconds
Home Latitude Takeoff location latitude (-90 to 90)
Home Longitude Takeoff location longitude (-180 to 180)

Optional Information

Field Description
Total Distance Distance traveled (in current units)
Max Altitude Maximum altitude reached (in current units)
Notes Additional notes about the flight

After Creating a Manual Entry

  • The flight is automatically tagged with "Manual Entry"
  • Smart location tags (city, country, continent) are generated from the coordinates
  • The flight appears in your flight list and overview statistics
  • Manual entries can be exported, but since they have no telemetry data:
    • CSV exports contain a single row with home coordinates and metadata
    • GPX exports contain a waypoint at the home location
    • KML exports contain a point placemark at the home location

Note

Manual entries have no telemetry data, so the charts panel will be empty and the map will show only the home location marker.

Tip

In the Date picker, you can also type a date directly in YYYY-MM-DD format and click Go for faster navigation.


Profiles

Open DroneLog supports multiple named profiles. Each profile is a fully isolated environment with its own database, configuration, uploaded files, and sync folder. This is useful for separating data by pilot, drone fleet, client, or purpose.

Creating a Profile

  1. Click the profile selector dropdown in the header (next to the logo)
  2. Click New Profile
  3. Enter a profile name (letters, numbers, hyphens, and underscores)
  4. Optionally enter a password to protect the profile
  5. If a master password is configured (Docker/web), you'll also need to enter it
  6. Click Create

Switching Profiles

  • Click the profile selector and choose the desired profile
  • If the profile is password-protected (shown with a lock icon), you'll be prompted to enter the password
  • Each browser tab maintains its own active profile (via tab-scoped storage), so you can have multiple tabs open on different profiles
  • Session tokens use a hybrid strategy: sessionStorage for per-tab isolation plus localStorage as a persistent fallback, so sessions survive browser restarts without conflicting across tabs

Deleting a Profile

  1. Click the trash icon next to the profile name in the dropdown
  2. If the profile is password-protected, enter the profile password
  3. If a master password is configured, enter it as well
  4. Confirm deletion

Warning

Deleting a profile permanently removes its entire database, including all flights, telemetry, tags, and settings. This cannot be undone.

Password Protection

Any profile (including the default profile) can be protected with a password:

  • Set a password: Go to Settings → Profile Password and enter a new password
  • Change a password: Enter the current password and the new password in the same section
  • Remove a password: Enter the current password and click Remove Password

Password details:

  • Passwords are hashed with argon2id (industry-standard)
  • In web/Docker mode, a successful login issues a session token (valid for 24 hours by default, configurable via SESSION_TTL_HOURS env var)
  • When a session expires or becomes invalid, the app automatically clears the token and shows the login overlay
  • Desktop auto-lock: On the desktop app, profiles automatically lock when the app closes and prompt for re-authentication on the next launch
  • Lockout: 5 consecutive failed password attempts lock the profile for 60 seconds
  • Protected profiles show an amber lock icon in the profile selector dropdown

Master Password (Web/Docker Only)

Administrators can set the PROFILE_CREATION_PASS environment variable to require a master password for creating or deleting profiles. This prevents unauthorized users from adding or removing profiles on shared instances.

environment:
  - PROFILE_CREATION_PASS=your-secret-master-password

Default Profile Password Bootstrap (Web/Docker Only)

Administrators can optionally set DEFAULT_PROFILE_PASSWORD to initialize a password for the default profile at startup.

environment:
   - DEFAULT_PROFILE_PASSWORD=your-default-profile-password

Behavior details:

  • Applied only when the default profile does not already have a password
  • If a password is already set for default, startup skips initialization and logs that it was skipped
  • If the env var is unset or set to an empty string (and no existing password is present), default remains unprotected

Flight List and Selection

Viewing Flights

The flight list displays all imported flights with the following information:

Field Description
Flight Name Editable display name
Date and Time When the flight occurred
Duration Total flight time
Distance Total distance traveled
Drone Model Aircraft used
Tags Colored badges for categorization

Selecting a Flight

  • Single Click loads the flight data into charts and map
  • Selected flight is highlighted with a colored border
  • Double-click opens rename mode

Renaming Flights

  1. Double-click on a flight name, OR
  2. Hover over a flight and click the edit icon
  3. Type the new name
  4. Press Enter to save or Escape to cancel

Deleting Flights

  1. Hover over a flight to reveal the delete button
  2. Click the delete button
  3. Confirm the deletion in the popup

Warning

Deleted flights cannot be recovered unless you have a database backup. However, custom flight names, notes, colors, and manual tags are preserved and will be automatically restored if the same log file is re-imported.

Context Menu Actions

Right-click on any flight in the list to access additional actions:

Action Description
Rename Edit the flight name
Delete Remove the flight from the database
Regenerate Smart Tags Re-apply automatic tags to this flight
Generate FlyCard Create a shareable image with flight stats (disabled in Overview mode)
Export Export this flight to CSV, JSON, GPX, or KML

Sorting Options

Click the sort dropdown to sort flights by:

Option Behavior
Name Alphabetical order
Date Newest or oldest first
Duration Longest or shortest
Distance Furthest or nearest
Color Sorted by customized flight color

Toggle ascending/descending with the arrow button.


Filters and Search

Accessing Filters

Click the Filters header in the sidebar to expand or collapse the filter section. Filters persist across sessions.

Available Filters

Date Range

  • Click the date button to open a calendar picker
  • Select a start date (From) and end date (To)
  • You can also type start and end dates directly using two YYYY-MM-DD input fields and click Go
  • Clear with the X button

Drone Filter

  • Multi-select dropdown showing all your drones
  • Drones are listed with their display name and serial
  • Selected drones appear at the top of the list

Battery Filter

  • Multi-select dropdown showing all battery serials
  • Batteries use custom names if you have renamed them
  • Selected batteries appear at the top

Controller Filter

  • Multi-select dropdown showing all remote controller serial numbers
  • Filter flights by which RC was used
  • Selected controllers appear at the top of the list

Color Filter

  • Dropdown to select customized assigned flight colors
  • Filter flights that have been assigned a specific color

Tag Filter

  • Multi-select dropdown with all available tags
  • Type to search and filter tags
  • Select multiple tags (flight may match ANY selected tag)

Range Filters

Filter Description
Duration Range Set minimum and maximum duration in minutes
Altitude Range Filter by maximum altitude reached
Distance Range Filter by total distance traveled

Note

Range filter units adapt to your preference setting (metric or imperial).

Map Area Filter

  • Toggle "Filter by visible map area" in Overview
  • Only shows flights with takeoff location within the current map view

Saved Filter Profiles

  • Use the Saved dropdown to apply a previously saved filter preset
  • Click Save filter to store the current scroll-box filter state (date, drone, battery, controller, tags, color, duration, altitude, distance)
  • If you save with an existing name, the preset is overwritten
  • Presets can be deleted from the dropdown using inline confirmation
  • None and the currently selected preset cannot be deleted
  • When you manually change filters after applying a preset, selection automatically switches back to None
  • Saved filter profiles are stored in the profile's database settings (not browser localStorage)

Search

  • Type in the search box to filter flights by name
  • Search is case-insensitive
  • Works in combination with other filters

Filter Inversion

Click the Invert button to negate all filters. Instead of "show flights matching these criteria," it becomes "hide flights matching these criteria."

Clearing Filters

  • Click the X on individual filters to clear them
  • Use the clear button on dropdowns to reset selections
  • Date range has a dedicated clear button

Tags System

Automatic Tags (Smart Tags)

When enabled, the app automatically generates descriptive tags during import:

Tag Condition
Night Flight Flight occurred during nighttime hours
High Speed Maximum speed exceeded threshold
Cold Battery Battery temperature was low during flight
Low Battery Minimum battery level dropped below threshold
High Altitude Maximum altitude exceeded threshold
Long Distance Total distance or distance from home exceeded threshold
Country Reverse geocoded from takeoff coordinates
Continent Reverse geocoded from takeoff coordinates
Litchi Flight was imported from Litchi CSV
Airdata Flight was imported from Airdata CSV
Manual Entry Flight was created via manual entry (no log file)

Manual Tags

  1. Select a flight to view its details
  2. In the stats bar, click the + button next to existing tags
  3. Type a new tag name or select from suggestions
  4. Press Enter to add the tag

Removing Tags

  • Click the X on any tag badge to remove it
  • Auto-generated tags show a special indicator to distinguish them from manual tags

Managing Smart Tags in Settings

Action Description
Toggle Smart Tags Enable or disable automatic tagging for new imports
Regenerate Smart Tags Re-apply automatic tags to all existing flights
Remove Auto Tags Remove all auto-generated tags while preserving manual tags

Bulk Tag Operations

The sidebar provides two buttons for bulk tag management on filtered flights:

Button Description
Untag filtered Removes the currently selected tag filter(s) from all filtered flights. Requires at least one tag filter to be selected. Shows confirmation before proceeding.
Bulk tag filtered Adds a manual tag to all filtered flights. Enter a tag name and press Enter or click the checkmark to apply. Supports autocomplete from existing tags.

Both operations show a progress overlay while processing and automatically refresh the flight list when complete.


Flight Statistics

When a flight is selected, the stats bar shows key metrics:

Primary Statistics

Metric Description
Duration Total flight time
Distance Total distance traveled
Max Altitude Highest point reached
Max Speed Fastest speed recorded

Additional Information

Field Description
Start Time When the flight began
Drone Model Aircraft used
RC Serial Remote controller serial number (displayed as a capsule when available)
Battery Battery serial and health indicators
Battery Capacity Battery life / capacity percentage (when available from flight log)
Home Location Takeoff coordinates
Photos Number of photo captures detected
Videos Number of video recordings detected

Weather Data

Click the Weather button to fetch historical weather data for the flight:

  • Temperature
  • Wind speed and direction
  • Humidity
  • Weather conditions

Note

Weather data requires an external API request. You need to be online, and the data is fetched based on the flight's location and time.


Telemetry Charts

Available Charts

The telemetry panel displays synchronized charts:

Chart Data Shown
Height / VPS Altitude and Visual Positioning System height
Speed Ground speed over time
Battery Battery percentage and voltage
Cell Voltages Individual battery cell voltages (dynamic legend per cell)
Attitude Pitch, roll, and yaw angles
RC Signal Remote controller signal strength
GPS Satellites Number of connected satellites
RC Uplink/Downlink Signal quality metrics
Distance to Home How far from takeoff point
Velocity X/Y/Z Speed components in 3D space
Battery Full Capacity Design capacity reported by the battery (mAh)
Battery Remaining Capacity Remaining usable capacity (mAh)

Note

The Cell Voltages chart is only displayed when cell voltage data is available from the flight log. Not all DJI drones record per-cell voltages.

Interacting with Charts

Zooming

Action Description
Drag to zoom Click and drag horizontally to zoom into a time range
Reset zoom Click the reset button to show full flight
Toggle drag zoom Click the zoom toggle to enable or disable drag zooming

Customizing Charts

You can customize which telemetry fields are displayed in each chart category:

  1. Click the x/y dropdown in the top-left of the charts panel
  2. In the dropdown, select or deselect fields (you can select upto 4 data types) for each chart category:
    • Height & Altitude: Height, Altitude, VPS Height
    • Speed & Motion: Speed, Velocity X/Y/Z
    • Battery: Battery Percent, Voltage, Cell Voltages
    • Attitude: Pitch, Roll, Yaw
    • Signal: RC Signal, Uplink, Downlink, GPS Satellites
    • Distance: Distance to Home

Tip

Your chart configuration is automatically saved and will persist across sessions in the same device.

Note

Telemetry chart colors are profile-specific and can be customized independently per profile.

Synchronized Views

  • All charts stay synchronized: zoom one, and they all zoom
  • Hover shows values across all charts at that timestamp

Chart Sync with Map

  • Enable Sync with Map to link chart position with map replay
  • As you scrub through the flight replay, charts highlight the current position

Flight Map and Replay

Map Controls

View Options

Control Function
3D Toggle Switch between 3D terrain and flat map view
Map Type Switch between Satellite, Topographic, and OpenStreetMap views
Navigation Controls Zoom, rotation, and tilt buttons

Display Options

Option Description
Color By Change how the flight path is colored (see below)
Show Aircraft Toggle the 3D aircraft marker
Show Media Display photo/video capture points on the path
Tooltip Toggle hover information display
Line Thickness Adjust flight path line width (1-5, default 3)

All map display options are grouped in a collapsible settings panel. Click the settings gear to expand or collapse.

Color By Options

Mode Description
Start to End Yellow to red gradient showing flight progress
Height Color based on altitude (green = low, red = high)
Speed Color based on velocity
Dist. from Home Color based on distance from takeoff
Video Segment Highlights when video was recording

Flight Path

The flight path is displayed as a 3D ribbon following the GPS track:

Marker Meaning
Green Pin Takeoff location (start)
Red Pin Landing location (end)
Home Point Registered home position

Flight Replay

Playback Controls

Control Function
Play/Pause Start or stop the replay animation
Progress Slider Drag to scrub through the flight
Speed Control Adjust playback speed (0.5x, 1x, 2x, 4x, 8x, 16x)

During Replay

The 3D aircraft model follows the flight path at the correct altitude.

Telemetry Overlay shows real-time data:

  • Height above ground
  • Speed
  • Battery level
  • Distance from home
  • Attitude (pitch/roll/yaw)

RC Joystick Overlay visualizes controller inputs:

  • Left joystick: Throttle and Rudder
  • Right joystick: Elevator and Aileron

Flight Messages Overlay shows in-flight tips and warnings during replay:

  • When replay playback reaches a message timestamp, a toast notification appears at the bottom of the map
  • Messages are color-coded by type: blue for tips, amber for warnings
  • The overlay clears automatically after the message timestamp passes

Flight Messages

When a flight contains in-flight tips, warnings recorded in the DJI log, or battery level warnings:

  • A chat-bubble icon with a red count badge appears in the map panel header
  • Click it to open the Flight Messages Modal, which shows a full list of messages with:
    • Timestamp (time into the flight)
    • Message type (Tip or Warning)
    • Message text
  • Messages are color-coded: blue for tips, amber/orange for warnings
  • The modal is scrollable if there are many messages

Note

Flight messages are only available for DJI logs that contain app tip/warn records. Not all flights will have messages.


Overview Dashboard

Switch to Overview mode using the toggle at the top of the sidebar.

Statistics Summary

Primary Stats (Large Cards)

  • Total Flights
  • Total Distance
  • Total Time
  • Data Points
  • Total Photos
  • Total Videos

Secondary Stats (Smaller Cards)

  • Max Altitude
  • Max Distance from Home
  • Average Distance per Flight
  • Average Duration per Flight
  • Average Speed

Activity Heatmap

A calendar-style visualization showing flight activity:

  • Darker colors indicate more flights on that day
  • Hover to see exact count
  • Double-click a day to filter the flight list to that date
  • Adjust date range with the From/To pickers

Breakdown Charts

Four charts showing flight distribution:

Chart Breakdown
Flights by Drone Which aircraft you fly most
Flights by Battery Battery usage distribution
Flights by Duration Short (<10min), Mid (10-20min), Long (>20min)
Flights by Time of Day Radial polar chart showing flight counts by hour (local time estimated from takeoff longitude)

Flight Cluster Map

An interactive map showing all flight locations:

  • Clusters group nearby flights
  • Click a cluster to zoom in
  • Click individual markers to select that flight
  • Optional heatmap layer — toggle to visualize flight density as a heat overlay
  • Map respects current sidebar filters

Top Flights

Lists your record-setting flights:

Category Selection
Top 3 Longest By duration
Top 3 Furthest By maximum distance from home

Click any entry to load that flight.


Battery and Maintenance Tracking

Battery Health

The Overview shows health indicators for each battery, sorted by health percentage (lowest first):

  • Health percentage based on voltage characteristics
  • Battery cycle count (from DJI SmartBatteryStatic data when available, otherwise falls back to flight count)
  • Usage statistics (flight count, total time)
  • Inline renaming: click to give batteries friendly names

Battery Capacity History

Track how each battery's full charge capacity changes over time:

  • Multi-select dropdown lets you pick one or more batteries to plot
  • Defaults to the most recently used battery (based on latest flight start time)
  • Scatter points show the maximum reported full capacity per flight
  • A smooth connecting line appears when a battery has more than one data point
  • Y-axis starts at 250 mAh for consistent comparison; max adjusts dynamically
  • Selected batteries are sorted to the top of the dropdown for quick access
  • Legend at the bottom lists each selected battery series (scrollable if many)

Battery Usage Timeline

View per-minute charge usage over time:

  • Shows battery drain patterns
  • Zoomable timeline
  • Helps identify battery degradation

Maintenance Tracking

Set up maintenance reminders for batteries and aircraft.

Setting Thresholds

  1. In Overview, scroll to the Maintenance section
  2. Click Configure for batteries or aircraft
  3. Set thresholds for:
    • Flight count (e.g., "every 50 flights")
    • Flight time (e.g., "every 10 hours")

Progress Indicators

Color Status
Green Good, plenty of headroom
Yellow Approaching threshold
Orange Near threshold
Red Exceeded, maintenance recommended

Recording Maintenance

  1. Click Perform Maintenance when you have serviced equipment
  2. Select a date (defaults to today)
  3. Counters reset from that date

Exporting Data

Single Flight Export

With a flight selected, use the Export dropdown in the stats bar:

Format Description
CSV Spreadsheet-compatible with all telemetry data
JSON Structured data including flight metadata
GPX GPS track for mapping applications
KML Google Earth compatible flight path

FlyCard Generator

Create shareable social media images from your flights:

  1. Right-click on any flight in the list (must be in Flights view, not Overview)
  2. Select Generate FlyCard from the context menu
  3. The app will load the flight and capture the current map view
  4. A preview modal shows the generated 1080x1080 image with:
    • Map background with your flight path
    • Semi-transparent dark overlay for readability
    • Flight stats (distance, max altitude, duration, max speed)
    • Aircraft name
    • App branding with logo
  5. Click Download to save the image

Tip

Position and zoom the map before generating for the best composition. The FlyCard captures exactly what you see on screen.

Note

The Generate FlyCard option is disabled (grayed out) when in Overview mode. Switch to Flights view to enable it.

Bulk Export

From the flight list, you can export all filtered flights:

  1. Apply desired filters
  2. Click the export button in the flight list header
  3. Choose format
  4. Files are packaged into a ZIP archive

HTML Report

Generate a configurable, print-ready flight regulation report:

  1. From the bulk export dropdown, select HTML Report
  2. In the modal, set:
    • Document Title (default: "Flight Regulation Report")
    • Pilot Name (remembered for future sessions)
  3. Select which field groups to include:
    • General Info, Equipment, Flight Stats, Battery, Weather, Media
  4. Click Generate Report to save the HTML file

The generated report features:

  • A4-width layout optimized for printing
  • Flights grouped by day with subtotals and a grand total
  • Weather data for each flight (if available)

Tip

The HTML report is print-ready. Open it in any browser and press Ctrl+P (or Cmd+P on Mac) to print or save as PDF.

Export Contents

CSV and JSON Exports Include:

  • Timestamp data
  • GPS coordinates (latitude, longitude, altitude)
  • All telemetry values
  • Flight metadata in the first row

GPX and KML Exports Include:

  • GPS track with timestamps
  • Altitude data
  • Compatible with Google Earth and other mapping apps

Manual Entry Exports

Since manual entries have no telemetry data, exports are handled specially:

  • CSV: Contains a single row with home coordinates and all available metadata
  • JSON: Contains flight metadata (no telemetry arrays)
  • GPX: Contains a waypoint at the takeoff location
  • KML: Contains a point placemark at the takeoff location

Settings

Access settings via the gear icon in the header.

Preferences

Units

Option Units Used
Metric meters, km/h, Celsius
Imperial feet, mph, Fahrenheit

Theme

Option Behavior
System Follows your OS preference
Dark Dark interface (default)
Light Light interface

Hide Serial Numbers

Toggle to mask aircraft and battery serial numbers in the interface. Useful for screenshots and screen sharing.

Time Format

Option Description
12-hour Timestamps displayed in 12-hour format (e.g., 2:30 PM)
24-hour Timestamps displayed in 24-hour format (e.g., 14:30)

Applies to all time displays throughout the app including the flight list, stats panel, messages modal, and HTML reports.

Language

Select the display language for the interface. Available locales include English, German, Spanish, French, Italian, Japanese, Korean, Dutch, Polish, Portuguese, and Chinese. Number and date formatting adapts to the selected locale.

Smart Tags

Action Description
Toggle Enable or disable automatic tagging on import
Regenerate Re-apply smart tags to all existing flights
Remove Auto Tags Clear all auto-generated tags (keeps manual tags)

Profile Password

Manage the password for the currently active profile. This section appears in the left column of the Settings modal.

State Available Actions
No password set Enter a new password and confirm it, then click Set Password
Password is set Enter current password to Change Password (provide new password) or Remove Password
  • The status indicator shows whether the current profile has a password
  • Protected profiles display a lock icon in the profile selector dropdown
  • Passwords are hashed with argon2id and never stored in plaintext

DJI API Key

Required for decrypting V13+ DJI flight logs.

  • The app ships with a default key
  • You can add your own personal key for better rate limits
  • See the README for instructions on obtaining a key
  • Docker users: Set the DJI_API_KEY environment variable instead of using the settings UI (e.g., - DJI_API_KEY=your_key_here in docker-compose.yml)

Status Indicators

Status Meaning
None No valid key configured
Default Using the bundled default key
Personal Using your own API key

Data Management

Action Description
Backup Database Export entire database to a .backup file (includes all flights, telemetry, tags, customizations, and settings)
Import Backup Restore from a previously exported backup file (replaces current database)
Delete All Logs Remove all flight data (requires confirmation). Custom names, notes, colors, and manual tags are preserved for re-import.
Remove Duplicate Flights Scan and remove any duplicate entries
Manage blacklisted logs (count) Open the blacklist manager for sync-imported files, review entries, and clear selected items from the sync blacklist

Important

Backup files are portable and can be restored on any instance, whether desktop or Docker.

App Information

  • Current version number
  • Update availability check
  • Data storage location
  • Log file location

Donation and Support

Options to support the project and activate a supporter badge.


Security Considerations (Web/Docker)

Warning

Open DroneLog does not include built-in TLS/HTTPS. If you expose your Docker instance to the internet, passwords and session tokens will be transmitted in plaintext over HTTP.

Recommendations for internet-facing deployments

  1. Always use a reverse proxy (Nginx, Caddy, Traefik) with TLS termination in front of the container
  2. Do not expose port 80 directly to the public internet
  3. Set PROFILE_CREATION_PASS to prevent unauthorized profile creation/deletion
  4. Optionally set DEFAULT_PROFILE_PASSWORD to avoid leaving the default profile unprotected on first startup

Current security limitations

Area Limitation
Transport No built-in TLS — passwords and tokens sent in plaintext without a reverse proxy
Sessions In-memory only; server restart invalidates all active sessions
Rate limiting Per-profile lockout (5 attempts / 60s) but no global IP-based rate limiting
CSRF No CSRF tokens; relies on same-origin policy and custom headers
Multi-instance Session store is not shared across multiple backend instances

Keyboard Shortcuts

Global Shortcuts

Shortcut Action
Up / Down Arrow Navigate through flight list
Enter Select highlighted flight
Ctrl + Click Jump to flight details (works in both Overview and Flights mode)
Escape Close modals, cancel editing

Dropdown Navigation

When a dropdown is open:

Shortcut Action
Up / Down Arrow Navigate options
Enter Select highlighted option
Type Filter the list

Tips and Tricks

Performance with Large Datasets

  • The app uses DuckDB for fast queries even with thousands of flights
  • Telemetry data is automatically downsampled for smooth charting
  • If charts feel slow, try zooming into a smaller time range

Organizing Flights

  • Rename flights with meaningful names for easy searching
  • Use manual tags for custom categorization (e.g., "Client Work", "Practice", "Scenic")
  • Filter by tags to quickly find related flights

Understanding Telemetry

Observation Explanation
VPS differs from GPS altitude VPS uses visual sensors and measures height above ground
RC signal drops Often indicate obstacles or range limits
Faster voltage drop Battery voltage drops faster in cold weather

Map Tips

  • Use satellite view for better spatial context
  • 3D terrain helps visualize elevation changes
  • Color-by-height reveals altitude patterns at a glance

Backup Strategy

  • Export backups regularly, especially before updates
  • Store backups in a separate location
  • Backup files are compressed and portable

Docker Users

  • Mount your log folder for automatic import
  • Set the SYNC_LOGS_PATH environment variable to enable folder sync
  • Set the SYNC_INTERVAL environment variable with a cron expression for scheduled automatic sync (e.g., 0 0 */8 * * * for every 8 hours)
  • Optionally set DEFAULT_PROFILE_PASSWORD to initialize a password for the default profile on first startup (never overwrites an existing one)
  • Data persists in the Docker volume and survives container updates

Privacy

  • All data stays on your device
  • Decryption keys are cached locally after first use
  • No telemetry or tracking
  • Use "Hide Serial Numbers" for screenshots

Single Instance (Desktop)

  • The desktop app ensures only one instance runs at a time
  • Opening a second instance will focus the existing window instead of launching a new one
  • This prevents database conflicts and accidental duplicate windows

Troubleshooting

Flight Will Not Import

Check Solution
File format Ensure the file is a valid DJI .txt or Litchi .csv
Internet connection Required for DJI log decryption on first import
Isolate the issue Try importing a single file

Map Not Loading

Check Solution
Internet connection Map tiles load from online sources
Toggle views Try switching between satellite and street view
Restart Refresh the page or restart the app

Charts Look Empty

Check Solution
Telemetry data Verify the flight has telemetry data
Flight duration Very short flights may have limited data
Zoom level Try resetting zoom level

macOS "Damaged File" Error

Warning

This is a Gatekeeper warning for unsigned apps, not an actual corrupted file.

Run this command in Terminal:

xattr -d com.apple.quarantine /path/to/Drone\ Logbook.app

Socials and Support

If you need any help, want to discuss features, or report issues, join our community platforms:


For more information, visit the GitHub repository or check the README for technical details.