Connect real aircraft
Virtual and real aircraft can share Mainframe. Their provider identities and serial numbers remain distinct. Staging’s auto-operator selection is world-sim plus SIM-STG-; Mainframe checks it again when the module submits a command. Callsigns and editable tags cannot make an Autel aircraft match that selection.
Choose the connection
Section titled “Choose the connection”Remote observation connects the autel profile to an existing broker and SRS deployment. The other system continues controlling the aircraft. Configure its broker URL and credentials, controller serials, and remote SRS API/RTMP addresses. The module subscribes, records messages, and relays video.
Native hosting runs the native-autel profile and the authenticated MQTT broker owned by this deployment. It needs explicit controller/aircraft bindings and native configuration. Provision the initial native configuration once, then manage controller accounts from Assets as described below. Keep deployment credentials separate from development.
Connection mode and aircraft authority are independent. AUTEL_MODE=observe is the configuration template default. Native observation can handle login, device lifecycle, and stream management while flight and payload control remain unavailable.
Network and video
Section titled “Network and video”The native Enterprise HTTP/WS routes are reserved on the Mainframe domain. Controller MQTT reachability is configured separately: its listener defaults to loopback until the deployment explicitly exposes it. The RC must also reach the SRS_RTMP address returned in its signed media assignment. SRS’s HTTP API stays private.
After connecting, confirm stable controller/airframe identity, fresh telemetry, optical/IR video as supported, and a recorded segment. Inspect command availability and observation indicators in Terminal. Enabling real control requires the separate device-specific authority and lease checks; neither a successful login nor a reconnect grants it.
The native hardware runbooks track firmware, payload behavior, calibration, command completion, takeover, and emergency behavior. Treat those results separately from simulator and container tests. The combined first-flight procedure (controller bindings at the bench, take off, every axis, gimbal presets, land, drop) is services/autel/runbooks/06-field-flight.md.
Add controllers and aircraft from Terminal
Section titled “Add controllers and aircraft from Terminal”Sign in as a Mainframe administrator. In Assets, use the controller icon (Manage Autel controllers) or + → Add Autel controller.
- Enter a useful controller name, a unique login username, and the controller’s serial number from Autel Enterprise.
- Add the aircraft serials this controller may report. A controller can be created before any aircraft are assigned. An aircraft belongs to one controller account at a time.
- The camera defaults are for EVO Max: payload
10801-0-0, videonormal-0, zoom and infrared lenses. Expand Camera settings when the hardware needs another profile; these values must match the actual camera. - Create the controller and save the connection details. Terminal shows the seven Enterprise fields: MQTT address/account/password, login address/account/password, and WebSocket address. The generated passwords are shown once.
- Enter those fields in Enterprise and connect. The controller and its reported aircraft appear in Assets; an offline account record alone does not create live aircraft telemetry.
Use Edit to change the name, permitted aircraft, camera settings, or login status. A name-only edit preserves the connection; changes to credentials, bindings, camera configuration, or login status sign out that controller. Disconnect it before changing serials or aircraft assignments. Other controllers keep their connections. To move an aircraft, remove it from the old account first, then add it to the new one.
Generate a new password rotates both the Enterprise login and MQTT credentials and invalidates the old session. Login enabled can disable an account without deleting its history. Ordinary account lists never expose passwords. If a save reports that broker permissions are synchronizing, refresh until it is ready before connecting; the change is saved and retried automatically.
Account storage and deployment upgrades
Section titled “Account storage and deployment upgrades”The native module owns account configuration. Mainframe authenticates administrator requests and audits changes; passwords are not stored in Mainframe documents, events, or replay history. The account database lives in the private autel-accounts Docker volume. Mosquitto’s live security configuration lives in autel-broker. Preserve both volumes during upgrades and include them in your private host-state backup procedure.
The first managed startup imports existing accounts from the provisioned native.json, preserving their credentials. Later startups read the managed account database. Editing the old bootstrap file does not overwrite accounts managed in Terminal. Migrating an existing static broker requires one broker/module restart and an Enterprise sign-in; adding or editing accounts after migration requires no deployment.
Staging deliberately exposes authenticated plain MQTT on TCP 1883 for mobile controllers, as required by Enterprise. HTTPS and WSS use the Mainframe domain. Staging also enables AUTEL_MODE=control for manual tests; control leases and explicit authority checks still apply. The auto-operator remains limited to world-sim aircraft whose serials start with SIM-STG-.
Copy the camera profile firmware string exactly from the aircraft’s first
update_topo/reported firmware_version, and re-check it after firmware updates.
A mismatch degrades module health and disables calibrated pointing until the
profile is validated for the reported firmware; do not bypass the geometry guard.
Native configuration accepts a separate drcAddress for the controller’s second
MQTT connection; it defaults to mqtt.address. The managed broker also listens
for WebSockets on port 9001 (AUTEL_DRC_WS_PORT, with the same bind address and
dynamic-security accounts). For the first bench engage, try the configured DRC
scheme; if the controller never opens its second connection, set drcAddress to
ws://<controller-reachable-host>:9001 and repeat the human bench procedure.
TCP transport remains hardware-unverified here; record the actual scheme and
result in the bench log. This configuration change does not itself verify DRC.
In the host development stack, the native-autel profile uses the same managed
broker bootstrap and retains its state in dev-autel-broker. Its WebSocket host
port defaults to 9002, because MinIO’s development console uses 9001. Set
drcAddress to the matching reachable host and port; AUTEL_DRC_WS_PORT overrides
the published port. Migrating a running static development broker requires an
explicit broker restart; updating the Compose file alone leaves it running.
Run the host Autel module with AUTEL_ACCOUNT_STATE set to a private writable
JSON path so account reconciliation provisions the managed broker’s credentials.