Ryochan7 / DS4Windows

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

[Conflict] DS4Windows conflicts with Geforce Experience Ingame Overlay (Exclusive Mode) #515

Closed CaptainXLAB closed 5 years ago

CaptainXLAB commented 5 years ago

Using Windows 7 Ultimate SP1 x64

I finally came to conclude what keeps conflicting with exclusive mode, and it's GeForce Experience 's "ingame overlay" which I use for Shadowplay (recording gameplay, etc)

The problem is, that if I turn off ingame overlay, let DS4windows start in exclusive mode, and enable ingame overlay again, IT KEEPS FREEZING EVERYTHING (the entire system, mouse movement, live gameplay, right click menus, random and everything).

If I open a video, it freezes for 10 seconds and then starts. If I launch a game, it freezes for 10 seconds and then starts. And it's way too annoying and random. I have no idea what the ----(swearword)---- GFE has to do with game controllers, Nvidia started retarding-out on GFE - forcing updates and unnecessary crap on it and such, a LONG time ago, but I didn't expect this.

I can't give up either. I've been using Shadowplay ever since it existed, and DS4Windows is an amazing tool for the perfect controller.

Here's the thread I started on geforce forums: https://forums.geforce.com/default/topic/1087763/geforce-experience/-gfe-everything-freezes-while-doing-specific-things-with-ingame-overlay-enabled-/?offset=2#5936722

I love the controller and DS4windows and Shadowplay all so much, there must be a way they can work things out (in a dramatic voice tone) T_T

Please find a fix for this ;-;

EDIT: I did think that microphone/speakers on the controller could be causing this but I disabled them both in sound manager and the same issue still persists.

mika-n commented 5 years ago

Jep. It is known that GeforceExperience in-game overlay crap conflicts with a virtual controller (if the original controller device is hidden using exclusive mode).

To workaround this is to make sure that DS4Windows app is started and it has acquired DS4 exclusive lock BEFORE you launch GFE application (not just disable overlays but even before GFE service starts).

If that trick still doesn't work then maybe GFE wouldn't go wild if the original controller is hidden via HidGuardian tool instead of via DS4Win built-in exclusive lock (Hide DS4 Controller option). But as of now you are on your own with HidGuardian because the current version of DS4Win doesn't support it out of the box. You should use other tools to whitelist DS4Win application with HidGuardian.

Anyway. The problem seems to be in GFE application. Maybe it tries to open a controller HID handler even when DS4Win has acquired an exclusive lock to the HID controller handler. Freezing behaviour sounds like an issue where GFE app is trying to open a connection to a controller and it just sits there waiting for a timeout instead of ignoring a controller it cannot open.

CaptainXLAB commented 5 years ago

I have no idea what HidGuardian is. Just checked a website and it says "Windows 10 only!" but I'm on Windows 7.

To make sure that GFE is off before DS4Windows gets exclusive mode, I used this as a batch file to kill everything nvidia-related:

[spoiler] @echo off taskkill /f /im nvcontainer.exe taskkill /f /im nvsphelper64.exe taskkill /f /im "NVIDIA Share.exe" taskkill /f /im "NVDisplay.Container.exe" taskkill /f /im "nvidia web helper.exe" taskkill /f /im nvtelemetrycontainer.exe [/spoiler]

but the same problem is still there.

GFE has this streaming thing but I never enabled it. I just finished DDU/reinstall drivers and this time I removed all SHIELD Wireless Controller stuff physically from the folder.

I haven't started GFE yet (I'll have to login, etc). DS4Windows still works perfectly.

I think that the "Even before GFE Starts" solution was what I accidentally did the first time. I NEVER shut down my PC, it was somehow working before with nvidia shadowplay and ds4windows flawlessly.

I'm trying to see if changing xinput ports from settings can make any difference to this...

EDIT: Nope. No help. I let DS4Windows get exclusive mode first. Started GFE for the first time after reinstalling it clean. And it still freezes stuff randomly.

CaptainXLAB commented 5 years ago

A DS4Windows update added "NVIDIA INGAME" to the error that gets created in the log when exclusive mode fails but that's it...

The interesting thing though, is that I can still see "Wireless Controller" along with XBOX 360 controller in devices and printers area, even when I have exclusive mode working properly. And it's probable that retarded nvidia ingame overlay tries to do something with that controller for some reason, whatever it is.

There must be a way to just ... block? or hide that controller? it's hardware IDs? or to hide it completely and only let DS4Windows access it?

I tried HidGuardian but at first it blocked the entire controller. On reinstalling, it did absolutely nothing.

I went to "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HidGuardian\Parameters"

And saw the hardware IDs of "Wireless Controller" already listed there but it did nothing. At one point I think windows generated different HIDs because those which would've been there were blocked?

Besides, there's no proper GUI for it so I couldn't even tell if it was working or not.

The same annoying problem still exists. No matter what I do, ingame overlay freezes everything the same way it was doing before. At times now, it takes even longer and nothing responds until I just pull the controller out so there's that.

Nvidia is a huge disappointment. Shadowplay was free for all nvidia users who had GTX Cards anyway, they could just stop all the bulls**t and let it work standalone without GFE, like all other recording softwares, and actually listen to what people want.

In the meantime I'll try to work around this by keeping PS4 controller disconnected when it's not in use and ingame overlay is (for desktop vids)

