Skip to content

Nintendo Switch Pro Controller+Linux 5.15 (non-HID) does not register thumb sticks #16905

@davidhedlund

Description

@davidhedlund

Description

Analog sticks are not registered on the Nintendo Switch Pro Controller when using RetroArch with SDL2 or udev drivers.

Expected behavior

sdl2

input_driver = "sdl2"
input_device = "Nintendo Switch Pro Controller"
input_vendor_id = "1406"
input_product_id = "8201"
input_b_btn = "0"
input_y_btn = "2"
input_select_btn = "4"
input_start_btn = "6"
input_up_btn = "11"
input_down_btn = "12"
input_left_btn = "13"
input_right_btn = "14"
input_a_btn = "1"
input_x_btn = "3"
input_l_btn = "9"
input_r_btn = "10"
input_l2_axis = "+4"
input_r2_axis = "+5"
input_l3_btn = "7"
input_r3_btn = "8"
input_l_x_plus_axis = "+0"
input_l_x_minus_axis = "-0"
input_l_y_plus_axis = "+1"
input_l_y_minus_axis = "-1"
input_r_x_plus_axis = "+2"
input_r_x_minus_axis = "-2"
input_r_y_plus_axis = "+3"
input_r_y_minus_axis = "-3"

udev

input_driver = "udev"
input_device = "Pro Controller"
input_vendor_id = "1406"
input_product_id = "8201"
input_b_btn = "0"
input_y_btn = "2"
input_select_btn = "8"
input_start_btn = "9"
input_up_btn = "h0up"
input_down_btn = "h0down"
input_left_btn = "h0left"
input_right_btn = "h0right"
input_a_btn = "1"
input_x_btn = "3"
input_l_btn = "4"
input_r_btn = "5"
input_l2_btn = "6"
input_r2_btn = "7"
input_l3_btn = "10"
input_r3_btn = "11"
input_l_x_plus_axis = "+0"
input_l_x_minus_axis = "-0"
input_l_y_plus_axis = "+1"
input_l_y_minus_axis = "-1"
input_r_x_plus_axis = "+2"
input_r_x_minus_axis = "-2"
input_r_y_plus_axis = "+3"
input_r_y_minus_axis = "-3"

Actual behavior

sdl2

input_driver = "sdl2"
input_device = "Nintendo Switch Pro Controller"
input_vendor_id = "1406"
input_product_id = "8201"
input_b_btn = "0"
input_y_btn = "2"
input_select_btn = "4"
input_start_btn = "6"
input_up_btn = "11"
input_down_btn = "12"
input_left_btn = "13"
input_right_btn = "14"
input_a_btn = "1"
input_x_btn = "3"
input_l_btn = "9"
input_r_btn = "10"
input_l2_axis = "+4"
input_r2_axis = "+5"
input_l3_btn = "7"
input_r3_btn = "8"
input_l_x_minus_axis = "-0"
input_l_y_plus_axis = "+1"
input_l_y_minus_axis = "-1"
input_r_x_minus_axis = "-2"
input_r_y_plus_axis = "+3"

udev

input_driver = "udev"
input_device = "Pro Controller"
input_vendor_id = "1406"
input_product_id = "8201"
input_b_btn = "0"
input_y_btn = "2"
input_select_btn = "8"
input_start_btn = "9"
input_up_btn = "h0up"
input_down_btn = "h0down"
input_left_btn = "h0left"
input_right_btn = "h0right"
input_a_btn = "1"
input_x_btn = "3"
input_l_btn = "4"
input_r_btn = "5"
input_l2_btn = "6"
input_r2_btn = "7"
input_l3_btn = "10"
input_r3_btn = "11"
input_l_x_minus_axis = "-0"
input_l_y_plus_axis = "+1"
input_l_y_minus_axis = "-1"
input_r_x_minus_axis = "-2"
input_r_y_plus_axis = "+3"

Steps to reproduce the bug

  1. Navigate to Settings -> Drivers -> Controller, and select the controller driver "sdl2" or "udev".
  2. Restart RetroArch to apply the new setting.
  3. Go to Settings -> Input -> RetroPad Binds -> Port 1 Controls
  4. Click on "Set All Controls"
  5. Notice that these axes do not register any input: "Left Analog X+ (Right)", "Right Analog Y- (Up)", "Right Analog X+ (Right)".
  6. Click on "Save Controller Profile".
  7. Close RetroArch
  8. Open the generated autoconfig file and expand both the udev and the sdl2 file since their generated thumb stick input variables are identical (but not the rest of their content)

expand:

input_l_x_minus_axis = "-0"
input_l_y_plus_axis = "+1"
input_l_y_minus_axis = "-1"
input_r_x_minus_axis = "-2"
input_r_y_plus_axis = "+3"

to:

# input_l_x_plus_axis has manually been set here: Nintendo Switch Pro Controller+Linux 5.15 (non-HID) does not register thumb sticks - https://github.com/libretro/RetroArch/issues/16905
input_l_x_plus_axis = "+0"
input_l_x_minus_axis = "-0"
input_l_y_plus_axis = "+1"
input_l_y_minus_axis = "-1"
# input_r_x_plus_axis has manually been set here: Nintendo Switch Pro Controller+Linux 5.15 (non-HID) does not register thumb sticks - https://github.com/libretro/RetroArch/issues/16905
input_r_x_plus_axis = "+2"
input_r_x_minus_axis = "-2"
input_r_y_plus_axis = "+3"
# input_r_y_minus_axis has manually been set here: Nintendo Switch Pro Controller+Linux 5.15 (non-HID) does not register thumb sticks - https://github.com/libretro/RetroArch/issues/16905
input_r_y_minus_axis = "-3"
  1. Save the changes in the file.
  2. Open RetroArch
  3. Navigate to Main Menu -> Load Core
  4. Click on Start Remote RetroPad
  5. All axes (up, down, left, right) on the thumb sticks will be indicated in Remote RetroPad when evaluate them.

Version/Commit

  • RetroArch: 1.19.1 Flatpak

OS

Trisquel 11.0/Ubuntu MATE 22.04

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions