Configure Advanced Joystick with EdgeTX

General

  1. Please try the classic mode first. Handling joystick input has undergone many different designs. For example Windows has 6 joystick APIs - all with different quirks.
  2. Interface mode Gamepad is usually the right one.
  3. To ease switching between Advanced and Classic mode try using channels 1 - 8 for axis and channels 9 - 32 for buttons.
  4. After changing the joystick configuration you likely have to disconnect and then reconnect the USB cable. Otherwise systems might still use the old joystick description to read the new data.

Analog Axis

  1. Most modern applications use the USB HID ID to identify the meaning of an axis.
  2. Legacy applications frequently use the order the axis where configured in.
  3. A few applications use the reverse order the axis where configured in.
  4. Duplicate axis are rarely supported. Some APIs do support two Slider axis.
  5. Inverted axis: Many applications expect the left and right Y axis to go the other way. The direction can be reversed with Weight -100% or in the advanced Joystick configuration.
  6. Windows does support "axis" and "sim". However mixing both types is not always supported.
  7. Linux maps following inputs onto the same axis and uses the input value with the lowest channel number.
    • sim Thr + axis Slider → ABS_THROTTLE
    • sim Rud + axis Dial → ABS_RUDDER
    • axis Wheel + sim Steer → ABS_WHEEL
  8. Android treats sim Acc and sim Brk as half axis. EdgeTX channel outputs [-100%, 0% and +100%] are interpreted by Android as [0%, 50% and 100%]. Consider following configuration if your physical input is one analog stick:
    • sim Acc = input (axis 1: Offset -50%, Func "x>0") mixed with (Weight 200%)
    • sim Brk = input (axis 1: Offset -50%, Func "x<0") mixed with (Weight -200%)

Common Axis Mapping

channelAndroidBetaflightDualsenseEdgeTX ClassicEdgeTX pre 2.9
CH1axis Xaxis Xaxis Xaxis Xaxis X
CH2axis Yaxis Yaxis Yaxis Yaxis Y
CH3axis Zaxis Zaxis Zaxis Zaxis Z
CH4axis rotZaxis rotXaxis rotZaxis rotXaxis rotX
CH5sim Brkaxis rotZaxis rotXaxis rotYaxis rotY
CH6sim Accaxis rotYaxis rotYaxis rotZaxis rotZ
CH7axis Slideraxis Slideraxis Slider
CH8sim Dpadaxis Dialsim Dpadaxis Dialaxis Slider

Similar layouts:

other controlleruse layout
OpenTXEdgeTX pre 2.9
Orqa FPV.CtrlEdgeTX pre 2.9
StadiaAndroid
XBoxAndroid

sim Dpad

Sim Dpad emulates a directional pad also known as hat switch or point of view switch. Most application decode the 8 ordinal directions and "center". Some applications only decode the 4 cardinal directions and "center" (e.g. Northeast is treated as North).

directionfromto
North-100.0%-88.1%
Northeast-88.0%-76.4%
East-76.3%-64.6%
Southeast-64.6%-52.9%
South-52.8%-41.2%
Southwest-41.1%-29.5%
West-29.4%-17.8%
Northwest-17.7%-6.1%
Center-6.0%5.7%
North5.8%17.4%
Northeast17.5%29.1%
East29.2%40.8%
Southeast40.9%52.5%
South52.6%64.3%
Southwest64.4%76.0%
West76.1%87.7%
Northwest87.8%100.0%

Axis IDs

EdgeTXHID nameUSB HID ID
axis XX0x00010030
axis YY0x00010031
axis ZZ0x00010032
axis rotXRx0x00010033
axis rotYRy0x00010034
axis rotZRz0x00010035
axis SliderSlider0x00010036
axis DialDial0x00010037
axis WheelWheel0x00010038
sim AilAileron0x000200B0
sim EleElevator0x000200B8
sim RudRudder0x000200BA
sim ThrThrottle0x000200BB
sim AccAccelerator0x000200C4
sim BrkBrake0x000200C5
sim SteerSteering0x000200C8
sim DpadHat switch0x00010039

Buttons

  1. Buttons are identified by their USB HID ID.
  2. The meaning of a specific button ID is not standardized.
  3. Duplicate buttons (e.g. button 1, button 1) are not supported. The button with the higher channel number is used.
  4. Buttons as axis: Some applications need analog button information. Use a mixer to forward the digital button state to an analog axis.
  5. Ghost buttons: For Joysticks and Gamepads the required minimum amount of buttons is automatically created. Similarly if only button 15 is configured the missing buttons 0 - 14 are automatically created. These buttons have no input and are always off.
  6. Android generally supports buttons 0 to 14 with the same mapping as Linux. Support for buttons in bold is mandatory for all Android devices.
  7. Widows generally supports buttons 0 to 9 with the same mapping as Xbox.
EdgeTXAndroid / LinuxDualsenseWindows / XBoxUSB HID ID
button 0BTN_A - 304squareA0x00090001
button 1BTN_B - 305crossB0x00090002
button 2BTN_C - 305circleX0x00090003
button 3BTN_X - 307triangleY0x00090004
button 4BTN_Y - 308L1left bumper0x00090005
button 5BTN_Z - 309R1right bumper0x00090006
button 6BTN_TL - 310L2back0x00090007
button 7BTN_TR - 311R2start0x00090008
button 8BTN_TL2 - 312createleft stick0x00090009
button 9BTN_TR2 - 313optionsright stick0x0009000A
button 10BTN_SELECT - 314L3left trigger0x0009000B
button 11BTN_START - 315R3right trigger0x0009000C
button 12BTN_MODE - 316homeguide0x0009000D
button 13BTN_THUMBL - 317touchpad0x0009000E
button 14BTN_THUMBR - 318mute0x0009000F
button 150x00090010
button 16BTN_TRIGGER_HAPPY1 - 7040x00090011
button 17BTN_TRIGGER_HAPPY2 - 7050x00090012
button 18BTN_TRIGGER_HAPPY3 - 7060x00090013
button 19BTN_TRIGGER_HAPPY4 - 7080x00090014
button 20BTN_TRIGGER_HAPPY5 - 7090x00090015
button 21BTN_TRIGGER_HAPPY6 - 7100x00090016
button 22BTN_TRIGGER_HAPPY7 - 7110x00090017
button 23BTN_TRIGGER_HAPPY8 - 7120x00090018
button 24BTN_TRIGGER_HAPPY9 - 7130x00090019
button 25BTN_TRIGGER_HAPPY10 - 7140x0009001A
button 26BTN_TRIGGER_HAPPY11 - 7150x0009001B
button 27BTN_TRIGGER_HAPPY12 - 7160x0009001C
button 28BTN_TRIGGER_HAPPY13 - 7170x0009001D
button 29BTN_TRIGGER_HAPPY14 - 7180x0009001E
button 30BTN_TRIGGER_HAPPY15 - 7190x0009001F
button 31BTN_TRIGGER_HAPPY16 - 7200x00090020