Retroarch 1.2 + Ubuntu 15.04 + XBox One Controller = Something isn't right here

I have Retroarch installed on Ubuntu 15.04 and I’m using a XBox One controller as input. This setup worked just fine on 1.0.0.3, but as soon as I installed 1.2 I noticed a problem. If I have my controller plugged in when I start retroarch, it will accept no input, no keyboard, no controller, no nothing. As soon as I unplug and replug my controller I instantly get full use of keyboard and controller. Now this wouldn’t be such a bad thing if on startup was the only time this happened, however, it also happens when I load a rom, exit a rom, or make any changes regarding input. It is very frustrating that I can’t play my favorite old school games without having to constantly unplug and replug my controller. Things I’ve already done:

[ol] [li]Removed (rm -rf) ~/.configs/retroarch[/li][li]sudo apt-get purge retroarch* libretro* && sudo apt-get install retroarch* libretro*[/li][li]rebooted my system several times[/li][li]prayed to the video game gods[/li][li]gone back to stable 1.0.0.3 with my tail between my legs, defeated[/li][/ol]

I believe the problem lies in the way 1.2 handles udev, but I can’t be sure.

Any help at all would be appreciated. Thanks

EDIT: Here’s what I get when I run retroarch --verbose --menu --fullscreen from the console

