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

Can changing the BT polling rate fix random lag spikes? #681

Closed DrConflict closed 4 years ago

DrConflict commented 5 years ago

So I got a V2 controller yesterday and an Asus BT-400 dongle. The latency is much better but it still acts up a little sometimes. It's pretty rare at this point though. I'm wondering if messing with the the BT polling rate can fix or optimize things a little?

Annotation 2019-05-02 010734

mika-n commented 5 years ago

Changing the BT polling rate might have some effect but usually the default value is just fine. Like all "good" car dealers say "your mileague may vary".

Sometimes WIFI can cause noise in BT channels. Try test running the BT controller while WIFI is disabled in your laptop/PC.

Is the controller latency fine over usb connection?

MatJab94 commented 5 years ago

I seem to have a similar problem. I've used DS4Windows for a long time without any issues, but recently (after a pretty long break from using it) after connecting via Bluetooth it lag-spikes just like on the screenshot included by DrConflict. For a couple seconds it works completely fine with regular couple ms of latency, and then for another couple seconds it spikes into ~80ms and becomes completely unusable. And then it just repeats over and over again. It works fine with USB, but the gamepad also works just fine when it's connected via Bluetooth, but without DS4Windows active, so it looks like it's not faulty hardware/signal interference.

spookyrecharge commented 5 years ago

BT polling rate won't fix this for you. In your case that means your bluetooth signal is weak (or something wrong with drivers). Try to disable wifi/bluetooth on your phone/laptop and try again. I'd also recommend to delete your drivers and if you have windows 7/8/8.1/10, let OS install it automatically, since BT400 is using Broadcom BCM20702A1 chip (I had different dongle with same chip, worked for me).

DrConflict commented 5 years ago

BT polling rate won't fix this for you. In your case that means your bluetooth signal is weak (or something wrong with drivers). Try to disable wifi/bluetooth on your phone/laptop and try again. I'd also recommend to delete your drivers and if you have windows 7/8/8.1/10, let OS install it automatically, since BT400 is using Broadcom BCM20702A1 chip (I had different dongle with same chip, worked for me).

BT Dongle is less than 1 meter away from DS4 and all latest drivers are installed. I double checked to be sure. So I'm guessing it can only be the fact that I have multiple devices laying around on my desktop (iPhone and iPad) and a wireless router nearby. But like I said, the lag spikes are very rare at this point and I never actually notice it in-game when it happens so it's all good. Just wanted to make sure I did most things to optimize the connection.

mika-n commented 5 years ago

Make sure you don't have "Flush hid" option set in a profile. If this option is checked then DS4Win app will flush the (WinOS level) hid message queue each time it reads a status of a controller. This may lead to lost inputs and causes just extra burden to a HID driver level.

DrConflict commented 5 years ago

Make sure you don't have "Flush hid" option set in a profile. If this option is checked then DS4Win app will flush the (WinOS level) hid message queue each time it reads a status of a controller. This may lead to lost inputs and causes just extra burden to a HID driver level.

Flush hid option is disabled. Does this project have a discord server btw? It would make sense to have a discord community for this project.

mika-n commented 5 years ago

Does this project have a discord server btw? It would make sense to have a discord community for this >project.

https://github.com/Ryochan7/DS4Windows/issues/582

But, Discord is a bit problematic when people are all around the world (timezones) and often discussion history is lost there. Other people don't find the question and solution that easily from there.

DrConflict commented 5 years ago

Fair enough.

MatJab94 commented 5 years ago

In my case reinstalling BT drivers (uninstalling them via device manager and letting windows install them automatically after reboot) didn't help. Flush HID is disabled. And unlike DrConflict the spikes don't happen randomly, but rather at all times, yet only when using DS4Windows via BT. I'm also ~1m away from the antenna (I have a mini ITX system with built-in BT/WIFI card on the board, with external antenna). Running up-to-date Windows 10.

DocHobo commented 5 years ago

I've also recently started having issues with constant high latency over bluetooth after it being fine for years. Delay is usually somewhere between 20-30ms but I've seen it go over 40 too, and putting the controller directly in front of the bluetooth dongle doesn't change anything. Disabling flush HID also doesn't change anything. Works fine when plugged in though. Running a mostly up-to-date w10 and latest ds4windows

mika-n commented 5 years ago

https://www.pugetsystems.com/labs/support-software/How-to-Disable-USB-Selective-Suspend-1190/

MatJab94 commented 5 years ago

Sadly, non of those helped in my case :/ The only ones I could try were disabling the power saving mode and WiFi, the others were already set the way you described - already had high performance power plan set, not using GF Experience, always had Steam's gamepad support disabled, and have an internal BT/WIFI card, so no USB dongle. But then again, in my case the latency problem only appears when DS4Windows is active. When it's not, the gamepad works correctly.

