Pairing a DJI dock
ARGUS pairs DJI docks to your organisation with a one-time QR-code flow run on the dock’s local operator screen. The code carries everything the dock needs to register itself against your org’s MQTT broker and provision its Firestore records — no manual config on the dock.
Prerequisites
Before you generate a pairing code, an org admin must have these three fields populated under Admin → Organisation → Integrations → DJI:
- DJI App Id, App Key, App License — issued by the DJI Developer Center when your org registers a Cloud-API app. Without these, the dock can hand you a perfectly valid TACLINK session but will refuse to start any flight mission.
- A spare licence seat in your org’s DJI-dock quota. Exhausted quotas surface as “License exhausted” on the dock’s screen at the moment of redemption — the code itself still prints.
The MQTT broker host, port, and EMQX credentials are filled by ARGUS automatically and exposed read-only in the Manual setup tab for reference.
Generate a pairing code
- Go to Admin → DJI management and click Pair new dock.
- The modal opens on the Pairing code tab. Fill the optional fields:
- Label — a human name shown in the codes table (e.g.
Roof Dock A). - Valid for (hours) — TTL, default 24 h, max 168 h.
- Max uses — default 1. Raise this for a batch-provisioning run.
- Label — a human name shown in the codes table (e.g.
- Click Generate code. ARGUS hits
POST /api/dji/pairing-codes, receives a human-readableABCD-1234string plus a JSONqrPayload, and renders a 320-pixel QR onto the modal. - Take a phone photo of the QR, walk to the dock, and scan it on the dock’s operator UI (Settings → Cloud platform → Scan QR).
- The dock validates the code, writes its registration, and reboots. This takes 60–90 s.
- The row in the Active codes table flips from no redemptions to a redemption line showing the dock’s serial and deviceType. When the dock comes back online its row appears under Admin → DJI → Docks with a green status dot.
One pairing code can claim both the dock and its aircraft in a single scan when max-uses ≥ 2.
Paired-dock state
Once paired, a dock is:
- Visible in the admin dock list for this org (and only this org).
- Assignable to a mission from the mission-ops view. Assignment flips
dji_docks/{sn}.missionIdand argus-dji auto-joins the operation’s TACLINK room as adji-dock-{sn}participant. - Auto-streaming when assigned — the auto-stream autopilot provisions a
WHIP ingress and publishes
live_start_pushto the dock, so the operator tile shows video within seconds of assignment.
See Dock tile for the operator-side surface and Auto-stream for the ingress flow.
Regenerate or revoke
The Active codes table lists every non-expired code. Each row shows TTL, redemption history, and a Revoke button. Revoke is immediate — a scan against a revoked code fails with Code not found on the dock.
To swap a dock onto a different org, first click Unpair from org on the
dock’s overview panel (this clears orgId in its Firestore doc), then have
the receiving org generate a fresh code. A dock can be paired to exactly
one ARGUS organisation at a time.
Manual setup (advanced)
The Manual setup tab on the pairing modal surfaces the raw MQTT host, port, username, password, and the three DJI keys for copy-paste into DJI Pilot 2 or Assistant 2. Use this only when the dock screen cannot scan a QR (poor lighting, camera fault). Each row has an individual copy button; Copy all packs the lot into a clipboard block.
Claim existing
If a dock is already publishing telemetry but was never assigned an orgId
(for example, a pre-prod test bench that skipped the QR flow), open the
Claim existing tab, enter the dock SN and optionally the aircraft SN,
and click Claim. This stamps orgId onto the Firestore doc in place.
Troubleshooting
- Dock stays offline after pairing. The dock rebooted but failed to re-connect to EMQX. Check dock network on the physical screen; confirm MQTT port isn’t blocked by a site firewall.
- Code expired. TTL elapsed before scan. Generate a fresh code.
- License exhausted. Org quota full — contact ARGUS support to raise the seat count, or unpair an unused dock first.
- Scan reported success but no dock row appears. Wait 2 minutes; the
dock’s first
update_topopublish can lag its boot. If still missing, check Admin → DJI → Active codes for the redemption line — if present, argus-dji received telemetry but the Firestore write failed (contact support).
Related
- Dock tile — per-dock operator tile after pairing.
- Auto-stream — video ingress when a dock is assigned to a mission.
- FlySafe — unlock-licence management on a paired dock.