tyancolte@EpicBuntu:~/.config/retroarch$ retroarch --verbose --menu --fullscreen
RetroArch [INFO] :: === Build =======================================RetroArch [INFO] :: [CPUID]: Vendor: GenuineIntel
RetroArch [INFO] :: [CPUID]: Features: MMX MMXEXT SSE SSE2 SSE3 SSSE3 SSE4 SSE4.2 AES AVX
MMX MMXEXT SSE1 SSE2 SSE3 SSSE3 SSE4 SSE4.2 AVX AES Built: Jul  9 2015
RetroArch [INFO] :: Version: 1.2
RetroArch [INFO] :: =================================================
RetroArch [INFO] :: [CPUID]: Vendor: GenuineIntel
RetroArch [INFO] :: [CPUID]: Features: MMX MMXEXT SSE SSE2 SSE3 SSSE3 SSE4 SSE4.2 AES AVX
RetroArch [INFO] :: Looking for config in: "/home/tyancolte/.config/retroarch/retroarch.cfg".
RetroArch [INFO] :: Loading config from: /home/tyancolte/.config/retroarch/retroarch.cfg.
RetroArch [INFO] :: Environ SET_PIXEL_FORMAT: RGB565.
RetroArch [INFO] :: Version of libretro API: 1
RetroArch [INFO] :: Compiled against API: 1
RetroArch [INFO] :: Set audio input rate to: 29975.00 Hz.
RetroArch [INFO] :: Found shader "/usr/share/libretro/shaders/5xbr-retro.cg"
RetroArch [INFO] :: Found shader "/usr/share/libretro/shaders/bead.cg"
RetroArch [INFO] :: Found shader "/usr/share/libretro/shaders/blinky.cg"
RetroArch [INFO] :: Found shader "/usr/share/libretro/shaders/pixellate.cg"
RetroArch [INFO] :: Found shader "/usr/share/libretro/shaders/quilez.cg"
RetroArch [INFO] :: Found shader "/usr/share/libretro/shaders/retro-v2.cg"
RetroArch [INFO] :: Found shader "/usr/share/libretro/shaders/scanline.cg"
RetroArch [INFO] :: Found shader "/usr/share/libretro/shaders/sharp-bilinear.cg"
RetroArch [INFO] :: Found shader "/usr/share/libretro/shaders/stock.cg"
RetroArch [INFO] :: Video @ fullscreen
RetroArch [INFO] :: Found GL context: glx
RetroArch [INFO] :: Detecting screen resolution 2384x768.
RetroArch [INFO] :: [X11]: Xinerama version: 1.1.
RetroArch [INFO] :: [X11]: Xinerama screens: 2.
RetroArch [INFO] :: [GLX]: Using Xinerama on screen #0.
RetroArch [INFO] :: [GLX]: X = 0, Y = 0, W = 1360, H = 768.
RetroArch [INFO] :: [GLX]: Using windowed fullscreen.
RetroArch [INFO] :: [GLX]: Found swap function: glXSwapIntervalEXT.
RetroArch [INFO] :: [GLX]: glXSwapIntervalEXT(1)
RetroArch [INFO] :: [GL]: Vendor: NVIDIA Corporation, Renderer: GeForce GTX 760/PCIe/SSE2.
RetroArch [INFO] :: [GL]: Version: 4.5.0 NVIDIA 352.21.
RetroArch [INFO] :: Querying GL extension: ARB_ES2_compatibility => exists
RetroArch [INFO] :: Querying GL extension: ARB_sync => exists
RetroArch [INFO] :: Querying GL extension: ARB_texture_float => exists
RetroArch [INFO] :: Querying GL extension: EXT_texture_sRGB => exists
RetroArch [INFO] :: Querying GL extension: ARB_framebuffer_sRGB => exists
RetroArch [INFO] :: GL: Using resolution 1360x768
RetroArch [INFO] :: [GL]: Default shader backend found: glsl.
RetroArch [INFO] :: [GL]: Not loading any shader.
RetroArch [INFO] :: [GL]: Using 4 textures.
RetroArch [INFO] :: [GL]: Loaded 0 program(s).
RetroArch [INFO] :: [GL]: Using GL_RGB565 for texture uploads.
RetroArch [INFO] :: [udev]: Plugged pad: Microsoft X-Box One pad (045e:02d1) on port #0.
RetroArch [INFO] :: Device port #0 (Microsoft X-Box One pad) configured.
RetroArch [INFO] :: [udev]: Pad #0 (/dev/input/event5) supports 0 force feedback effects.
RetroArch [INFO] :: Found joypad driver: "udev".
RetroArch [INFO] :: Using font rendering backend: freetype.
RetroArch [INFO] :: Suspending screensaver (X11).
RetroArch [INFO] :: [CPUID]: Vendor: GenuineIntel
RetroArch [INFO] :: [CPUID]: Features: MMX MMXEXT SSE SSE2 SSE3 SSSE3 SSE4 SSE4.2 AES AVX
RetroArch [INFO] :: [PulseAudio]: Requested 24576 bytes buffer, got 18432.
RetroArch [INFO] :: [CPUID]: Vendor: GenuineIntel
RetroArch [INFO] :: [CPUID]: Features: MMX MMXEXT SSE SSE2 SSE3 SSSE3 SSE4 SSE4.2 AES AVX
RetroArch [INFO] :: Using font rendering backend: freetype.
RetroArch [INFO] :: Using font rendering backend: freetype.
RetroArch [INFO] :: SRAM will not be saved.
RetroArch [INFO] :: [GL]: VSync => on
RetroArch [INFO] :: [GLX]: glXSwapIntervalEXT(1)
RetroArch [INFO] :: [GL]: VSync => on
RetroArch [INFO] :: [GLX]: glXSwapIntervalEXT(1)
RetroArch [INFO] :: [PulseAudio]: Pausing.
RetroArch [INFO] :: [Data Thread]: Initializing data thread.
RetroArch [INFO] :: [Data Thread]: Starting data thread.

Same issue here.

OS: Elementary OS Freya (Based on Ubuntu 14.04 with 14.10 backports). Hardware: Wireless XBox 360 controller adapter.

I believe the issue has to do with the way analog axes are handled, as fiddling with the thumbsticks is often enough to restore (partial) functionality. Actually using the controller in-game is a different matter entirely, rendering any game that uses analog sticks completely useless. Would love a fix for this, as it’s driving me nuts!

ouch, confirmed. Do you guys have any idea when this first started? Are we sure it’s RetroArch’s fault and not something up with Ubuntu? There was an issue awhile back that totally broke PS3 pads, so I’m distrustful…

I can confirm the issue is not present in 1.0.0.3 (As TyanColte mentioned), with the same hardware. Furthermore, there are no issues with joystick/gamepads in any other game (Same hardware, Steam; Runner2, Distance, Crawl… etc.), so it definitely seems like something to do with RetroArch.

