Monogame: GamePad issues after recent windows 10 updates

Created on 21 Mar 2018  路  10Comments  路  Source: MonoGame/MonoGame

Overview:

Took a break from gameDev with a work trip a few weeks back and found that none of my home computers (all windows 10) and my 3 alpha testers (also windows 10) can use a GamePad.

Tried it both on 3.6 and 3.7.

The gamePad ".isConnected" is true or false depending on if the controller is plugged in or not for most of the devices, except the xbox one controllers no longer light up or say connected. So I can confirm that this isnt previously posted issues regarding false positives. For some controllers, even emulators are able to get them.

On all listed devices, however, even when the gamepad class sees them as connected, there is no input being read. I made a small input manager to check all the input and log them. Nothing from gamepads. Even doing direct GamePad state checks on all possible buttons during the update loop, I've got nothing.

Checking my reliability history, seems that there is a new Xbox Controller driver install when the controller is plugged into that system for the first time. Started showing up on 3/13.

I last worked 2/28 for me, but I am not sure when it stopped working exactly. Or if it has to do with a specific windows update. Some places are showing that Creators Update for Windows 10 is a problem. I tried getting the old drivers back, which has helped some Unity games, but still has issues with Monogame projects. All devices now show up as HID devices, rather than usb devices in my device manager.

I know we can't control Windows Updates, but this isn't the first time a windows 10 update stopped dev on all my systems input-wise. This must be the third time in the last two or three years where ALL of my dev machines and testers are knocked offline.

I was able to replicate this issue on older versions of MonoGame as well. Specifically in the games Axiom Verge and Bastion (I have yet to try newer games like Pyre). Unity games still seem to work, but I only tried a few newer ones: Hand of Fate 2 and Enter the Gungeon.

Peripherals:

  • Xbox One Controller
  • Xbox One Elite Controller
  • iBuffalo Classic USB Gamepad
  • Steam Controller
  • PS4, Dual Shock 4
  • 8bitdo SF30, Wireless/usb3.0 snes controller

What version of MonoGame does the bug occur on:

  • MonoGame 3.6
  • MonoGame 3.7 (Development)

What operating system are you using:

  • Windows 10 (post Creator's Update)
  • All machines have updated at least since March 7th

What MonoGame platform are you using:

  • DesktopGL
  • .Net 4.7

EDIT/UPDATE :

  • After restarting my machine with the old drivers in place, the xbox button lights up on plugin and is connected again, so all controllers listed are "connected". But none of them can read input.
  • Edit 2 - Xbox Controllers now work with most AAA games (Shadows of War, Batman Arkham) and unity (Battle Chef Brigade, Hand of Fate 2) games. Still not working with MonoGame based games like: Axiom Verge , Owlboy, Stardew Valley)
Help Wanted

Most helpful comment

It would be helpful to run this program and post the device ID of each non-working gamepad: http://generalarcade.com/gamepadtool/
and also to try to configure and save those configuration to test if it's a mapping issue.

If a Win10 update made them HID devices, the IDs have probably been changed to HID and therefore the SDL mapping are not applied.

We have a couple Win 10 Creator Update PC, I'll test that later. But so far we have no report of this issue.

All 10 comments

@cra0zy - Any ideas of what to test?

It would be helpful to run this program and post the device ID of each non-working gamepad: http://generalarcade.com/gamepadtool/
and also to try to configure and save those configuration to test if it's a mapping issue.

If a Win10 update made them HID devices, the IDs have probably been changed to HID and therefore the SDL mapping are not applied.

We have a couple Win 10 Creator Update PC, I'll test that later. But so far we have no report of this issue.

Just tested an xbox one wireless controller without issues against a desktopgl 3.7.0.1464-develop build.
Edit: Latest version doesn't seem to run into issues either.

My OS version is: Windows 10 Insider Preview 17127.1 (rs4_release)

I've tested on Windows 10 build 16299 (Fall Creators Update, the latest public one) and couldn't find any issue with gamepads.

This does sound like its not a bug on our end.

So after taking more time to work with it, I think the issue was found.

None of the xinput devices including xbox one controllers seem to work on usb 3.0 ports, after the big update.

I had to:

  • disable to the xbox/game mode dvr stuff, as well as disable the registry
  • Uninstall the controller, plug it back in, uninstall a second time until it was considered a generic device (not a windows 10 gamepad that has the icon and the remapping tests).
  • Plug it into a usb 2.0 port.

Currently this allows the Xbox one elite, Buffalo, and 8bitdo to work. The ps4 and steam controller are recognized as plugged in by monogame/xna games, but still doesn't give input to the system.

After following these steps, one tester machine with only usb 2.0 has both xb360 and ps4 controllers working. But ps4 is still not working on my work machine nor my laptop (which only has 3.0 ports), though for some reason it works with the xb1 controller.

Searching gamepads...
Found 2 gamepad(s):
"XInput Controller", 030000005e040000ff02000000007801 (mapping available)
"iBuffalo SNES Controller", 03000000830500006020000000000000 (mapping available)
Environment variable "SDL_GAMECONTROLLERCONFIG" is not defined

this is the return with all 5 controls plugged in. The XInput is the xbox one elite. The iBuffalo is the snes usb controller in the usb 3.0 slot (not accepting input into the app in 3.0, only in a 2.0 slot).

The SteamController is not recognized at all here, even though its found on windows, 2.0 or 3.0, doesnt matter. I get a No gamepads found with just the steam controller plugged in on either slot. It's worth noting that the system sees the steam controller as a Keyboard, though it has always worked under those settings until recently.

Searching gamepads...
No gamepads found
Environment variable "SDL_GAMECONTROLLERCONFIG" is not defined

Same with the ps4 controller. It is seen as a generic 'controller' by windows. But is not seen in game at all and doesn't take input.

@Verser Does the Joystick API work for those controllers?

Closing as this does sound like its not on our end.

Just bumped into this issue with ID 030000005e040000ff02000000007801.

This ID is absent from the upstream database, here's the full mapping string: 030000005e040000ff02000000007801,Controller (Xbox One For Windows) - Wired,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,

If anyone has the time to, it would be cool to get this new entry merged into upstream, and update the submodule commit on the MG repo'. (I'm unfortunately overwhelmed)

Was this page helpful?
0 / 5 - 0 ratings