Skip to content

Xb2XInput v1.2

Compare
Choose a tag to compare
@emoose emoose released this 14 Dec 14:26
· 34 commits to master since this release

Read the Install/Usage sections of the README to learn how to set it all up, really it only takes a minute or two. (ignore anything about XOutput1_1 DLL, thats an unneeded DLL from an earlier version)

(If you're running Windows 7 you may need to install an update for SHA-2 driver support & the Xbox 360 controller drivers, instructions for installing these are available in the ViGEm documentation: https://docs.vigem.org/#!vigem-bus-driver-installation.md)

A list of supported controllers can be found at the top of XboxController.cpp

If you have a controller that isn't on this list, or a controller that is on the list but won't work, feel free to make an issue about it on the issue tracker (please include the hardware ID of the controller though - see "Support" section in the readme)

Changes

  • Switched from using the ScpVBus driver to ViGEmBus instead, as ScpVBus is no longer under development, and it seems Win10 won't recognise that driver as signed any more.

If you setup an earlier XB2X release and don't use anything like ScpToolkit, you can run the "uninstall drivers.bat" (as admin!) to remove the ScpVBus driver from your system.

  • Will now try using interrupt transfers instead of control transfers if possible, falling back to control transfers if interrupts aren't supported or cause an error, which should help improve compatibility with controllers a lot.

This change was brought on because the 2nd Madcatz controller I've been waiting to receive finally showed up today, and I excitedly hooked it up to my machine to check whether multiple controllers work, only to find it not seeming to give any response once connected (strangely only returning the state of the gamepad when it was first plugged in, never updating it again past that)
Originally I thought it was broken and was about to contact the seller, but I figured I'd give it a quick test with the TigerGame/Mayflash driver first, and to my surprise with that it actually worked fine, so it must have been something wrong with my code...

First I tried a bunch of things like initing the controller by sending GET_DESCRIPTOR/GET_CAPABILITIES/etc requests, but sadly none of that had any effect.
I turned back to the TigerGame driver, and some debugging showed that it used interrupts rather than control transfers to receive info from the controller, and so after a while of checking against libusb docs and trying to fix XB2X up to work like that I eventually got it to work :D.

Interrupts are a little fragile though, and I'm not sure if all controllers will support them (xboxdevwiki seems to imply they should, but who knows), so I've set XB2X up so it'll fallback to using control transfers if interrupts aren't available or cause an error.

Hopefully now XB2X will be a lot more compatible with any controllers that get thrown at it, and with the switch to ViGEm should now work completely fine on pretty much any system!