I’ve had issues in the daily/testing PPA for a few months now, and assumed the Linux/XBox Controller combo was common enough that someone would have reported it already.

In case it matters, here’s the output of my --verbose

kevlar@media-centre:~/.config/retroarch$ retroarch --verbose --menu --fullscreen
RetroArch [INFO] :: === Build =======================================
RetroArch [INFO] :: [CPUID]: Vendor: GenuineIntel
RetroArch [INFO] :: [CPUID]: Features: MMX MMXEXT SSE SSE2 SSE3 SSSE3 SSE4 SSE4.2 AES AVX AVX2 MMX MMXEXT SSE1 SSE2 SSE3 SSSE3 SSE4 SSE4.2 AVX AVX2 AES Built: Jul  8 2015
RetroArch [INFO] :: Version: 1.2
RetroArch [INFO] :: =================================================
RetroArch [INFO] :: [CPUID]: Vendor: GenuineIntel
RetroArch [INFO] :: [CPUID]: Features: MMX MMXEXT SSE SSE2 SSE3 SSSE3 SSE4 SSE4.2 AES AVX AVX2
RetroArch [INFO] :: Looking for config in: "/home/kevlar/.config/retroarch/retroarch.cfg".
RetroArch [INFO] :: Loading config from: /home/kevlar/.config/retroarch/retroarch.cfg.
RetroArch [INFO] :: Game name: 
RetroArch [INFO] :: Core name: 
RetroArch [INFO] :: Config directory: /home/kevlar/.config/retroarch
RetroArch [INFO] :: No core-specific overrides found at /home/kevlar/.config/retroarch/.cfg.
RetroArch [INFO] :: No game-specific overrides found at /home/kevlar/.config/retroarch/.cfg.
RetroArch [INFO] :: Environ SET_PIXEL_FORMAT: RGB565.
RetroArch [INFO] :: Game name: 
RetroArch [INFO] :: Core name: 
RetroArch [INFO] :: Remap directory: /home/kevlar/.config/retroarch/
RetroArch [INFO] :: No core-specific remap found at /home/kevlar/.config/retroarch/.rmp.
RetroArch [INFO] :: No core-specific remap found at /home/kevlar/.config/retroarch/.rmp.
RetroArch [INFO] :: Version of libretro API: 1
RetroArch [INFO] :: Compiled against API: 1
RetroArch [INFO] :: Set audio input rate to: 29975.00 Hz.
RetroArch [INFO] :: Found shader "/usr/share/libretro/shaders/5xbr-retro.cg"
RetroArch [INFO] :: Found shader "/usr/share/libretro/shaders/bead.cg"
RetroArch [INFO] :: Found shader "/usr/share/libretro/shaders/blinky.cg"
RetroArch [INFO] :: Found shader "/usr/share/libretro/shaders/pixellate.cg"
RetroArch [INFO] :: Found shader "/usr/share/libretro/shaders/quilez.cg"
RetroArch [INFO] :: Found shader "/usr/share/libretro/shaders/retro-v2.cg"
RetroArch [INFO] :: Found shader "/usr/share/libretro/shaders/scanline.cg"
RetroArch [INFO] :: Found shader "/usr/share/libretro/shaders/sharp-bilinear.cg"
RetroArch [INFO] :: Found shader "/usr/share/libretro/shaders/stock.cg"
RetroArch [INFO] :: Video @ fullscreen
RetroArch [INFO] :: Found GL context: glx
RetroArch [INFO] :: Detecting screen resolution 1920x1080.
RetroArch [INFO] :: [X11]: Xinerama version: 1.1.
RetroArch [INFO] :: [X11]: Xinerama screens: 1.
RetroArch [INFO] :: [GLX]: Using Xinerama on screen #0.
RetroArch [INFO] :: [GLX]: X = 0, Y = 0, W = 1920, H = 1080.
RetroArch [INFO] :: [GLX]: Using windowed fullscreen.
RetroArch [INFO] :: [GLX]: Found swap function: glXSwapIntervalMESA.
RetroArch [INFO] :: [GLX]: glXSwapInterval(1)
RetroArch [INFO] :: [GL]: Vendor: Intel Open Source Technology Center, Renderer: Mesa DRI Intel(R) Haswell Mobile .
RetroArch [INFO] :: [GL]: Version: 3.0 Mesa 10.3.2.
RetroArch [INFO] :: Querying GL extension: ARB_ES2_compatibility => exists
RetroArch [INFO] :: Querying GL extension: ARB_sync => exists
RetroArch [INFO] :: Querying GL extension: ARB_texture_float => exists
RetroArch [INFO] :: Querying GL extension: EXT_texture_sRGB => exists
RetroArch [INFO] :: Querying GL extension: ARB_framebuffer_sRGB => exists
RetroArch [INFO] :: GL: Using resolution 1920x1080
RetroArch [INFO] :: [GL]: Default shader backend found: glsl.
RetroArch [INFO] :: [GL]: Not loading any shader.
RetroArch [INFO] :: [GL]: Using 4 textures.
RetroArch [INFO] :: [GL]: Loaded 0 program(s).
RetroArch [INFO] :: [GL]: Using GL_RGB565 for texture uploads.
RetroArch [INFO] :: [udev]: Plugged pad: Xbox 360 Wireless Receiver (045e:0719) on port #0.
RetroArch [INFO] :: [udev]: Pad #0 (/dev/input/event5) supports force feedback.
RetroArch [INFO] :: [udev]: Pad #0 (/dev/input/event5) supports 16 force feedback effects.
RetroArch [INFO] :: [udev]: Plugged pad: Xbox 360 Wireless Receiver (045e:0719) on port #1.
RetroArch [INFO] :: [udev]: Pad #1 (/dev/input/event6) supports force feedback.
RetroArch [INFO] :: [udev]: Pad #1 (/dev/input/event6) supports 16 force feedback effects.
RetroArch [INFO] :: [udev]: Plugged pad: Xbox 360 Wireless Receiver (045e:0719) on port #2.
RetroArch [INFO] :: [udev]: Pad #2 (/dev/input/event7) supports force feedback.
RetroArch [INFO] :: [udev]: Pad #2 (/dev/input/event7) supports 16 force feedback effects.
RetroArch [INFO] :: [udev]: Plugged pad: Xbox 360 Wireless Receiver (045e:0719) on port #3.
RetroArch [INFO] :: [udev]: Pad #3 (/dev/input/event8) supports force feedback.
RetroArch [INFO] :: [udev]: Pad #3 (/dev/input/event8) supports 16 force feedback effects.
RetroArch [INFO] :: Found joypad driver: "udev".
RetroArch [INFO] :: Using font rendering backend: freetype.
RetroArch [INFO] :: Suspending screensaver (X11).
RetroArch [WARN] :: Could not suspend screen saver.
RetroArch [INFO] :: [CPUID]: Vendor: GenuineIntel
RetroArch [INFO] :: [CPUID]: Features: MMX MMXEXT SSE SSE2 SSE3 SSSE3 SSE4 SSE4.2 AES AVX AVX2
RetroArch [INFO] :: [PulseAudio]: Requested 24576 bytes buffer, got 18432.
RetroArch [INFO] :: [CPUID]: Vendor: GenuineIntel
RetroArch [INFO] :: [CPUID]: Features: MMX MMXEXT SSE SSE2 SSE3 SSSE3 SSE4 SSE4.2 AES AVX AVX2
RetroArch [INFO] :: Using font rendering backend: freetype.
RetroArch [INFO] :: Using font rendering backend: freetype.
RetroArch [WARN] :: Input device ID 5 is unknown to this libretro implementation. Using RETRO_DEVICE_JOYPAD.
RetroArch [INFO] :: Disconnecting device from port 4.
RetroArch [INFO] :: SRAM will not be saved.
RetroArch [INFO] :: [GL]: VSync => on
RetroArch [INFO] :: [GLX]: glXSwapInterval(1)
RetroArch [INFO] :: [GL]: VSync => on
RetroArch [INFO] :: [GLX]: glXSwapInterval(1)
RetroArch [INFO] :: [PulseAudio]: Pausing.
RetroArch [INFO] :: [Data Thread]: Initializing data thread.
RetroArch [INFO] :: [Data Thread]: Starting data thread.
RetroArch [INFO] :: [GL]: VSync => on
RetroArch [INFO] :: [GLX]: glXSwapInterval(1)
RetroArch [INFO] :: [PulseAudio]: Unpausing.
RetroArch [INFO] :: Saving config at path: "/home/kevlar/.config/retroarch/retroarch.cfg"
RetroArch [INFO] :: [X11]: Xinerama version: 1.1.
RetroArch [INFO] :: [X11]: Xinerama screens: 1.
RetroArch [INFO] :: [GLX]: Saved monitor #0.
RetroArch [INFO] :: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames.
RetroArch [INFO] :: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames.



