What a device profile saves
Profiles in the Universal Controller update store device mappings, paired digital inputs, calibration, neutral positions, throttle-centering choices, per-channel response and the arm-switch option. Dedicated DJI input retains its own physical-channel setup where applicable.
Aircraft selection and flight mode remain separate choices. Loading a profile does not establish that every channel is correct for the currently selected aircraft or throttle behavior. Inspect the live output before activating.
Create a useful baseline
Select the device, complete mapping and calibration, and check each channel while grounded. Enter a name and save it. A name such as “Pocket USB · self-centering” or “Gamepad Bluetooth · Mode 2” records what you actually configured.
Save with a new name to create another profile. Keep a known-good baseline before experimenting with response curves. Saving is not a substitute for activation or arming.
Load, edit, rename or remove
| Task | What to do |
|---|---|
| Switch profile | Select a saved profile and choose Load |
| Edit | Load it, adjust bindings/calibration/response, then save |
| Rename | Select the profile, enter a new name and choose Rename |
| Reset bindings | Use the reset option, then verify the resulting setup and remap as needed |
| Delete | Select the named profile and choose Delete |
Resetting bindings does not certify a suggested/default mapping. A dedicated DJI reset restores its own defaults; an unfamiliar transmitter still needs mapping checks. Changes release active input ownership so a new setting cannot silently move an armed aircraft.
Why USB and Bluetooth may use different profiles
Android device descriptors provide stable identity when available. Godot GUID/name fallback identifies a device where no descriptor is exposed, but identical hardware can share the same fallback. USB and Bluetooth may report different identities or axis arrangements even for one controller.
Reconnect with the same transport and inspect the restored selection. If it is different, select or create the appropriate profile. For custom Wi-Fi adapters, the source IPv4 address and stable adapter ID identify the profile; changing either can create a separate device context.
Only one controller owns flight
Connecting or moving a second controller does not grant it flight ownership. Pause, open Controllers, select and configure the intended device, return its controls to safe positions and explicitly activate it. Device selection and ownership are separate concepts.
Held buttons, keys and active action switches block activation until released. An activation request can wait up to ten seconds for safe inputs. The existing arm/throttle checks still apply after activation.
Resume after a disconnect
- The active controller disconnects: input is released, the aircraft disarms and gameplay pauses.
- Reconnect it and open Controllers. Confirm its identity, received inputs and selected profile.
- Center yaw/pitch/roll. Set manual throttle to motor-off, or assisted/active 3D throttle to neutral. Release action controls.
- Choose Activate Controller, then Resume. Arm separately only when ready.
If hardware remains unavailable, choose Use Touch / Keyboard explicitly, then Resume. Flight starts disarmed with the fallback source's safe input. A silent fallback to another connected controller is not used.
Returning from the background
Backgrounding the Android app stops the network input paths and invalidates activation. On return, check the connection and activate again. Wi-Fi streams also disconnect after a 500 ms packet gap; delayed or malformed packets do not keep them alive.
Keep a short grounded check in your routine after reconnecting, changing a radio model, loading a profile or switching flight mode. Use diagnostics when restored values do not match the expected setup.

