Skip to content

Latest commit

 

History

History
137 lines (121 loc) · 8.58 KB

configure-advanced-joystick-with-edgetx.md

File metadata and controls

137 lines (121 loc) · 8.58 KB

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

channel Android Betaflight Dualsense EdgeTX Classic EdgeTX pre 2.9
CH1 axis X axis X axis X axis X axis X
CH2 axis Y axis Y axis Y axis Y axis Y
CH3 axis Z axis Z axis Z axis Z axis Z
CH4 axis rotZ axis rotX axis rotZ axis rotX axis rotX
CH5 sim Brk axis rotZ axis rotX axis rotY axis rotY
CH6 sim Acc axis rotY axis rotY axis rotZ axis rotZ
CH7 axis Slider axis Slider axis Slider
CH8 sim Dpad axis Dial sim Dpad axis Dial axis Slider

Similar layouts:

other controller use layout
OpenTX EdgeTX pre 2.9
Orqa FPV.Ctrl EdgeTX pre 2.9
Stadia Android
XBox Android

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).

direction from to
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%
North 5.8% 17.4%
Northeast 17.5% 29.1%
East 29.2% 40.8%
Southeast 40.9% 52.5%
South 52.6% 64.3%
Southwest 64.4% 76.0%
West 76.1% 87.7%
Northwest 87.8% 100.0%

Axis IDs

EdgeTX HID name USB HID ID
axis X X 0x00010030
axis Y Y 0x00010031
axis Z Z 0x00010032
axis rotX Rx 0x00010033
axis rotY Ry 0x00010034
axis rotZ Rz 0x00010035
axis Slider Slider 0x00010036
axis Dial Dial 0x00010037
axis Wheel Wheel 0x00010038
sim Ail Aileron 0x000200B0
sim Ele Elevator 0x000200B8
sim Rud Rudder 0x000200BA
sim Thr Throttle 0x000200BB
sim Acc Accelerator 0x000200C4
sim Brk Brake 0x000200C5
sim Steer Steering 0x000200C8
sim Dpad Hat switch 0x00010039

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.
EdgeTX Android / Linux Dualsense Windows / XBox USB HID ID
button 0 BTN_A - 304 square A 0x00090001
button 1 BTN_B - 305 cross B 0x00090002
button 2 BTN_C - 305 circle X 0x00090003
button 3 BTN_X - 307 triangle Y 0x00090004
button 4 BTN_Y - 308 L1 left bumper 0x00090005
button 5 BTN_Z - 309 R1 right bumper 0x00090006
button 6 BTN_TL - 310 L2 back 0x00090007
button 7 BTN_TR - 311 R2 start 0x00090008
button 8 BTN_TL2 - 312 create left stick 0x00090009
button 9 BTN_TR2 - 313 options right stick 0x0009000A
button 10 BTN_SELECT - 314 L3 left trigger 0x0009000B
button 11 BTN_START - 315 R3 right trigger 0x0009000C
button 12 BTN_MODE - 316 home guide 0x0009000D
button 13 BTN_THUMBL - 317 touchpad 0x0009000E
button 14 BTN_THUMBR - 318 mute 0x0009000F
button 15 0x00090010
button 16 BTN_TRIGGER_HAPPY1 - 704 0x00090011
button 17 BTN_TRIGGER_HAPPY2 - 705 0x00090012
button 18 BTN_TRIGGER_HAPPY3 - 706 0x00090013
button 19 BTN_TRIGGER_HAPPY4 - 708 0x00090014
button 20 BTN_TRIGGER_HAPPY5 - 709 0x00090015
button 21 BTN_TRIGGER_HAPPY6 - 710 0x00090016
button 22 BTN_TRIGGER_HAPPY7 - 711 0x00090017
button 23 BTN_TRIGGER_HAPPY8 - 712 0x00090018
button 24 BTN_TRIGGER_HAPPY9 - 713 0x00090019
button 25 BTN_TRIGGER_HAPPY10 - 714 0x0009001A
button 26 BTN_TRIGGER_HAPPY11 - 715 0x0009001B
button 27 BTN_TRIGGER_HAPPY12 - 716 0x0009001C
button 28 BTN_TRIGGER_HAPPY13 - 717 0x0009001D
button 29 BTN_TRIGGER_HAPPY14 - 718 0x0009001E
button 30 BTN_TRIGGER_HAPPY15 - 719 0x0009001F
button 31 BTN_TRIGGER_HAPPY16 - 720 0x00090020