For all this years of gaming I so used to DualShock controllers but now I'm playing on PC most of the time and I don't want to change my habits by switching to something else like Xbox controller... that's actually the whole story. This topic for gamers who want to play on glorious platform using old trusty DualShock 4... or DualSence. So let's get started.
Talking about button mappers and raw drivers in this case is not practical because all of them are not universal solutions. Instead let me tell you about project that combined range of most usable and reliable tools under simple and flexible UI that will help us to use DualShock 4 for PC gaming. I's called DS4Windows tool.
Firstly this project was launched by Jays2Kings, but for now original branch looks dead. Hopefully after few months of stagnation another one enthusiast under nickname Ryochan7 took the baton and for now this project is very much alive.
You can find latest version of DS4Windows on Ryochan7's git page.
To install it simply unpack zip archive and move unpacked "DS4Windows" folder with data to any folder that do not require admin permissions. For example "C:\Portable Programs" folder. I you have UAC disabled you can use "C:\Program Files"
Run "DS4Windows.exe" inside of transferred folder.
During first launch it will ask you where to store settings data: "Program Folder" or "Appdata". I faced with problems in case of "Program Folder" so better to use "Appdata" variant to keep it as much default as possible.
Now go to the "Settings" tab and click on "Controller/Driver Setup"
Step 1: ViGEmBus is required for DS4Windows to work properly.
Step 2,3: talks for itself.
Step 4: HidHide is needed to more proper double input preventing.
Step 5: Better to install FakeInput if you are going to use controller as keyboard or mouse.
After all steps are done click on the "Finished" button.
After DS4Windows tool installation it's possible to connect your controller to PC via USB cable and proceed to settings part right away. But please hold on a bit.
We used to perceive wireless connection as something slower than direct physical connection. And in most cases there are hard reasons for this. But not in case of DualShock 4. If you want to have less input lag on DualShock 4 you need to connect it via Bluetooth. I know it sounds weird and I was also very surprised of this fact. But it's true and difference is noticeable - trust me.
So to connect DualShock 4 to PC via Bluetooth you will need simple plug&play Bluetooth adapter and USB extender. For USB adapter any cheap one "CSR 4.0" works like a charm. USB extender should be as short as possible to avoid power loss and connection drops, but long enough to keep it in close range with DualShock 4 controller.
Connect USB extetion cord to PC USB port.
Connect Bluetooth adapter to USB extention cord.
To avoid any connection micro-drops keep Bluetooth transmitter right in front of you on the table. Sometimes this micro-drops are not even noticeable but steel it can play a bad joke at the crucial moment of intense gameplay.
Press and hold [PS + Share] buttons on the controller for several seconds until indicator light will start pulsating. Now controller is ready for pairing.
[WIN + X] > Settings > Devices
Turn Bluetooth on by switching "Bluetooth" toggle.
Click on "Add Bluetooth or other device"
Select "Bluetooth" option.
If you did everything right you are going to see "Wireless Controller" in list of founded devices. Press on it and in few second you will get confirmation "Device is ready" so press "Done" to exit.
So now you have your controller connected wireless with reduced input lag.
You need to do all above only once. Next time you need just to turn on Bluetooth on PC and press [PS] button on the controller.
Once your controller connected to your system press "Start" button in bottom right corner of "DS4Windows" interface.
DualShock 4 itself from not long ago is supported in some modern PC games. But for most games Xbox controller is steel controller by default. If game on PC does not supporting Xbox controller it means it's probably does not supporting controllers at all. So let's go with universal solution and setup DS4Windows to emulate Xbox controller. There are few not obvious points here and time to time I see questions about it in Steam community and on game forums. So please pay attention to this part of the topic.
Just to notice, DS4Windows allows you to create and manage multiple profiles but because of my personal preferences I'm operating only with "Default" profile as one to go solution.
Fixing double input issue
This is the most common mistake that can happen with you in process of using DualShock 4 controller with your PC. Usually it looks just like on each physical press on the controller button two program presses occurs. In worst cases it can cause movement direction jamming, random mess with stick rotating and many... many... many other symptoms. So if something described happens to you most probably you have emulated controller works with native one in parallel. To avoid this you need to check this few points.
With last version of the app we got "HidHide" tool to properly hide native controller and force system to use only emulated one.
Right from the beginning of "DS4Windows" usage you will see "Shared access" mode in the "Ex" column for your controller. This is the first evidence you have your controller doubled. So let's fix this.
Go to "Profile" settings and open "Other" tab.
Make sure you have "Xbox 360" selected as an emulated controller and "Disable virtual controller" is unchecked.
Open "Settings" tab and make sure "Hide DS4 Controller" is unchecked. It is outdated feature and now we have "HidHide" for this purpose.
Open "Settings" tab and find "HidHide Configuration Client" in the "Utils" group.
In the "Applications" tab you need to select apps that need to be ignored by "HidHide". It is "DS4Windows" and "HidHide" itself.
In the "Devices" tab you need to select devices that need to be hidden. So check "Sony Interactive Entertainment Wireless Controller" from the list and "Enable device hiding" to hide native coontroller.
Now you can close "HidHide" dialog to save settings and restart "DS4Windows" by pressing "Stop/Start".
If everything went smooth you will see "HidHide Access" in the ex column for your controller.
Preventing analog input jitter via Dead Zone adjustment
One thing that I recommend you to do is to set analog sticks "Dead Zone" at least to 0.09 to prevent analog input jitter on them. By default DS4Windows tool endlessly gathering signal about position of analog sticks and triggers even if they are in the default position and you do not even moving them. It can cause situation when signal about default position of triggers with values near zero can be recognized as minimal movement and leads you to failure in some mini games where you need to hold steel. Example: In beautiful game called "Night in the Woods" you have mini-game where you are trying to steel delicious pretzels. You moving Mae's paw with left stick and when dog start looking at you, you need to release the stick. In this moment signal about default position of analog stick can be recognized with minimal value and it's already considering as movement, so you will fail. This is a very annoying issue and I saw a lot of question about how to pass this mini-game and thoughts that this mini game is simply broken on PC port of the game. But it's not... it's just a small issue in your controller setup. So let's solve this.
Go to "Profile" settings and open "Axis Config" tab.
For "LS" and "RS" "Dead Zone" set to "0.09" and "Anti-dead Zone" set to "0.00".
I prefer to keep them as simple as possible. But you can experiment with sensitivity and other cool features there. We will talk about "Anti-dead Zone", "Output Curve" and other cool features next time.
Minimizing Bluetooth lag
The main way to minimize input lag is connecting your controller via Bluetooth and it's already described above in details as must have step. Seriously... trust me. However there are few more tweaks to decrease input lag of the controller.
Go to "Profile" settings and open "Other" tab.
Push readings frequency to the max by selecting "Max (1 ms)" option in the "DS4 BT Poll Rate" dropdown.
As you can see now lag sometimes even less than "1.00 ms". Great result.
Wired connection consistency without lag
By default DualShock4 and DualSense connected by Bluetooth in average gives less lag than by wired connection. However Bluetooth type of connection also have one significant drawback. Wireless data transferring speed may vary and as result lag value vary as well. Sometimes lag value can has so big range that it brings additional discomfort during competitive gaming sessions. So without diving too deep we can say that if you want less lag - use Bluetooth connection, if you want consistent lag - use wired connection. But if you want to dive a bit deeply you can achieve even less lag than by Bluetooth connection by suing wire and in the same time preserve consistency of the wired signal. For this we need to overclock polling rate of USB connection.
OK... from this part guide became kind of risky not only because of the driver modification itself but also because of security settings changes to allow system to do such modification. I emphasize that I am not responsible for your actions. But if you still want to proceed here are the steps.
Open hidusbf git page and download latest version of "hidusbf.zip". Unpack zip archive to get "hidusbf" folder and copy it to... early mentioned "C:\Portable Programs" folder, for example.
Windows will not allow you to modify drivers due to security reasons so you need to do two things.
First one is disabling "Memory integrity" security check. You can search for some guides to avoid such action but they did not work for me, unfortunately. [WIN + Q] > Windows Terminal (Admin) > *type "core isolation"* > [Enter] Toggle off "Memory integrity". Restart your computer.
Second one is disabling WHQL signatures. [WIN + X] > Windows Terminal (Admin) > *type "regedit"* > [Enter] Proceed to: Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CI\Policy [Right Mouse Button] somewhere on the parameters field > New > DWORD (32-bit) Value > set key name to "WHQLSettings". [Right Mouse Button] on the "WHQLSettings" key, click on "Modify...", change "Value data" to "1" and hit "OK". Restart your computer.
After this two actions we can finally modify driver in "hidusbf". Make sure DS4Windows is not running at this moment. Connect your controller via USB. Go to "C:\Portable Files\hidusbf\DRIVER" and run "Setup.exe".
(1) "Install Service". (2) Show "All" devices. (3) Find controller in the list and click on it. (4) Check "Filter On Device". (5) Change polling rate to "1000". (6) "Restart".
Controller will be reconnected and changes will take place. Make sure each time you are using same USB post and same controller.
Now let's check how it is going. For me result via USB is less than 1ms.
You can push it even further and select "8000" in the polling rate drop-down however I think it is a bit overkill. Anyway... here we go. I am personally using it and it works extremely well.
DualSence and DualSense Edge support
Latest version of the DS4Windows supports DualSence controllers as well. Configuration is exact same like for DualShock4.
And the most recent version supports DualSence Edge as well with possibility to remap function and paddle buttons.
For now that's all that can help you to get best experience in using of DualShock 4 or DualSence controller for the sake of glorious PC gaming. In next versions of this guide I will explain what exactly "Anti-dead Zone" means and will share my specific preferences to increase sensitivity. Good game to everyone.
Created by TennojiM
All rights reserved
All rights reserved