DrConflict commented 5 years ago

For same unknown reason I don't even have the "power management" in my Bluetooth dongle settings anymore. I know for a fact that I had this tab before, not sure why it's not showing up anymore.

mika-n commented 5 years ago

Hmm... I'm running out of ideas. Sorry.

Did different values of the "BT polling rate" profile option had any visible difference? If you now have it at "max" (1ms) then try less frequent polling rate (4ms-10ms). Any difference?

DocHobo commented 5 years ago

Well, one of those things in the first post seem to have worked for me. I did them all at once and the delay was still high, but device manager always yells at you to restart when you make the smallest change, so I decided to restart anyways to see what happened, and now I'm back down to the 1ms delay. Not sure which one fixed it for me, though I know it's not changing the usb slot since I put it back when I saw the delay was still high before resetting. I thought it might have something to do with it actually being able to open the controller exclusively for once, but even after disconnecting and reconnecting and getting the "could not open exclusively" error, my delay is still 1ms. I've also reenabled the steam controller and geforce overlay with no change. bluetooth is weird man

balael commented 5 years ago

I am having the same stuttering problem. Cycled through 5 different bluetooth dongles I have, as well as purchasing an intel m.2 card with adapter, installing it vie a pcie slot, and using onboard usb for the bluetooth connection... still stutters when only using ds4windows. Tested this by assigning the right stick to a mouse also in programs such as Joy2key, and via steams interface. They both do not stutter when doing this, only ds4windows no matter which option i've tried. Any other ideas on this?

Ryochan7 commented 5 years ago

The only additional suggestion that I can offer now is to test using a profile that has the Use Dinput only enabled; you have to save the profile after checking the box before the option is active. That will cause no virtual controller to be present thus no interaction with the bus driver. At least that will rule out one unique variable from the equation. Either only map keyboard and mouse events in that profile or just let the controller idle for a bit. Either way, a Bluetooth connectivity problem would show up if the connection is really the main issue.

balael commented 5 years ago

I've tested this as well as every other option, using multiple bluetooth dongles, and while using DS4windows, nothing can stop the stutter while mapping the right(or left) stick to mouse movement.

Can immediately close out DS4windows, disconnect controller, start up Joy2key, or Steam, with the stick assigned to mouse movement, and move the mouse within windows and have zero stutter, at any speed setting. I don't get it.

Also downloaded input mapper, and it causes the same issue, if that helps at all.

This is a fresh reinstall of W10 also, which i did trying to pinpoint the issue to my gear.

mika-n commented 5 years ago

Do you mean that there are no stuttering if you don't map LS/RS stick to a mouse, but use it as a "normal" stick? Hmm... this is very strange because the "reading part" of the physical DS4 controller over BT should be pretty much the same if you use LS/RS as a normal stick in output virtual controller or as a mouse controller.

Both DS4Windows and InputMapper user ViGem component, so it is a common nominator compared to Joy2King (veeery old ScVBus) version and Steam mapping (it's own mapper).

If you use touchpad as a mouse and leave RS/LS as a normal stick then does it work without stuttering?

balael commented 5 years ago

If I do not remap a stick to mouse movement, and keep it as a controller within games, there is no stuttering. I think that's what you're asking for. Just did more tests.

  1. DS4windows, assigned touchpad to mouse, stuttering is present.
  2. Steam, assigned touchpad to mouse, no stuttering from touchpad.

I don't know why I would be the only one seeing this issue LOL because let me take a little time here to appreciate you....

I've always wanted to get into Destiny 2, and could just never get the feel for mouse and keyboard in a less then super competitive FPS game. I find it MUCH more satisfying to be good with a controller, then mouse/kb, and I have over 10 high end mice for such games mind you, and I'd still rather play with the controller.

Destiny 2 on the other hand, the controller sensitivity leaves much to be desired, and you cannot use Steam overtop of Destiny to get Steam's mouse/kb mapping to overrride D2's. Then I searched DS4windows new updates again, and HOLY CRAP. DS4windows now rocks man, the macros available, the infinite customizability(that a word?) of the thumbsticks curves, everything is just frigging sweet.

After setting DS4windows up to only be Mouse/KB with Destiny 2, Gyro turned on when looking down the sights via the Left shoulder button, and customizing the deadzone to be a very very precise custom map, I'm 90-95% as efficient on my Scuf DS4 controller, as I am with Mouse/keyboard, and holy crap does it feel so much better to do it on a controller. I highly recommend anyone to give FPS's a try with DS4windows setup correctly. On top of that, doing it this way with Destiny 2 turns off their Auto aim which makes getting precision kills not only possible with a controller, but pretty easy to do with the aid of the gyro.

Thanks man, sorry for the wall of text