protonscr

Big Picture doesn't like ASUS Gamepad

steamclosed reviewed
ValveSoftware/steam-for-linux#3744 · opened 2015-03-06 by adolson · updated 2016-02-24 · 5 comments · github
Aadolson 2015-03-06 github

I have an ASUS Gamepad for Nexus Player, which is a Bluetooth gamepad. I got it registered on Debian Jessie, but the default controls are totally messed up - left stick moves the mouse cursor around, a couple buttons send keyboard events instead of joystick events... So I used xboxdrv to remap the controls and make it function the same as an Xbox 360 wired controller. This is, frankly, a hassle but the pad works great in almost all of the games with 360 pad support.

However, in Steam Big Picture, every few seconds, it acts like a ghost is pushing the d-pad to the left. I have checked to make sure it wasn't another input device messing with me, but it wasn't. This behavior stops if I power off the gamepad, or if I don't use xboxdrv (but then the pad is unusable in games). And xboxdrv's debug output is NOT showing these ghost events being sent, and neither is directly catting /dev/input/js* or /dev/input/event*... Furthermore, if I can manage to launch a game, say, The Talos Principle, it behaves perfectly fine! No ghost gamepad events... It just works. But as soon as I get back into Steam, the ghost is back. I am baffled. Is there something I can try or can someone look into it?

I don't know anything about driver writing, but if I did, I'd whip this pad (and others) into shape so they act like how games expect them to. It is plainly not useful without remapping via xboxdrv. But when it's working, it's probably the best pad I've ever used, and likely will remain so until I finally get a Steam Controller.

Nnlowe 2015-05-07 github

Seems to be a driver thing. If you install the xboxdrv package you can use a different config to get it working, but I'd also love to see it working in linux / steam proper!

Aadolson 2015-05-07 github

@techwiz24 thanks... you linked me to my own reddit post and I don't think you really read my issue here thoroughly.

That being said, I have two Nexus Gamepads now, and I have them both working automatically and figured out how to avoid the ghost events. It's a majorly hacky solution, but it's worth it because I love these gamepads. Basically, I had to set up udev rules to run scripts which do a variety of things, depending on if the pad is being turned on or off, and whether the event is received from js* or event* , and whether from the controller device itself or from the xboxdrv virtual device. Essentially it has to rename the event* device so that Steam doesn't pick it up (I use nexus* ), but so that it can still be passed to xboxdrv to process; then rename the xboxdrv js* device to joystick# (where # is the lowest-available number); and when a pad is powered off, a script is run to remove the joystick* and nexus* and kill xboxdrv. Finally, every time a change to js* is made, it then removes any js* files and then symlinks joystick* to js*.

The solution is hacky and convoluted, but it works perfectly now. It's needed because some games will not recognize a gamepad that isn't js0, but js0 is always taken by the first Nexus pad to be plugged in and is useless. xboxdrv for that pad winds up as js1 (usually). When I only used one pad, a simple udev rule to rename it to js0 (overwriting the original) was fine, but things get complicated with more gamepads. Powering off will trigger a removal of the js* device originally assigned, which could have been already removed and a symlink put in its place... So that's why I use joystick* and symlink to js*.

I don't doubt that this is hard to visualize... I think I will write up a post with my scripts and everything, and maybe post it on GamingOnLinux in case others want to use this gamepad. This is about the only thing I can do, because I don't have time to try learning driver development, and the pad is of limited use otherwise.

Edit: I forgot a portion in there... I symlink sjs* to the joystick* devices, and symlink js* to the sjs* devices... See my next post for the link to the actual scripts and rules.

Nnlowe 2015-05-07 github

@adolson Ah, I did not see that you were also the author of the reddit post (it's really late my time), sorry for the confusion! Thank you for pointing that out, I look forward to reading your follow-up post!

Aadolson 2015-05-07 github

Here are my rules and scripts: https://github.com/adolson/NexusGamepad

On Wed, May 6, 2015 at 11:10 PM, Nathan Lowe [email protected]
wrote:

@adolson https://github.com/adolson Ah, I did not see that you were
also the author of the reddit post (it's really late my time). Thank you
for pointing that out, I look forward to reading your follow-up post!


Reply to this email directly or view it on GitHub
https://github.com/ValveSoftware/steam-for-linux/issues/3744#issuecomment-99696537
.

Aadolson 2016-02-24 github

I don't think this need to be open anymore. I was able to use the controller with xboxdrv, and now I just use a Steam Controller.