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.
@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:
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)
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.