-
Notifications
You must be signed in to change notification settings - Fork 4
Drone Compatibility & Test Procedures
This page provides step-by-step test protocols for verifying each example use case. By running these tests with different drone models and Android devices, contributors can document which hardware configurations are compatible with WenuLink.
After completing a test, please report your results using the compatibility report issue template.
The table below summarizes which drone models have been tested with WenuLink and the status of each use case. This matrix is updated based on community-submitted compatibility reports.
| Drone Model | App Version | Flight Plan | Video Capture | Photogrammetry | Reported By |
|---|---|---|---|---|---|
| Matrice Series | |||||
| Matrice 350 RTK | — | — | — | — | Awaiting Test |
| Matrice 300 RTK | — | — | — | — | Awaiting Test |
| Matrice 200 V2, 210 V2, 210 RTK V2 | — | — | — | — | Awaiting Test |
| Matrice 200, 210, 210 RTK | — | — | — | — | Awaiting Test |
| Matrice 600, 600 Pro (incl. RTK) | — | — | — | — | Awaiting Test |
| Matrice 100 (incl. X3, X5, X5R) | — | — | — | — | Awaiting Test |
| Mavic Series | |||||
| DJI Mavic 2 Pro | f18a6f8 | — | — | TimonSchreiber #20 | |
| Mavic 2 Zoom | — | — | — | — | Awaiting Test |
| Mavic 2 Enterprise (Zoom/Dual/Advanced) | — | — | — | — | Awaiting Test |
| Mavic Pro | — | — | — | — | Awaiting Test |
| Mavic Air 2 | — | — | — | — | Awaiting Test |
| DJI Air 2S | — | — | — | — | Awaiting Test |
| Mavic Air | — | — | — | — | Awaiting Test |
| Mini Series | |||||
| DJI Mini 2 | — | — | — | — | Awaiting Test |
| DJI Mini SE | — | — | — | — | Awaiting Test |
| Mavic Mini | — | — | — | — | Awaiting Test |
| Phantom Series | |||||
| Phantom 4 RTK / P4 Multispectral | — | — | — | — | Awaiting Test |
| Phantom 4 Pro V2.0 | — | — | — | — | Awaiting Test |
| Phantom 4, 4 Pro, 4 Advanced | v0.1.1-alpha | ✅ Pass | — | Angel Ayala Awaiting Report | |
| Phantom 3 (Standard, Adv, 4K, Prof) | — | — | — | — | Awaiting Test |
| Inspire Series | |||||
| Inspire 2 | — | — | — | — | Awaiting Test |
| Inspire 1, 1 Pro, 1 RAW | — | — | — | — | Awaiting Test |
| Spark | |||||
| Spark | — | — | — | — | Awaiting Test |
|
Legend: ✅ Pass · |
Models with "Awaiting Test" should be theoretically supported because DJI MSDK v4 supports these models. But to be reliable testing drone models with WenuLink is crucial.
Help us fill this matrix! Run the tests below with your hardware and submit a compatibility report.
Verify that a multi-waypoint mission created in a MAVLink GCS can be uploaded to a DJI drone through WenuLink and executed autonomously.
| Requirement | Details |
|---|---|
| DJI drone | Powered on. For indoor/bench tests, remove all propellers. |
| Remote controller | Connected to the Android device via USB |
| Android device | WenuLink installed, MAVLink service enabled |
| GCS software | QGroundControl or Mission Planner |
| Network | Android device and GCS on the same local network |
| MAVLink endpoint | Configured in WenuLink |
| Flight area | Outdoor area with GPS lock. (Limited functionality in Bench Test) |
💡 Bench Testing & Debugging Tips (Important)
- Ignore Calibration Prompts: When connecting to QGroundControl, you may see prompts for Accelerometer or Barometer calibration. Do not attempt these. DJI's proprietary flight controller does not support MAVLink-based sensor calibration.
- GPS Dependency: Functions like setting a "Home Position" or viewing position telemetry will not work indoors without a GPS lock.
-
Capturing Logs (Wireless ADB): To capture
logcatdata while the Remote Controller is plugged into the phone's USB port:- Connect the phone to a PC via USB first.
- Enable Wireless ADB via terminal:
adb tcpip 5555. - Disconnect USB and find your phone's IP address.
- Connect wirelessly:
adb connect <PHONE_IP>:5555. - You can now plug the RC into the phone and still run
adb logcatfrom your PC.
-
LogCat filter: For outdoor diagnostic sessions, set the Android Studio logcat filter to
package:org.WenuLinkonly (no level filter), to get all the useful output.
-
Connect the drone
- Power on the DJI drone and remote controller.
- Connect the remote controller to the Android device via USB.
- Launch WenuLink and wait for
SDK status: Registered. - Tap Start Drone Service once the button is enabled.
-
Verify GCS connection
- Open QGroundControl on your PC.
- Confirm that QGroundControl detects the vehicle (heartbeat received).
- Verify telemetry data (GPS position, altitude, battery) is displayed correctly.
-
Create a waypoint mission
- In QGroundControl, switch to the Plan view.
- Create a simple mission with:
- 1 Takeoff command
- 3 Waypoints at different GPS coordinates (keep distances short, e.g. 10–30 m apart)
- Optionally add a Delay (e.g. 5 s) at one waypoint
- Optionally add a Yaw change at another waypoint
- 1 Return to Launch (RTL) at the end
- Upload the mission to the vehicle.
-
Arm and start the mission
- In QGroundControl, arm the vehicle.
- Start the mission.
- Observe the drone taking off and navigating to each waypoint.
-
Monitor execution
- Confirm that QGroundControl shows mission progress (current waypoint index updates).
- If a delay was set, verify the drone hovers at that waypoint for the expected duration.
- If a yaw change was set, verify the drone rotates to the specified heading.
- After the last waypoint, confirm the drone returns to the launch point (if RTL was set).
-
Landing
- Confirm the drone lands safely (automatically or via manual command).
| Check | Expected Outcome |
|---|---|
| Mission upload | QGroundControl shows "Mission Accepted" |
| Takeoff | Drone takes off to the altitude defined in the first waypoint |
| Waypoint navigation | Drone visits all 3 waypoints in order |
| Delay action | Drone hovers for the specified number of seconds |
| Yaw action | Drone rotates to the specified heading at the waypoint |
| RTL | Drone returns to the home point and lands |
| Telemetry | QGroundControl displays real-time position updates throughout |
Verify that the live camera feed from a DJI drone can be streamed via WebRTC through WenuLink to a remote viewer in a web browser.
| Requirement | Details |
|---|---|
| DJI drone with camera | Powered on |
| Remote controller | Connected to the Android device via USB |
| Android device | WenuLink installed, WebRTC service enabled |
| Signaling server | webrtc-client-server running on the local network |
| Web browser | Chrome, Firefox, or any WebRTC-capable browser on a PC in the same network |
| Network | All devices (Android, signaling server, browser) on the same local network |
| Signaling server address | Configured in WenuLink (see Getting Started) |
-
Start the signaling server
- On your PC, run the signaling server:
cd webrtc-client-server npm install npm start - Note the server address (e.g.
ws://192.168.1.100:8090).
- On your PC, run the signaling server:
-
Connect the drone
- Power on the DJI drone and remote controller.
- Connect the remote controller to the Android device via USB.
- Launch WenuLink and wait for
SDK status: Registered. - Tap Start Drone Service.
-
Verify WebRTC service
- Confirm the WenuLink notification shows the camera name (e.g.
WebRTC streaming: Mavic 2 Camera). - Note the Socket ID displayed in the WenuLink app.
- Confirm the WenuLink notification shows the camera name (e.g.
-
Connect the viewer
- Open your browser at
http://<SIGNALING_SERVER_IP>:3000. - Paste the Socket ID from the WenuLink app.
- Click Get Streaming.
- Open your browser at
-
Verify the video feed
- Confirm that live video from the drone camera appears in the browser.
- Move the drone camera (or the drone itself) and verify the video updates in real time.
- Check for visual artifacts, latency, or frame drops.
-
Test camera toggle
- If supported, toggle the camera stream off and on in WenuLink.
- Confirm the video feed stops and resumes correctly in the browser.
| Check | Expected Outcome |
|---|---|
| Signaling connection | WenuLink connects to the signaling server (no errors in app log) |
| Video stream starts | Live video appears in the browser within a few seconds |
| Resolution | Video resolution matches the camera's configured output |
| Frame rate | Video plays smoothly without major stuttering |
| Latency | Delay between real-world movement and video display is acceptable (< 2 s) |
| Camera toggle | Stream stops and resumes correctly |
Verify that a survey-style mission with photo capture commands at each waypoint can be uploaded and executed through WenuLink, producing geotagged images suitable for photogrammetric processing.
| Requirement | Details |
|---|---|
| DJI drone with camera and SD card | Powered on, GPS lock acquired, SD card inserted |
| Remote controller | Connected to the Android device via USB |
| Android device | WenuLink installed, MAVLink service enabled |
| GCS software | QGroundControl with Survey tool (or Mission Planner) |
| Network | Android device and GCS on the same local network |
| MAVLink endpoint | Configured in WenuLink (see Getting Started) |
| Flight area | Open outdoor area with GPS coverage and identifiable ground features |
-
Prepare the drone
- Insert a formatted SD card into the drone.
- Note the number of existing photos on the SD card (should be 0 or known).
- Power on the DJI drone and remote controller.
- Connect the remote controller to the Android device via USB.
- Launch WenuLink, wait for registration, and tap Start Drone Service.
-
Verify GCS connection
- Open QGroundControl and confirm vehicle detection.
-
Create a survey mission
- In QGroundControl, switch to the Plan view.
- Use the Survey tool to define a rectangular area.
- Configure the survey parameters:
- Flight altitude (e.g. 30 m)
- Photo interval: trigger at each waypoint (camera trigger distance or
IMAGE_START_CAPTUREat each waypoint) - Overlap: 70–80 % frontal, 60–70 % side (typical for photogrammetry)
- Verify that the generated mission includes
IMAGE_START_CAPTUREcommands. - Upload the mission to the vehicle.
-
Execute the survey
- Arm the vehicle and start the mission.
- Monitor the drone as it flies the grid pattern.
- In QGroundControl, observe the waypoint progress and confirm photo triggers are sent.
-
Verify photo capture
- After the mission completes and the drone lands, remove the SD card.
- Count the photos on the SD card and compare with the expected number (one per waypoint with a photo trigger).
- Verify that photos have EXIF GPS tags.
-
Optional: Process the images
- Load the captured images into photogrammetry software (e.g. OpenDroneMap, Agisoft Metashape).
- Attempt to generate an orthomosaic or 3D point cloud.
- Evaluate the result quality.
| Check | Expected Outcome |
|---|---|
| Mission upload | QGroundControl shows "Mission Accepted" with survey waypoints |
| Grid flight | Drone follows the survey grid pattern visiting all waypoints |
| Photo triggers | A photo is captured at each waypoint where IMAGE_START_CAPTURE was set |
| Photo count | Number of photos on SD card matches the number of photo trigger waypoints |
| GPS tags | Each photo contains EXIF GPS coordinates |
| Image quality | Photos are sharp and correctly exposed |
| Photogrammetry output | (Optional) Software can align images and produce a 3D model or orthomosaic |
- Video/photo capture to the Android device storage is not yet implemented. Photos are saved to the drone's SD card only.
- The
IMAGE_START_CAPTUREcommand is translated to a DJITakePhotowaypoint action. Camera settings (exposure, white balance) must be configured on the drone or via DJI Go before the flight. - End-to-end photogrammetry workflows are still being validated. Please report your results to help improve this use case.
Tested WenuLink with your drone? Help the community by submitting a compatibility report:
📄 Submit a Compatibility Report
The form covers all three use cases in a single submission — just check the ones you tested and provide your results. You can also attach flight logs for further analysis.
All submitted reports are tracked under the compatibility label and used to update the Compatibility Matrix at the top of this page.