Help Required Getting Xbox One Controller Working

Hello,

I’m new to Retroarch and was wondering if someone would be as kind as to help me troubleshoot the Xbox One controller I’m trying to set up with Retroarch.

So from the offset I’m running Retroarch in a basic X Window system without any sort of desktop environment, so will not be able to run any graphical tools; I’m also running Retroarch on Fedora.

Here are the steps I’ve taken so far:

[ol] [li] Add Retroarch user to input group.[/li][li]Install the valve fork of xpad - verified the module was loaded, but got no interface under /dev/input/js*[/li][li]Install xboxdrv, enabled the systemd unit and blacklisted the xpad module bundled with the Kernel.[/li][li]Retroarch recognises the Xbox One controller but doesn’t accept any kind of input from it.[/li][li]Switched between the various different input/joystick drivers in the menu; wasn’t sure here as none of them were what I would have expected - the only choices were ‘udev’, ‘sdl’, ‘sdl2’ and ‘linuxraw’.[/li][li]Ran jstest on /dev/input/js0 saw the controller name etc… pressing buttons on the controller didn’t appear to affect the output; not sure if it’s suppose to?[/li][/ol]

It is a third part controller, if that makes a difference (probably not since it’s recognized by Retroarch) - here is the dmesg output:

[ 2738.748505] usb 6-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2738.748508] usb 6-1: Product: Xbox ONE liquid metal controller
[ 2738.748510] usb 6-1: Manufacturer: PowerA
[ 2738.748512] usb 6-1: SerialNumber: 0000C6502E5959FA
[ 2884.206704] usb 6-1: USB disconnect, device number 6

Here is the result of jstest /dev/input/js0:


Driver version is 2.1.0.
Joystick (Microsoft X-Box 360 pad) has 8 axes (X, Y, Rx, Ry, Gas, Brake, Hat0X, Hat0Y)
and 11 buttons (BtnX, BtnY, BtnTL, BtnTR, BtnTR2, BtnSelect, BtnThumbL, BtnThumbR, ?, ?, ?).
Testing ... (interrupt to exit)
Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:Axes:  0:     0  1:     0  2:     0  3:     0  4:-32767  5:     0  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:Axes:  0:     0  1:     0  2:     0  3:     0  4:-32767  5:-32767  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:Axes:  0:     0  1:     0  2:     0  3:     0  4:-32767  5:-32767  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:Axes:  0:     0  1:     0  2:     0  3:     0  4:-32767  5:-32767  6:     0  7:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:off

Not really sure where to go from here - I’ve never used a gamepad on Linux before so I don’t know much about how it’s all implemented. Any help would be massively appreciated!

Thank you.

Ok so did some reading and it looks as though xboxdrv doesn’t support xbox one controllers - did some more playing about and got the valve fork of xpad to create an interface under /dev/input and it also now shows up in Retroarch.

However still can’t get any of the buttons to work - any ideas anyone?

Anyone?

I’m completely stuck here as I bought a couple of these controllers, purely for the purpose of Retroarch.

If you can get the keycodes from another program (does jstest provide them?), you could try making an autoconfig profile by hand. You just need the keycodes and the vid/pid.

I would just try a couple of buttons at first to see if it helps.

I’ve had this problem with ArchLinux. I’ve compiled the steamos-xpad module for use with RetroArch. The module would work fine, but whenever I loaded RA the module would somehow disable itself and all input was useless. I could only make it work again by reloading the module.

Did you try to add an udev rule with ENV{ID_INPUT_JOYSTICK}=“1” for your pad ? There are a few joypad/joystick who won’t work in retroarch without such an udev rule. Btw, just wondering, why Xbox One controllers for retroarch ? I see a couple of simpler/better/cheaper options around.

why would you need drivers for a xbone controller anyways? i just plug in my ps4 controller without any drivers or any type of set up. attached it to Bluetooth no problems just like when i was on Winblows !0