libretro / libretro/RetroArch

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

Open
#16,905 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
14.1k
Forks
2.2k
Avg merge
7h 35m
Merged PRs (30d)
51

Description

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

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the issue with the sdl2 and udev controller drivers in RetroArch 1.19.1, then inspect the generated autoconfig entries shown in the report. Verify the four missing thumb-stick axis assignments and confirm that a fix makes all axes register in Remote RetroPad without manual edits.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, linux
Domain
desktop, operating-systems
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.