Completely confirmed. As t3rminus works worked fine on 1.0.0.3 using same HW/OS nothing changed before updating, reverted back to 1.0.0.3 and it still works fine. Please help.

First of all, what joystick are you using guys? Wireless or wired?

Second, what’s the ID from the receiver (wireless) or joystick (wired)? Use the lsusb command to know. Mine is:

Bus 008 Device 012: ID 045e:0719 Microsoft Corp. Xbox 360 Wireless Adapter

Edit: Ok, I saw the t3rminus log carefully, it’s the same receiver I have here.

Third, you are using this xboxdrv PPA, right?

Fourth, you enabled z-axis in the triggers (LT and RT), right? I just enabled here, and everything is working fine. When it was disabled, weird things were happening here.


By default, triggers are not enabled as z-axis, but as buttons. To change, edit /etc/default/xboxdrv and change TRIGGERS_AS_BUTTONS to false.

Five, are you configuring manually the joypad? Or using the auto config from retroarch? Try use the auto config, I updated the wireless version. When I was using the manual config here, RA stopped respond like you said, so I:

sudo service xboxdrv stop

and removed the wireless receiver from my laptop, and the battery from the joystick. After, I started the service (sudo service xboxdrv start), and plugged things here, and no longer I can reproduce this issue (using Xubuntu 14.04)

