Skip to content

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

  1. Go to Admin → DJI management and click Pair new dock.
  2. 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.
  3. Click Generate code. ARGUS hits POST /api/dji/pairing-codes, receives a human-readable ABCD-1234 string plus a JSON qrPayload, and renders a 320-pixel QR onto the modal.
  4. 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).
  5. The dock validates the code, writes its registration, and reboots. This takes 60–90 s.
  6. 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}.missionId and argus-dji auto-joins the operation’s TACLINK room as a dji-dock-{sn} participant.
  • Auto-streaming when assigned — the auto-stream autopilot provisions a WHIP ingress and publishes live_start_push to 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_topo publish 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).
  • 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.