Ryochan7 / DS4Windows

Like those other ds4tools, but sexier
https://ryochan7.github.io/ds4windows-site/
GNU General Public License v3.0
6.96k stars 807 forks source link

[Bug] Left Analog Constantly Drifting Left (after HIDGuardian removed) #912

Closed Darthagnon closed 4 years ago

Darthagnon commented 4 years ago

I installed HIDGuardian to try and get XOutput (another program) working properly. However, DS4Windows detected it, and applied settings. HIDGuardian didn't work for my purposes, so I removed it (using the uninstaller script). Now, DS4 Windows has my left analog stick constantly drifting south-west. I've tried deleting everything DS4Windows-related (except for my profiles), but that's done nothing.

Is it permanently broken, or is there something I can do to fix this?

Darthagnon commented 4 years ago

A solution to this issue was hinted at in #888

Darthagnon commented 4 years ago

This is weird - DS4Windows is somehow confusing the Right Analog with the Left Analog. e.g. The left analogue is drifting constantly south-west. If I hold the right analogue to point north-east (180deg from the drift direction of the left analog), the left analog stops drifting. Observed both with physical controls, and similarly (though not identically) when motion controls were mapped the right analog.

EDIT: The analogs are mapped correctly in the profile; just double checked in case I was being an idiot. I also tested with fresh installs (no profiles) of v1.7.23 and v1.7.22. Bug present with both of them. The controller works perfectly for Mouse/Keyboard emulation to control Windows (thus I'm certain it's not hardware problems). Pls help

Darthagnon commented 4 years ago

... and it's working again. The old magical "Switch it off and switch it on again" works wonders. Dunno what changed. I tried reinstalling and uninstalling HIDGuardian, too, before restarting. Maybe that made sure that it had been cleanly uninstalled?

mika-n commented 4 years ago

See https://github.com/Ryochan7/DS4Windows/issues/874#issuecomment-560170723 post. Maybe Steam client is screwing up things.

Darthagnon commented 4 years ago

Wasn't running Steam (AC Origins, so from UPlay, but it's also a pirate copy, so no stores or anything). I wonder if it was an unclean HIDGuardian removal or maybe the game natively supports DS4 and was glitching? Seems to be fixed, now, though.

QmwJlHuSg9pa commented 4 years ago

I've been having this issue since I installed (and uninstalled) HIDGuardian (Test Installer). I was following this guide [1]; at the time I didn't realise it was an optional set-up procedure.

The Steam fix didn't work for me, unfortunately. In some games, my joystick now drifts to the right, though it only misbehaves under some circumstances in-game. Other games work fine with DS4Windows running. All game installations tested were non-Steam.

[1] https://github.com/Ryochan7/DS4Windows/wiki/DS4Windows-and-HIDGuardian-Install-and-Setup-Guide

mika-n commented 4 years ago

Drifting LS/RS stick is usually because of "too small" deadzone setting. Please see the following wiki page. https://github.com/Ryochan7/DS4Windows/wiki/Settings#deadzone

The fact is that LS/RS (and gyro) are hardly ever completely stable in hardware level and there are gamepad HW/wearout/teardown/dust/spring specific small differences. Some games have a built-in deadzone you cannot modify and those may work just fine with zero deadzone in DS4Windows profile settings. However, other games have smaller or non-existent built-in deadzone, so the drift may be more visible. Deadzone setting in a profile solves this issue.

If the drift is still there when you tweak the deadzone setting then please share the profile file here as an attachment In theory it is possible that there is some bug in DS4Windows when all sort of config options are mixed (deadzone, anti-deadzone, curve output, max zone, etc etc etc).

Ryochan7 commented 4 years ago

I guess according to this toxic post, HidGuardian should never have been used. The problem was likely due to a failed driver install with devcon.exe but the UpperFilters registry value (classfilter) was edited successfully.

https://forums.vigem.org/post/1777

Anyway, removing HidGuardian should have nothing to do with the stick values obtained. The DS4 analog sticks are very likely not going to return to absolute center so a small dead zone needs to be set on LS and RS to compensate; a value around 0.08 - 0.10 in the profile would likely work fine. Also, having an anti-dead zone set in a profile can exaggerate the issue if no dead zone is set.

Ryochan7 commented 4 years ago

Can you share the profile that you are using?

Ryochan7 commented 4 years ago

Got the HidGuardian repo and pre-built binaries backed up just in case he nukes everything.

QmwJlHuSg9pa commented 4 years ago

After testing, I can say that my issue is certainly not specific to DS4Windows; it also occurs when using it as a regular DirectInput device. Identical results with two different DS4v2 controllers. Also, I may be mistaken in blaming HIDGuardian? I'm now thinking that the issue may originate from the game code itself, or some sort of compatibility issue with modern Windows. For context: the game I'm primarily having trouble with is SimCopter (1996); the nature of the issue varies, depending on which flight model the game is set to (and affects either turning or collective), but never when controlling the player avatar directly. It's weirdly specific.

Ryusennin commented 4 years ago

Try your controller on a PS4 if you can. Unfortunately, many DS4 v2 gamepads are victims of stick drifting (personal experience: 3 defective controllers in 6 months, bought new on Amazon).