DJI Mission Installer is a Windows desktop application designed to simplify the process of transferring custom waypoint mission files (.kmz
) to DJI devices that use the DJI Fly app, such as the DJI RC, RC2, Smart Controller, or any Android phone connected to a controller.
It provides a clear, two-pane interface to view your local mission files and the waypoint slots on your device, allowing you to replace missions and automatically generate new preview images.
- Dual Connection Modes: Supports connecting to your device via both ADB (Android Debug Bridge) for robust control and MTP (Media Transfer Protocol) for standard file access. The app automatically falls back to MTP if ADB is not configured.
- Intuitive Two-Pane View: Easily see your computer's local KMZ files in one list and the waypoint missions on your connected DJI device in another.
- Automatic Preview Generation: When you transfer a mission, the app automatically generates a new preview image for the DJI Fly app. This image includes the mission name and modification date overlaid on a map background. (Note: Map imagery is currently placeholder but can be extended).
- Intelligent Device Detection: Scans and lists available Android devices with the correct DJI Fly folder structure.
- File Management: Both local and device file lists can be sorted by name, date, or size using a natural string comparison for intuitive ordering.
- Modern & Responsive UI: Built with WPF, featuring a clean layout, modern controls, and loading indicators for a smooth user experience.
- Auto-Refreshes Local Files: Automatically watches your local KMZ source folder for any changes and updates the list in real-time.
The DJI Fly app stores its waypoint missions in a specific folder on the Android device's storage: Android/data/dji.go.v5/files/waypoint/
. Each mission has its own folder named with a unique ID (GUID). Inside that folder are the mission data (<guid>.kmz
) and a preview image (<guid>.jpg
) which is located in a separate map_preview
folder.
This application allows you to:
- Connect to your device using either ADB or MTP.
- Select a local
.kmz
file from your computer. - Select a target waypoint "slot" on the device that you want to replace.
- Transfer the file. The application will:
- Delete the old
.kmz
and.jpg
files from the selected device slot. - Upload your new
.kmz
file. - Generate a new preview map image using ESRI's World Imagery service.
- Overlay the mission name and date onto the map image.
- Upload the new preview image.
- Delete the old
This ensures that when you open the DJI Fly app, your new mission appears correctly with an informative preview.
- Windows 10 or newer.
- .NET 8.0 Desktop Runtime.
- A DJI controller or Android device that uses the DJI Fly App.
- Go to the Releases page of this repository.
- Download the latest release
.zip
file. - Extract the contents to a folder on your computer.
- Run
DJI Mission Installer.exe
.
- Configure your KMZ folder: By default, the app looks for KMZ files in
My Documents\DJI\KMZ
. You can change this path in theDJI Mission Installer.exe.config
file. - Launch the application.
- Connect your device: Connect your DJI controller or Android phone to your computer via USB.
- Select your device: Choose your device from the dropdown menu at the top right and click Refresh. The app will list the existing waypoint missions from the device.
- Select a source file: In the left-hand "KMZ Files" list, select the mission file you want to install.
- Select a destination slot: In the right-hand "Device Waypoints" list, select the mission you want to replace.
- Click "Transfer Selected File". A confirmation message will appear upon success.
- Safely disconnect your device. Your new mission is now ready in the DJI Fly app!
If you want to build the project yourself, follow these steps.
- Visual Studio 2022 with the ".NET desktop development" workload installed.
- .NET 8.0 SDK.
- Clone the repository:
git clone https://github.com/MjosDrone/DJIMissionInstaller.git
- Open the
DJI Mission Installer.sln
solution file in Visual Studio. - Restore the NuGet packages (this should happen automatically).
- Build the solution (F6 or
Build > Build Solution
). The executable will be inbin/Debug
orbin/Release
.
This project is built with C# 12 and .NET 8, using the following key technologies and libraries:
- WPF: For the graphical user interface.
- MVVM Pattern: Using the
CommunityToolkit.Mvvm
library for a clean separation of UI and logic. - AdvancedSharpAdbClient: A .NET library for communicating with Android devices via the Android Debug Bridge (ADB).
- MediaDevices: For accessing device storage via the Media Transfer Protocol (MTP).
- SixLabors.ImageSharp: A powerful, cross-platform 2D graphics library used for generating and watermarking the map preview images.
- ESRI ArcGIS REST Services: Used to fetch satellite map tiles for the preview images.
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE.txt
for more information.