DJI remote logs
When something goes wrong on a dock or aircraft — a failed flight, an HMS warning chain, a stuck cover — DJI’s diagnostic logs are the only way to tell what happened on-device. ARGUS triggers and collects those logs through Admin → DJI management → Debug → Remote logs.
Who can trigger a pull
Admin-only. The dock’s log files contain serial numbers, wireless scan data, and firmware diagnostics — treat them as sensitive.
Step 1 — Refresh file list
- Pick the dock in Admin → DJI → Docks.
- Open the Debug tab.
- Under Remote logs, confirm at least one module chip is ticked (see below).
- Click Refresh file list.
ARGUS calls POST /api/dji/docks/{sn}/logs/list with the selected
modules. argus-dji publishes the DJI fileupload_list service; the dock
enumerates its on-disk log files per module and replies. argus-dji
mirrors the reply into dji_docks/{sn}.remoteLog.fileList and the UI
re-renders with a grid of files.
Module chips
The DJI Cloud API enumerates modules by numeric id, not by the
string all (which several firmware revisions reject with a silent
400). ARGUS always sends individual modules:
| Module | Id | Contents |
|---|---|---|
dock | 0 | Dock core logs — MQTT, state machine, cover motor, charging, weather sensors, eSIM / modem. |
aircraft | 3 | Flight controller, IMU, compass, ESC, battery pack, gimbal, payload camera, FlightRecorder black-box. |
rc | 4 | Remote controller logs (only populated when a physical RC has been paired to the aircraft). |
psdk | 5 | Payload SDK — third-party attached devices (speaker, spotlight, custom sensors). Dock 3 / M3x. |
Tick only the modules you need — each extra module adds ~30–90 s to the dock’s enumeration time and increases the upload size when you commit.
File grid
Each row in the returned grid shows:
- A checkbox — pick the files to upload.
- Module — one of
dock/aircraft/rc/psdk. - File name — DJI’s internal log name (dated, with a module tag,
.txt.gztypical). - Size — megabytes, one decimal.
Aircraft logs are by far the largest (flight recorder can be 50–300 MB per flight). Start small if you’re on a metered dock connection.
Step 2 — Upload selected
- Tick the checkboxes on the files you want.
- Click Upload selected (N) — the count reflects your picks.
ARGUS calls POST /api/dji/docks/{sn}/logs/upload with the grouped
files, keyed by module. argus-dji publishes the DJI fileupload_start
service with an S3 presigned URL per file; the dock uploads directly
to S3 (not through ARGUS). Progress is mirrored into
dji_docks/{sn}.remoteLog.progress and surfaced as a progress bar on
the Debug tab.
While an upload runs, the Debug tab shows Upload: uploading and a Cancel button.
Cancel
Click Cancel at any point. ARGUS calls
POST /api/dji/docks/{sn}/logs/cancel; argus-dji publishes
fileupload_cancel. The dock stops mid-file and any S3 multipart
uploads are aborted by the lifecycle rule.
What’s in each log module
- dock — cover-motor state transitions, charging cycle timestamps, internal temperature and humidity, MQTT keepalive / reconnect, cellular modem events, eSIM provisioning, RTK calibration runs.
- aircraft — FlightRecorder black-box (DJI’s compressed telemetry stream — same format DJI Support asks for), IMU / compass / GPS health diagnostics, ESC / motor temps, battery pack cycle counts and discharge curves, gimbal calibration, camera exposure logs.
- rc — controller battery, stick calibration, lost-link events. Empty for docked-only aircraft.
- psdk — third-party payload SDK traffic; only populated on docks with an attached speaker, spotlight, searchlight, or custom sensor.
Retention
Dock-side logs rotate by the dock’s local policy — roughly 14–30 days
of aircraft logs and 7 days of dock logs before DJI’s rotation prunes
them. Uploaded logs land in the org’s S3 bucket under
dji-logs/{dockSn}/{yyyymmdd}/{module}/ and are retained for
90 days by lifecycle policy. Pull them into a ticket before the
retention window closes.
Troubleshooting
- Refresh returns empty. No logs in that module (e.g.
rcon a dock with no RC paired). Try a different module. - Upload stalls at 0%. The dock can’t reach S3 — check the dock’s network on the physical screen, confirm egress is open.
- Upload reaches 100% then
failed. S3 rejected the put (usually a presigned-URL expiry during a very slow link). Re-pick the files and retry; the presigned URL is regenerated each attempt.