Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

How to connect a Switch Pro Controller with analog stick without xboxdrv.



  • @vague-rant is nice to know my work also helped out another controller.



  • Hi shadowofdarkness,

    I've tested your method, and it worked almost perfect to me. I was able to remap the left stick with both axis properly, but had a problem with the right stick, where up, down, and left directios were correctly registered, but, when I try to set right direction, It doesn't recognize it.



  • @arziel Strange I have not had that issue on my system, I have also tested it by connecting my Pro Controller to another family members Retropie system and it also worked great.

    My /opt/retropie/configs/all/retroarch-joypads/Pro\ Controller.cfg file has the following for the right sticks values with r_x_plus_axis being the one you are having issues with.

    input_r_x_minus_axis = "-2"
    input_r_x_plus_axis = "+2"
    input_r_y_minus_axis = "-3"
    input_r_y_plus_axis = "+3"

    Edit I guess one thing to try is to make sure that the joydev system actually applied the joysticks state when the controller was connected.

    try running the following but make sure your controller is actually js0 and not a different number, if it is adjust the command. Then try configuring the controller again.

    jscal-restore /dev/input/js0



  • Hi again, I tried the jscal command and didn't work. Also checked the cfg file. In the cfg file the value input for r_x_plus is missing.

    The pro controller is the only controller I have.



  • @arziel Maybe just try manually fixing the cfg file in a text editor, and then just see how it actually works in game.

    As far as I can tell the joydev system is only used when configuring the controller, other then that the emulators use the evdev system which is separate.

    Fun fact about all the changes I made that are applied to the controller. The joystick.state is just a axis mapping fix to get past the configuration, I never actually fixed any calibration in it.

    The other service file is just for the other subsystem that calibrates them but I never had any axis mapping problems with it.



  • @shadowofdarkness well I have no idea where to continue. I've edited the cfg file adding the r_x_plus_axis line with no success, so I'll stay and live only with the left stick. At least, one is working now.



  • In controller.service:

    ExecStartPre=/usr/bin/evdev-joystick --evdev /dev/switch-pro-controller --minimum 4630 --maximum 59562 --axis 0
    ExecStartPre=/usr/bin/evdev-joystick --evdev /dev/switch-pro-controller --minimum 8492 --maximum 62531 --axis 1
    ExecStartPre=/usr/bin/evdev-joystick --evdev /dev/switch-pro-controller --minimum 8649 --maximum 62378 --axis 3
    ExecStart=/usr/bin/evdev-joystick --evdev /dev/switch-pro-controller --minimum 4000 --maximum 60305 --axis 4
    KillMode=process

    the fourth line says "ExecStart=/usr/bin/evdev-joystick", shouldn't be "ExecStartPre=/usr/bin/evdev-joystick"?



  • @arziel have you tried rebooting the system? Also that service is fine the fourth one is not supposed to have a pre



  • @shadowofdarkness I followed your instructions on this but my Pro Controller would not pair. The lights on the controller just kept flashing sequentially. I have two other bluetooth controllers paired (Mad Catz CTRLR and PS3, though only the former is working). But they were not connected at the time. Any help would be greatly appreciated



  • Hi

    Is this still the best method and is the first step still required with the latest version of Retropie?

    Thanks



Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.