This xbox driver is not the best thing exists, I still don’t have sure if it’s retroarch fault.

Alright. We’ll look into it. It’s going to take awhile to track down the offending commit…

[QUOTE=sergio-br2;25035]First of all, what joystick are you using guys? Wireless or wired?

Second, what’s the ID from the receiver (wireless) or joystick (wired)? Use the lsusb command to know. Mine is:

Bus 008 Device 012: ID 045e:0719 Microsoft Corp. Xbox 360 Wireless Adapter

Third, you are using this xboxdrv PPA, right?

Fourth, you enabled z-axis in the triggers (LT and RT), right? I just enabled here, and everything is working fine. When it was disabled, weird things were happening here.


By default, triggers are not enabled as z-axis, but as buttons. To change, edit /etc/default/xboxdrv and change TRIGGERS_AS_BUTTONS to false.

Five, are you configuring manually the joypad? Or using the auto config from retroarch? Try use the auto config, I updated the wireless version. When I was using the manual config here, RA stopped respond like you said, so I:

sudo service xboxdrv stop

and removed the wireless receiver from my laptop, and the battery from the joystick. After, I started the service (sudo service xboxdrv start), and plugged things here, and no longer I can reproduce this issue (using Xubuntu 14.04)

This xbox driver is not the best thing exists, I still don’t have sure if it’s retroarch fault.[/QUOTE]

I’m using a XBox ONE Controller, which is wired since there is no wireless support for it yet. 15.04 has kernel 3.19 which natively supports the xbox one controller as a fully functioning input device. All Axis and buttons are fully represented and functional (Including the triggers as the Z axes, tested using jtest-gtk). I’m not using xboxdrv as it is not necessary. As t3rminus said, the controller works fine in other games such as every steam game that supports an XBox ONE / XBox 360 controller. This only doesn’t work in retroarch 1.2, nothing else is affected. It only happens when the program is first started or when a rom is loaded or unloaded. so when the program essentially reboots into the menu or to a core.@hunterk thanks for letting us know you’re looking into it. I hope to see a solution soon. I really love retroarch and I now play all my retro games on it. Thanks a lot.

