Switch Pro Controller
-
So I got my incredible Switch Pro Controller at the midnight launch, and during a break at work am reading that it is natively compatible via Bluetooth with Windows PCs. I'm curious if anyone has got one up and running with RetroPie yet, and if it will be an easy setup? My apologies if this has already been discussed.
-
I have paired the Switch Pro-Controller to my RetroPie. You can do it, by pressing for two seconds the little button on the front of the controller and going to the pairing menu in RetroPie.
Then, when you go back to Emulation Station and configure the controller everything will work EXCEPT for the analogue sticks. The digital pad will work in all consoles and videogames as well as the rest of buttons. The problem is that if you need the analogue sticks for certain emulators they won't work. You will notice this from the very beginning, in the moment of the controller setup in Emulation Station.
I hope that someone from the RetroPie team will fix this issue in the next version. Let's make them know this petition.
-
@Fran008 controller support isn't something retropie maintains. Rather it will be with the Bluetooth software and/or the underlying kernel possibly you'd need a third party driver of sorts like we do for ps3 or Xbox. Or may be as simple as a setting change from udev to SDL etc. Who knows. None of the devs have a switch to test anyhow.
-
@Fran008 Do you know if the control sticks work via USB connection?
-
None of the devs have a switch to test anyhow.
Maybe someone should purchase a Nintendo Switch for the devs to test with? Or just the Switch Pro Controller so they can figure out how to get it working in RetroPie ;-)
-
@backstander hardware is unfortunately only half of the piece. The other is finding the time! :D
-
@elgarlic The Raspberry doesn't detect the Switch Pro-Controller through USB, it only does via Bluetooth.
-
Hey, good news! I have been testing the analogue sticks of the Switch Controller and they work flawlessly!
I have got them work by assigning MANUALLY the analogue sticks in the retroarch.cfg file. The autoconfiguration in emulationstation menu does not detect them, but if you edit the config file manually it does the trick. Here there is a video with the prove. Cheers!
-
Here is the mapping for the Pro Controller in retroarch.cfg:
input_device = "Pro Controller"
input_driver = "udev"
input_r_y_plus_axis = "+3"
input_r_y_minus_axis = "-3"
input_l3_btn = "10"
input_r_x_minus_axis = "-2"
input_r_x_plus_axis = "+2"
input_l_btn = "4"
input_load_state_btn = "4"
input_start_btn = "9"
input_exit_emulator_btn = "9"
input_up_btn = "h0up"
input_a_btn = "0"
input_b_btn = "1"
input_reset_btn = "1"
input_down_btn = "h0down"
input_l_y_plus_axis = "+1"
input_l_y_minus_axis = "-1"
input_r_btn = "5"
input_save_state_btn = "5"
input_r2_btn = "7"
input_r3_btn = "11"
input_right_btn = "h0right"
input_state_slot_increase_btn = "h0right"
input_x_btn = "2"
input_menu_toggle_btn = "2"
input_select_btn = "8"
input_enable_hotkey_btn = "8"
input_l_x_minus_axis = "-0"
input_l_x_plus_axis = "+0"
input_y_btn = "3"
input_left_btn = "h0left"
input_state_slot_decrease_btn = "h0left"
input_l2_btn = "6" -
Damn! After some more testing, there are two directions on the analogue sticks that behave like digital. These are the ones that the autoconfiguration in emulationstation didn't detect. Maybe Nintendo designed the Pro Controller with this restriction in mind. Or maybe we'll have to wait and install the latest Bluetooth and controller drivers...
-
@Fran008 Mine seems to work fine after copying the above to Pro Controller.cfg not retroarch.cfg. What's the problem you are having?
-
@Fran008 Actually you have your buttons swapped. B was A, X was Y etc... It should be mapped like this:
input_device = "Pro Controller"
input_driver = "udev"
input_r_y_plus_axis = "+3"
input_r_y_minus_axis = "-3"
input_l3_btn = "10"
input_r_x_minus_axis = "-2"
input_r_x_plus_axis = "+2"
input_l_btn = "4"
input_load_state_btn = "4"
input_start_btn = "9"
input_exit_emulator_btn = "9"
input_up_btn = "h0up"
input_a_btn = "1"
input_b_btn = "0"
input_reset_btn = "0"
input_down_btn = "h0down"
input_l_y_plus_axis = "+1"
input_l_y_minus_axis = "-1"
input_r_btn = "5"
input_save_state_btn = "5"
input_r2_btn = "7"
input_r3_btn = "11"
input_right_btn = "h0right"
input_state_slot_increase_btn = "h0right"
input_x_btn = "3"
input_menu_toggle_btn = "3"
input_select_btn = "8"
input_enable_hotkey_btn = "6"
input_l_x_minus_axis = "-0"
input_l_x_plus_axis = "+0"
input_y_btn = "2"
input_left_btn = "h0left"
input_state_slot_decrease_btn = "h0left"
input_l2_btn = "6" -
@Dominus The problem comes when you use the analogue stick with games such Mario 64. It responds to the direction, but not the way it should: instead of behaving like an analogue button running, Mario walks slowly.
-
@Fran008 Oh I see. I haven't tried any of the n64 games myself with it yet.
-
Thanks for the mapping and surely enough Mario 64 will not run forward but rather just walk slowly.
I'm going to follow this:
https://github.com/RetroPie/RetroPie-Setup/wiki/Universal-Controller-Calibration-&-Mapping-Using-xboxdrv#2c-personalizing-your-controllers-id-nameIt looks like we may need to use the xboxdrv and modify it rather then simply using the pro controller cfg.
-
@li2099 Sorry for the bump but wanted to follow up and see if you got your Pro Controller working with xboxdrv? I am following mruwek's guide here but am running into issues so wanted to see what you did on your end. https://www.reddit.com/r/RetroPie/comments/67lhv3/nintendo_switch_pro_controller_is_fully_working/
-
Yeah me too.... damn this is harder than doing anything I did in Linux before!
-
@dausone said in Switch Pro Controller:
@li2099 Sorry for the bump but wanted to follow up and see if you got your Pro Controller working with xboxdrv? I am following mruwek's guide here but am running into issues so wanted to see what you did on your end. https://www.reddit.com/r/RetroPie/comments/67lhv3/nintendo_switch_pro_controller_is_fully_working/
what type of issues?
-
I know I'm bumping an old thread, but I want to contribute. I found nothing concrete about Retropie and the Switch Pro Controller. So, with some poking and prodding, I discovered that information myself. Since the Switch Pro Controller is awesome, I thought I would share my findings so future people who are Googling will have an easier time than I did.
This is for Retropie 4.4
Bluetooth sync is pretty straightforward. Start your Retropie searching then press the sync button on the controller (next to where the charging cable plugs in) for two seconds. You'll know it's on by what I call the "Knight Rider" effect on the green lights on the front of the controller (facing you). Press up or something on the controller, because the Retropie is in search mode for a while, and the controller side of things may time out before the Retropie completes its search.
Then, once it's connected via Bluetooth, use your existing controller in Emulation Station to press Start, then Configure Input. Then, press a button on your Switch Pro Controller (which will show up as just "Pro Controller"), then go through the motions. The analog sticks may or may not give you some trouble here. If they do, forget about it. Just long press each one until the "not configured" choice comes up then move on.
Once that's complete, on your computer go to \retropie\configs\all\retroarch-joypads\pro controller.cfg and replace whatever's in there with the following...
input_device = "Pro Controller"
input_driver = "udev"
input_r_y_plus_axis = "+3"
input_r_y_minus_axis = "-3"
input_l3_btn = "10"
input_r_x_minus_axis = "-2"
input_r_x_plus_axis = "+2"
input_l_btn = "4"
input_load_state_btn = "4"
input_start_btn = "9"
input_exit_emulator_btn = "9"
input_up_btn = "h0up"
input_a_btn = "1"
input_b_btn = "0"
input_reset_btn = "0"
input_down_btn = "h0down"
input_l_y_plus_axis = "+1"
input_l_y_minus_axis = "-1"
input_r_btn = "5"
input_save_state_btn = "5"
input_r2_btn = "7"
input_r3_btn = "11"
input_right_btn = "h0right"
input_state_slot_increase_btn = "h0right"
input_x_btn = "3"
input_menu_toggle_btn = "3"
input_select_btn = "8"
input_enable_hotkey_btn = "13"
input_l_x_minus_axis = "-0"
input_l_x_plus_axis = "+0"
input_y_btn = "2"
input_left_btn = "h0left"
input_state_slot_decrease_btn = "h0left"
input_l2_btn = "6"FYI I have the "hot" button as button 13, which is the circle in the square button close to the D-pad. That's just my personal preference. The Home key is button 12, if you wanna know.
Shut down your Retropie at this point. Unplug your "old" controller. Boot your Retropie back up. Then, once booted, long-pressing a button on the Switch Pro Controller will get you to the Emulation Station menu, then have fun!
That's it. Don't do anything else! This configuration even passes the Super Mario 64 test mentioned above. Disregard (like I wish I did) any craziness about pastebins or Xbox drivers or anything else. This is really quite simple. I'm typing this out because no one else seemed to (that I could find, anyway). And, as I said, I want to save someone else all the headaches I went through.
-
Please help. Firstly, I want to say thanks all for your contributions, specially @Amishgamer config, which works fine for my Pro Controller clone compatible (e.g. brand JFune).
BUT, It only works when connected by wire, but not on bluetooth. The controller is registered, trusted, paired and connected with buetooth ( everything seems fine in bluetoothctl), but retropie wont respond to it . It even says gamepad detected on EmulationStation home page, but no matter which button I click or hold, it won't answer.
Thanks everybody for your great work and help.
So, to recap: Bluetooth connection seems fine, and key mapping when wired too, but it wont work wireless.
Thanks everybody for your great work and help.
S
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.