RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login
    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

    [Xbox One S Controller Bluetooth] Simple guide

    Scheduled Pinned Locked Moved Help and Support
    xbox one bloothxbox one sxbox one contrbluetooth contrxpad
    5 Posts 2 Posters 4.4k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • N
      nemo93
      last edited by nemo93

      Hi Guys,

      After I really struggled to have this controller to work flawlessly on Retropie (4.5.2 - current) with my Pi3B+ I wanted to share my experience + feedbacks in a form of this simple guide.

      A few days ago my good old Xbox 360 wireless controller suddenly stopped working. It was a fine controller and I never had issue with it. I told myself I'd buy the exact same but when I saw the price online I changed my mind and got my hands on a new Xbox One S wireless controller with Bluetooth (version 1708).

      In order to have your shiny Xbox One S controller to work over bluetooth with Retropie 4.5.x on Pi3B+ (and perhaps other models):

      • follow this guide or this one to install xpadneo driver.
      • ensure you have proper battery or batteries in your controller if it keeps on disconnecting.
      • you could also go for a bluetooth dongle instead of the Pi3B+ internal one. I've picked that one. Just plug it into any USB port! Don't forget to disable Pi's onboard bluetooth as explained in the first guide above.
      • edit the main retroarch.cfg file. Under the driver section change as follows:
      # Joypad driver. ("udev", "linuxraw", "paraport", "sdl2", "hid", "dinput")
      input_joypad_driver = "linuxraw"
      
      • make sure to have a new Xbox Wireless Controller.cfg under the /opt/retropie/configs/all/retroarch-joypads/ with correct mappings.
      • you can also map buttons/axis from the main retroarch.cfg under /opt/retropie/configs/all/ or under the various configs directories for each emulator.
      • to test your axis/buttons you could always rely on that command from the console: # jstest /dev/input/js0

      My feedback after this week of trial and error:

      • xpadneo driver is very stable. There's already a PR hence I suspect there was no time to integrate it into the distribution. If more testing is needed I'm available.
      • the (official Microsoft) rechargeable battery is really of poor quality. I recommend regular batteries or rechargeable ones to prevent any situation like mine where I simply lost a good chunk of my hairs before I tried another batteries.
      • the current setup is very stable and I got no more issue for a week. I just need to figure out why under Mame-2003-plus only the left analog stick is working not the Dpad.
      • for the record my current Xbox Wireless Controller.cfg from /opt/retropie/configs/all/retroarch-joypads/:
      input_device = "Xbox Wireless Controller"
      
      input_player1_r_y_plus_axis = +4
      input_player1_r_y_minus_axis = -4
      input_player1_r_x_plus_axis = +3
      input_player1_r_x_minus_axis = -3
      input_player1_l_x_minus_axis = -0
      input_player1_l_x_plus_axis = +0
      input_player1_l_y_minus_axis = -1
      input_player1_l_y_plus_axis = +1
      
      input_player1_left_axis = -6
      input_player1_right_axis = +6
      input_player1_up_axis = -7
      input_player1_down_axis = +7
      
      input_player1_start_btn = 7
      input_player1_select_btn = 6
      
      input_player1_a_btn = 1
      input_player1_b_btn = 0
      input_player1_x_btn = 2
      input_player1_y_btn = 3
      input_player1_l_btn = 4
      input_player1_r_btn = 5
      input_player1_l2_axis = +2
      input_player1_r2_axis = +5
      input_player1_l3_btn = 9
      input_player1_r3_btn = 10
      
      input_enable_hotkey_btn = "6"
      input_exit_emulator_btn = "7"
      input_menu_toggle_btn = "2"
      input_reset_btn = "1"
      

      Hope this helps!

      quicksilverQ 1 Reply Last reply Reply Quote 0
      • quicksilverQ
        quicksilver @nemo93
        last edited by

        @nemo93 said in [Xbox One S Controller Bluetooth] Feedbacks + tips to have it work:

        I just need to figure out why under Mame-2003-plus only the left analog stick is working not the Dpad.

        This is normal behavior for lr-mame2003+. You can change the settings in the retroarch menu if you want to.

        1 Reply Last reply Reply Quote 0
        • N
          nemo93
          last edited by nemo93

          Thanks @quicksilver. This is indeed apparently the expected default behavior. Do you know what setting(s) must be changed to be able to play with Dpad instead of analog? If both works that's fine too! I've tried the different controller types (6 button, Fightstick, etc) with no success.

          quicksilverQ 1 Reply Last reply Reply Quote 0
          • quicksilverQ
            quicksilver @nemo93
            last edited by

            @nemo93 I believe it's an option in the quick menu settings not under controller settings. I'll have a look today and report back the exact setting.

            N 1 Reply Last reply Reply Quote 0
            • N
              nemo93 @quicksilver
              last edited by

              @quicksilver you're right in Mame2003+ simply open the Retroarch Menu/GUI > Quick menu > Settings (not Controls indeed) and head for the Control Mapping setting. Change the value either to Analog (left stick) or Digital (Dpad). Thanks for the tip as I completely missed that opion!

              1 Reply Last reply Reply Quote 1
              • First post
                Last post

              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.