When I want to start playing a game, I'll:

  1. Disable overlay,

  2. plug controller in,

  3. enable overlay,

  4. cringe my heart out as it freezes,

  5. launch game and start cringing again as the game freezes at start

  6. Play the game (freezes only for 15 secs on startup, 15 secs on alt+tab or exit)

  7. Do nothing else than playing the game while DS4Windows + Exclusive Mode + Ingame Overlay are going on (won't alt+tab out of it and try to say watch a recorded video)

If I want to alt+tab out and do something else, I'll:

  1. plug the controller out,
  2. do whatever I want,

when I want to get back to the game, again:

  1. turn off ingame overlay,

  2. plugin controller,

  3. start w exclusive mode,

  4. re-enable ingame overlay,

  5. Again, cringe my heart out as everything keeps freezing unnecessarily and imagine doing horrible things to those horrible people who made geforce experience this awful over the last 2 years.

  6. back to the game.

If you people who made all this software, actually manage to fix this problem, it'll be amazing.

Ryochan7 commented 5 years ago

Wireless Controller would still be visible in the Devices and Printers window even when exclusive mode is active. You have to open the "Game controller settings" window and check the list to see if the device is actually hidden from applications.

I don't have the GeForce Experience installed so I would have to rely on reports from other people to find out if the software would cause conflict. I have a fairly old computer build (circa late 2012) so I try to reduce any bloat that I can. For screen and game recordings, I use OBS Studio and that has worked well enough and I don't need access to recording functionality all the time I game. I guess I should try the latest GeForce Experience sometime and check out what I have been missing.

As for the HidGuardian option, it was a thing until I opted to stop supporting it. You would have to use something like WhiteKnight in order to still use HidGuardian 1.0 series. If you don't have DS4Windows whitelisted then any DS4 controller defined in AffectedDevices would be hidden from DS4Windows.

https://autohotkey.com/boards/viewtopic.php?p=164497

Ryochan7 commented 5 years ago

I have installed the GeForce Experience software on a real Windows 7 install. Unfortunately, it looks like I will not be able to test the scenario. The In-Game Overlay feature is not supported for my graphics card since it is one generation too old apparently. I have a GeForce GTX 550 Ti in my gaming PC but the overlay requires a GeForce GTX 600 series card or better.

The only time that I have experienced freezing while using DS4Windows that I can reproduce is with Broforce only on Windows 7. With exclusive mode enabled, Broforce will lock up my PC for over 15 seconds while trying to launch. The game and controller work fine after the initial wait. The problem also happens even if no virtual Xbox 360 controller is connected at the time. The only way to avoid the freeze is to have the DS4 opened in shared mode. Funny enough, I do not experience this kind of problem with Broforce in Windows 10.

Maybe you can try disabling the "Hide DS4 Controller" option in DS4Windows and see if the problem still occurs. Make sure to either disconnect and reconnect your controllers or just restart DS4Windows to make sure that shared mode will be used.

CaptainXLAB commented 5 years ago

As for your test, YES, without exclusive mode, NO FREEZES OR HANGS at all, even with GFE enabled. And "Wireless Controller" still shows up in Devices and Printers but doesn't show up in "Game controller settings", there, only xbox controller shows up which is normal. (I saw some tutorial online but that was Win10 and on Win10, it instead said "Dualshock 4 Controller" or something)

Infact yesterday I tested if GTA 5 works fine without exclusive mode, and even with both controllers enabled, GTA 5 took Xinput only, and ignored the native PS4 controller. But for simple games like DmC Devil May Cry, dual input was annoying.

I thought I'll have to return my PS4 controller... but IT WORKED.... WHITE KNIGHT WORKED :smile:

Thank you so much man..... you're awesome.

Just finished training mode in DmC Devil May Cry and the controller works perfectly. No more freezing with ingame overlay on.

How did I use white knight:

  1. Extract, launch. (uninstall hidguardian that was already there)
  2. Install both HidCerebus and HidGuardian, start HidCerebus Service
  3. Go to HidCerebus Config Page
  4. Sony Interactive Entertainment Wireless Controller [HID\VID_054C&PID_09CC&MI_03]
  5. Unplug and Plugin my controller again
  6. Click "Pick App" in WhiteKnight, click "DS4Windows" window.
  7. Launch DmC Devil May Cry (or any game), Alt+Enter for windowed mode, "Pick App", Click game window

Works so far, all good.

Can't help but wonder, on the config page of HidCerebus, it says "Currently Whitelisted Process IDs", which are basically PIDs which change each time any process is launched, even if it's the same executable.

I first thought PIDs change so I'll have to "Pick App" everytime I launch a game again but DmC seems to work fine so far (and DmC is my go-to game whenever I want to test something)

But will I have to repeat some of those steps above after I restart my system? (tbh even if I have to, I won't care because atleast everything works now :smile: )

mika-n commented 5 years ago

I first thought PIDs change so I'll have to "Pick App" everytime I launch a game again but DmC seems to work fine so far (and DmC is my go-to game whenever I want to test something)

WhiteKnight-Auto-WhiteListner tool keeps track of those PIDs and updates those settings whenever it detects that a white listed app has a new PID. https://autohotkey.com/boards/viewtopic.php?t=34890

Ryochan7 commented 5 years ago

Thank you for confirming that the exclusive mode problem exists in other applications. Funny enough, Broforce did not used to have the freezing problem until about a couple of months ago. I have tested versions of DS4Windows that were safe previously and the same problem happens with those versions now. Something must have changed with the game's device enumeration routine that messed things up.

CaptainXLAB commented 5 years ago

Quick update, skype desktop app causes instant issues and disconnection of the ps4 controller when HidGuardian and AutoWhitelister.exe are working, for whatever reason. The problem is fixed by closing skype and plugging the controller into a different USB Port.

Ryochan7 commented 5 years ago

I finally tried the Skype Desktop app and I did not encounter issues under normal circumstances. I don't have HidGuardian utilities on my Windows 7 installation and I am not worried about installing them at this point.