Controllers and radio transmitters

Connect the controller, open its setup in UXDuck, and check each input before assigning sticks or actions. Move one control at a time. Two controls intended for different actions should change different inputs.

Axes and buttons depend on the device

An axis carries a range of values, including the three positions of a switch. A USB button carries pressed or released. A physical toggle can appear as either: the radio's USB configuration decides.

Controller and USB modeAxesButtonsWhat to configure
TBS Tango 2, FreedomTX classic joystickModel CH1–CH8CH9–CH32 become Buttons 1–24Put each physical control on its own mixer channel. Use the first eight for sticks, knobs and three-position switches.
RadioMaster GX12, EdgeTX classic joystickFirst eight output channelsNext 24 output channelsCheck the active model's mixes and channel order.
GX12 with EdgeTX Advanced USB joystick enabledDetermined by the USB joystick mappingDetermined by the USB joystick mappingInspect the radio's advanced mapping; the classic channel boundary is not a universal rule.
Xbox gamepadFixed sticks and triggersFixed gamepad buttonsNo radio mixer channels to reserve. UXDuck uses the recognized gamepad layout.

For a classic radio setup, reserve CH1–CH4 for the four stick functions and CH5–CH8 for other axes or three-position switches. CH9 onward suits momentary buttons and two-position switches. A button cannot preserve a three-position switch's middle state. These are USB input channels; the channels you later assign in UXDuck for vehicle control are a separate mapping.

EdgeTX recommends keeping the first eight channels as axes and buttons from channel nine when you want a model to work in both Classic and Advanced modes. Advanced settings and availability depend on the installed firmware. Reconnect USB after changing its joystick configuration. See EdgeTX's joystick mapping reference and Advanced joystick setup.

TBS Tango 2

Select USB Joystick (HID) on the radio. This sends USB gamepad input; it is separate from USB serial and the SD-card/firmware volumes shown in storage mode.

On the active model, open MIXES and give each control a separate channel. Use a weight of 100, offset 0, and no switch condition for a direct switch mix. A switch condition can disable the mix instead of reporting all of its positions.

One example, keeping a model's existing four stick channels:

Mixer channelSourceWhat UXDuck receives
CH1–CH4Existing four stick functionsAxes 1–4; assign their actual functions during setup
CH5SA, top A toggleAxis 5, two positions
CH6SD, top D toggleAxis 6, two positions
CH7SBAxis 7, three positions
CH8SCAxis 8, three positions
CH9SE, rear E buttonButton 1
CH10SF, rear F buttonButton 2

A and D are two-position toggles; E and F are momentary buttons. A/D appearing as axes is expected with the example above. To expose A or D as a USB button instead, assign it an unused channel from CH9 onward and update the UXDuck mapping. E/F will not be sent just because they exist physically: they also need mixes in the active model. Check the radio's channel monitor before looking for a missing input in UXDuck. See the Tango 2 manual.

Two switches changing Input 7 on macOS

The Tango 2 tested with FreedomTX 1.4.0 describes CH7 and CH8 with the same USB HID usage, Slider, even though it sends two separate values. A reader that identifies an input only by that usage merges or drops a channel.

UXDuck's native macOS reader distinguishes these elements, keeping CH7's existing input code and assigning CH8 its own code. CH8 appears as Axis 8. This applies to unmapped controllers with repeated axis usages; recognized gamepads continue through their normal layout mappings.

Use UXDuck connected to Computer for this support, including when opening its interface in Chrome. A simulation running entirely in Browser still receives the browser's Gamepad API data. Chrome's macOS reader currently drops a second axis with the same usage; UXDuck cannot reconstruct a value the browser does not expose. Chromium's macOS reader documents that behavior.

After updating Desktop, repeat controller setup for CH8. Existing CH7 mappings retain their input code, but check which physical switch now drives any action previously learned while both switches were merged.

Check the result

  1. Confirm the intended model is selected and its channel monitor changes for each control.
  2. In UXDuck's controller setup, move B and C separately. Each should change only its own input, including the middle position.
  3. Press and release E, then F. Each should change its own button if CH9/CH10 have the mixes above.
  4. Unplug and reconnect the radio. Confirm the inputs and your saved assignments still match.

A missing mix needs a radio configuration change. Two distinct channel-monitor values reaching the same app input need investigation of the USB descriptor and reader. Include the radio model, firmware, USB mode, operating system, UXDuck version, and whether the app says Browser or Computer in a report. See Troubleshooting.