Again, yep. Same as TyanColte.

eOS has kernel 3.19, which has native XBox 360 Controller drivers, with triggers as axes. I spent an hour or so calibrating the deadzones, as I thought the issue might have to do with my older, not-quite-always-centered analog sticks somehow overloading the input system with input events (thereby explaining why fiddling with the sticks and re-centering them seems to solve the issue somewhat).

I am hesitant about installing xboxdrv from that PPA, which seems to cause more compatibility issues in other games, however for the purposes of testing, I will install it and report back with the results.

Edit: I’m using wireless XBox 360 controllers (so… not exactly the same as TyanCole).

And to clarify, I’m definitely using the manual config. The auto-config has this asinine idea that A should be “back/cancel”, and B should be “accept/ok”. I understand the RetroPad system, and the thought process behind using common button positions (as opposed to labels), but I respectfully disagree with the developers on that one, and prefer to manually configure my button layout.

I won’t be installing the xboxdrv drivers because I believe it should work just like everything else works with it and I don’t want to screw up something that otherwise works perfectly fine. T3rminus: I respect your bravery. Lol.

And I respect your conviction, but at this stage, I’d like to see this issue fixed, and am willing to help the devs work this out, no matter what it takes!

As for using ubuntu-xboxdrv: same result. Input frequently becomes unresponsive on the menus, and analog sticks do not respond in-game at all (tested with Super Mario 64, Mupen64Plus-2.0-rc). Yes, I have the analog sticks bound, and the controller is a RetroPad w/ Analog.

An observation that may be relevant: When mapping the axes, I notice it’s always “-0, -1, -2” (even when I would presume it should be positive). I initially assumed the “-” was just to indicate an axis, as opposed to a numbered button, but it might just not be recognizing the axis values properly?

Don’t get me wrong t3rminus I want to help the devs out also I would like to see this fixed as well. However, I’m a computer technician myself and I stand firm to the opinion that if it ain’t broke don’t fix it.

AFAIK The support on Ubuntu for the various Xbox controllers ain’t broke. If there’s anything else the devs need from me, logs, stdout paste, config changes for testing etc. I will be happy to provide that.

I have a very similar issue, but with a DualShock 3. I’m even on the latest 4.2 RC kernel. Can someone else confirm?

For 360 controllers, I’m trying to track down the commit that really wrecked everything. It’s definitely broken now but seems to be working in commits about 20 days ago, so I need to spend some time bisecting to find where it actually broke.

There may be another issue in there somewhere (or else my 360 pad may be acting weird…) but the big one–i.e., the one that locks out other control and then acts crazy if you unplug/replug–is pretty recent.

You have to press the PS button, to get it work.

Do you have the latest nightly version? I updated it in the testing. I think it was fixed yesterday.

Yeah, it’s true, kernel from 15.04 is newer, should work without this xboxdrv. I didn’t have good experience without this xboxdrv in kernel 3.13/3.14. From the github page:

This driver is only of interest if the xpad kernel driver doesn't work for you or if you want more configurabity. If the xpad kernel driver works for you there is no need to try this driver.

I’m using the testing PPA, and after updating this morning, I can confirm things are working now, and I cannot reproduce the input-freezing issue! It’s possible having Analog +X and Analog -X both mapped to -X was the problem, as I can see this confusing the crap out of the input interpreter.

I do have the xboxdrv driver installed. I will have to test this evening to see if the issue persists using the xpad kernel driver.

Note though, is this update seems to have introduced a regression: the Core Remap feature/files are no longer working (at all), even though I get “Core Remap Loaded” on screen, the buttons remain locked to the RetroPad defaults.

I purged xboxdrv and ubuntu-xboxdrv, and I’m trying to use the kernel driver (3.14). It works too! But it’s blinking and blinking that light. I tried this solution (comment #32), it works more or less, the pad light continues blink some times, like it’s disconnected.

AFAIK this is the case with many XBox 360 Controller drivers. The Android system my new HTPC replaced had the same issue. It doesn’t bug me at all. You can tell it’s connected by a change in the blinking pattern of the light (it skips a beat, or blinks slower).