1 - Getting started

Installing and configuration of the program

Prerequisites

Installation

  • Download the latest release from GitHub.
  • Extract the package in a easily accessible folder (e.g.: Desktop, Documents, Download etc)
    • DO NOT extract it inside a folder the requires elevated privilegies (e.g.: Program Files, Windows)
  • Run DS4Windows.exe
  • On first launch DS4Windows may ask you where to save its user data (settings and profiles):
    • AppData folder (recommended): user data is stored outside of the program folder, inside a special folder reserved to your Windows user
    • Program folder: user data is stored inside the same folder DS4Windows.exe is located

Setup

After installation you will have install some drivers, some of which are optional:

DriverRequired?Description
ViGEmBUSYesAllows DS4Windows to create virtual controllers.
HidHideNo, but recommended“Hides” your real controller in order to prevent games from simultaneously recognising both your real and virtual controller, which can lead to the infamous double controller issue..
FakerInputNoUseful for users who want to use their controllers as keyboard and mouse. Though DS4Windows can do so by itself, FakerInput has better performance and can work in more games and situations where Windows might prevent the usage of DS4Windows KBM handler.

Try it out!

Connect your controller. If everything went well, it should appear in the main window, in the Controllers tab.

1.1 - Connection methods

Ways you can connect your controller to the PC

USB

  • Should be as simple as just plugging your controller with a good, working USB cable
  • Windows should play a “device has been detected” sound when the controller is plugged in
  • Keep in mind that some USB cables can only be used for charging. If the cable does not support data transfer then it won’t be of use

Bluetooth

  • Make sure your BT adapter has the minimum specs for your controller
  • The controller needs to be set into pairing mode to be added as a Bluetooth device through Windows’ settings. If a pin is asked try 0000
  • If a controller has already been previously paired and you can’t reconnect, try removing the device from Windows’ Bluetooth devices list and repairing them

Pairing

Setting the controller in pairing mode

To pair the controller, you first have to set it in pairing mode.

DualShock 4/DualSense

Hold PS and Share buttons at the same time until the lightbar starts flashing in a heartbeat pattern.

Joy-Con/Switch Pro Controller

Hold down the Sync button until the controller LEDs enter a back n’ forth pattern.

Replicas

Probably the same as for the original controllers. Refer to specific device’s manual.

Pairing in Windows

image of windows bluetooth pairing ui

Sony DS4 USB Wireless Adapter

The official adapter from Sony supports only 1 controller, but allows the headphone jack to be used wireless for both audio and mic.

To pair a DualShock 4 to it, both must be set to pairing mode. For the Wireless Adapter, its main body must be slightly pressed towards the USB port (until a “click” is felt) then hold it down in this position for 3 seconds, with its LED flashing in a heartbeat pattern indicating that it’s in pairing mode. Set then DualShock 4 into pairing mode (check the previous section) and it it should connect to the adapter.

1.2 - HidHide configuration

Windows detecting the controller twice with DS4Windows running

To prevent or fix the issue of double input it’s necessary to hide the real controller in order to make only DS4Windows’ virtual controller visible to games. This can be done in two ways:

  • HidHide (recommended)
  • DS4Windows’ Hide DS4 Controllers option (legacy, non-recommended option)

HidHide

HidHide is a driver that acts as a barrier between Windows and game controllers connected to the system. It allows the user to selectively hide gamepads and only allow specific software to still detect them.

It is the recommended method because once it has been properly setup the double input issue is solved for good for the hidden controller.

In DS4Windows case, the user needs to set HidHide to:

  • Hide the real controllers from the system once when connected via USB and once when via Bluetooth
  • Allow DS4Windows to see all hidden devices, otherwise it would think there are no supported gamepads connected

Configuration:

configuration of hidhide

Alternativaly, you can follow the official HidHide guide.

Usage and tips

General Info

  • After installing the HidHide driver you MUST reboot your system before using it
  • If HidHide is properly configured then the Hide DS4 controllers option under DS4Windows’ Settings tab is redundant and should be left disabled

Client Configuration

  • In order to avoid confusion, make sure DS4Windows is stopped or fully closed BEFORE opening HidHide’s Client so only real controllers appear on its devices list
  • Remember to close HidHide’s Client before re-opening DS4Windows, otherwise the Ex check will fail even if the controller is correctly hidden

DS4Windows built-in hider

If you have HidHide installed and correctly setup then this option is redudant and should be left disabled to prevent issues or confusion.

This option exists on DS4Windows’ Settings tab. When enabled, DS4Windows will kindly ask Windows for exclusive access to detected devices, meaning the later would only allow DS4Windows to detect the gamepads and preventing the double input issue.

The problem with this method is that Windows can deny the exclusive access request when another process already has a open connection to the gamepad. Common reasons for this request to fail are:

  • A game already is running
  • Google chrome/Opera is running (why does it have a connection to the gamepad you ask? A mystery)
  • Nvidia Geforce experience process having a hold of the gamepad
  • Random non-obvious process having a hold of the gamepad

Even if it works initially, if your gamepad disconnects in the middle of a game chances are that you’ll lose exclusive access upon reconnection, requiring you to close the game to try again.

For the reasons explained above, the Hide DS4 Controllers option is NOT RECOMMENDED, though it remains available to users that need to use it for whatever reason. HidHide is the better option all around for those who can use it.

1.3 - Custom .exe name

Setting up a custom executable name

General info

There are some aplications and games that behave differently when they detect DS4Windows is running on the users system. The known ones are:

  • Steam Big Picture: cannot interact with the Big Picture interface using DS4 controllers
  • Steam Input: will ignore DS4 controllers, breaking their usage with Steam’s Playstation Configuration Support
  • Sholve Knight: game will ignore DS4 controllers

This guide will make DS4Windows run under a new process name instead of the standard DS4Windows.exe in order to make it run undetectable.

How to set a custom .exe name

The name DS4Win will be used as an example for this guide, but any other name can be used:

Step 1

  • Open DS4Windows and go to the Settings tab
  • If the run at Startup option is enabled then disable it for now
  • On the Custom Exe name box write the desired custom name (DS4Win) without adding “.exe” in the end
  • Stop and then start DS4Windows again

custom exe setting

Step 2

Fully close DS4Windows, make sure it’s not running on the background or in the system tray.

DS4Windows in system tray

Step 3 In DS4Windows’ folder, locate the new TheNameYouChose.exe (DS4Win.exe) file and run it

new exe in folder

Step 4 Check if the program is running under the new name in the task manager.

new exe name in task manager

  • From this point forward the original DS4Windows.exe should not be used anymore
  • If the run at Startup option has been disabled in the beggining then re-enable it now
  • Sometimes this process needs to be re-done after a DS4Windows update, though DS4Windows updates should work as long as the name inside the Custom Exe name box is exactly the same as the actual “.exe” file (not including the actual “.exe” text)

Stop using a custom .exe name

  • Fully close DS4Windows in case it is open. Make sure it’s not running in the background or at the system tray
  • Open the original DS4Windows.exe file
  • If the Run at Startup option is enabled then disable it for now
  • Erase the name inside the Custom Exe name box
  • Stop and then start DS4Windows again
  • If the run at Startup option has been disabled in the beggining then re-enable it now

2 - Supported controllers

Controllers that are currently supported by the application

Currently supported controllers:

  • DualShock 4
  • DualShock 3
  • DualSense
  • DualSense Edge
  • Nintendo Switch Pro Controller
  • Nintendo Switch Joy-Cons
  • Razer Raiju
  • Razer Raiju Tournament Edition
  • Razer Raiju Ultimate
  • Moonlight/Sunshine
  • Hori PS4 Mini Controller
  • PS4 Fun Controller
  • Steel Play Metaltech P4 gamepad (wired)
  • Hori Fighting Commander
  • Nacon Revolution Unlimited Pro
  • Nacon Revolution Pro v3
  • Nacon Revolution Infinite
  • Astro C40
  • Specialist PS4 controllers
  • SnakeByte Game:Pad

2.1 - DualShock 4

DS4 remarks
  • All controller features are supported except the integrated headphone jack and speaker
  • The headphone jack can only be used via USB and only with a DS4v2 (native gamepad function, unrelated to DS4Windows)
  • The headphone jack can only be used wirelessly if the controller is connected via Sony’s DualShock 4 Wireless USB adapter
  • Bluetooth 2.1 + EDR or higher required for wireless connection

2.2 - DualShock 3

DS3 remarks
  • Needs to be running under DsHidMini driver and in DS4Windows Mode
  • Requires BthPS3 for Bluetooth connection (covered on DsHidMini installation guide)
  • Rumble works as normal, though the small motor has only one strength level
  • LEDs can be controller by setting the correct lightbar colors, more about it here
  • Pressure sensitive buttons not supported
  • Motion related functions not supported
  • Bluetooth 2.0 + EDR or higher required for wireless connection

2.3 - DualSense

DualSense remarks
  • Most controller features are supported
  • The headphone jack and microphone can only be used when used via USB (native gamepad function, unrelated to DS4Windows)
  • Adaptative triggers are supported but can only be used in limited forms
  • Advanced rumble effects are not used. Rumble acts as common one
  • Bluetooth 2.1? + EDR or higher required for wireless connection (necessary confirmation)

2.4 - Nintendo Joy-Cons

Joy-Cons remarks
  • LEDs cannot be controlled
  • HD Rumble not used. Rumble acts as common one
  • Motion sensors are supported
  • Can be used in joined or split mode
  • NFC not supported
  • Because the ZR and ZL are buttons and not triggers it may be difficult to play games that make use of analog triggers
  • Bluetooth 2.1? + EDR or higher required for wireless connection (necessary confirmation)

2.5 - Nintendo Switch Pro

Nintendo Switch Pro Controller remarks
  • LEDs cannot be controlled
  • HD Rumble not used. Rumble acts as common one
  • Motion sensors are supported
  • NFC not supported
  • Because the ZR and ZL are buttons and not triggers it may be difficult play games that make use of analog triggers
  • Bluetooth 2.1? + EDR or higher required for wireless connection (necessary confirmation)

2.6 - Replicas

Replica/copy-cat controllers remarks

If a gamepad is made to be a complete replica of a official one, meaning that they act exactly as the original controller and appear to Windows as such, then chances are DS4Windows will just detect it as being the official controller and it may just work. For example, 8bitdo controllers that are compatible with Nitendo’s Switch usually present themselves as a replica of the Pro Controller and can be used as normal with DS4Windows.

For cases where the gamepad presents itself differently than the official one to the system (most DS4 replicas) then DS4Windows will not recognize them. DS4W detects controller by their Vendor and Product Identification (VID/PID), meaning that if a controller’s VID/PID is not already on DS4W code then it will just be ignored.

Adding support to new copy-cats may be as easy as just adding their VID/PID to the code or as hard as making major changes to the internal structures of DS4Windows. If you have a unsupported copy-cat feel free to reach us and kindly ask for it to be added to DS4Windows code while providing the maximum amount of information on it.

2.7 - Moonlight/Sunshine

Moonlight/Sunshine virtual controller guide

Moonlight virtual controller is supported from version 3.7.0 up. You can enable it in Settings -> Device Options -> Moonlight Support.

Support modes

Simple support

Not selecting Advanced Support means you’re using the simple implementation of the support, which should be sufficient for most users.

Technicalities

When a new controller is detected, its checked for being virtual. Normally, if it’s detected that it’s a virtual device, it simply wouldn’t be added to the controllers list. However, this behaviour makes the detection of the Moonlight virtual controller impossible. To counteract this, this support mode makes all devices with a matching Vendor and Product ID skip the check.

When to use it

If you can connect both physical and virtual controllers and all the behaviour is as usual.

Advanced support

This option is meant to counteract what is described in this issue. This behaviour doesn’t appear to be consistent across all machines. Most users should never have to use this option. It does its work to counteract that issue, but it’s got its tradeoffs.

Namely, you cannot connect 2 devices one right after another, you have to wait for 5 seconds after connecting one. Additionally, sometimes you will have to disconnect a device that’s already connected for the program to detect more controllers.

Technicalities

To counteract the issue, a timeout on device detection is used. For 5 seconds after connecting a controller, any further detections are skipped.

When to use it

If when using simple support you connect a single controller and the program starts adding multiple devices to the list.

3 - Troubleshooting

Common issues with the application/controllers

3.1 - Not opening/crashing/not starting

Common issues that can cause the application to not open or crash or the controller service to not start

Verify your DS4Windows

Make sure all prerequisites are installed

Without all required software, the app will not start.

DS4Windows Log and Windows Event Viewer

DS4Windows’ Log can give important warnings when issues occur. It may be found in 2 different places and, if it exists on both, the most recent one should be inspected:

  • In DS4Windows main folder
  • In DS4Windows folder inside %appdata% (Press Win+R, type %appdata%, hit OK then check if the DS4Windows folder exists and the presence of the Log file)

Confirm DS4Windows folder is not write-protected

DS4Windows may be inside a folder that is write-protected, therefore requiring it to be executed with higher privileges to be able to save and edit data. Such folders can be the “Windows” folder, “Program Files” and sometimes even the user Desktop (unlikely, but possible).

It’s recommended to have DS4Windows inside a folder that is known to not require higher-privileges to prevent this issue, like the user’s “Documents” or “Downloads” folder.

Check if User Data is not corrupted

The easy way to check this is making sure DS4Windows is not running and then backing up and erasing all of its User Data. If erasing the User Data fix the issue but the user wishes to keep some of its old data, it’s possible to restore each User Data related file and folder individually until the corrupted file is found, then removing it only.

Issues that may prevent DS4Windows from running or starting

“ViGEmBus is not installed” log message when attempting to start DS4Windows

Either ViGEmBus is not installed or DS4Windows is failing to detect it. The ViGEmBus’s guides on how to install, verify if its working correctly, uninstall or perform a full clean of everything vigem related can be found on ViGEmBus’ How to Install/Remove page.

“Attempting to start the service winmgmt failed” or “Windows Management Interface not found” messages

If these messages appear on DS4Windows’ Log or in Windows’ Event View then try to do the “repair Windows installation” fix using a Microsoft Windows installation media. There has been reports that this fixed a problem of DS4Windows app silently doing nothing when launched -issue. Or run WinOS “WMI repository repair” commands. Repair WinOS WMI repository.

User is running MSI Afterburner and / or MSI RTSS RivaTuner

Some users have reported that certain versions of MSI Afterburner and MSI RTSS RivaTuner apps are not compatible with WPF version of DS4Windows (every version since v2.0).

RTSS prevents DS4Windows app to startup. Try adding DS4Windows.exe file to RTSS application list and set app option as “Application Detection Level=NONE” in RTSS (search issue tickets with these keywords for more information on DS4Windows’ Issue Tracker).

User has the legacy ScpVBus driver installed

The Scp Virtual Bus Driver (ScpVBus) is a legacy driver that was used to spawn virtual Xbox controllers. It has been succeeded by the ViGEmBus.

Though DS4Windows should just ignore the ScpVBus, there is a small chance that having it installed along-side the ViGEmBus can lead to issues.

Windows is not updated

When everything else fails, update Windows.

3.2 - Controller not detected

Common issues that can cause a controller to not be detected

Possible reasons for DS4Windows not detecting a controller

You have disabled support for your type of controller in DS4Windows settings

  • On DS4Windows’ Settings tab there is a option called Device options that allows the user to disable controller support per type. Check there if everything is enabled
  • If changes are made then it is necessary to close the Device options Window and Stop -> Start DS4Windows again for them to be effective

image of controller support window

You are using obsolete “old” versions of DS4Windows

If you just search “DS4Windows” on google, chances are that the first result is the obsolete version from jays2kings, which has not been updated since 2016 and should not be used anymore.

The currently maintained version you should be using is schmaldeo’s DS4Windows. If in trouble, check out the installation guide.

DS4Windows is stopped

DS4 needs to actually be running for things to work. If it is stopped then you can press the Start button on the bottom-right to make things roll again.

image of the main window with start button marked

Controller is not properly connected / does not appear on Windows Devices and Printers

You have connected your controller to the PC but it does not appear on Windows’ Devices and Printers? No, that should not be possible under normal circumstances. Your controller MUST appear there in some shape or form, even if it does not looks like a controller.

USB

When connected via USB a new entry should appear, so keep an eye for it. Test on other USB ports to be sure. If literally nothing happens then maybe:

  • You have a faulty cable
  • Your cable can only be used for charging and does not support data transfer
  • Your controller’s or PC port is broken

Bluetooth

When a controller has been paired to Windows via Bluetooth then its entry will exist there regardless if the controller is currently connected or not. Also…

  • There is a correct and a incorrect method of pairing a controller to Windows. Both will result in the controller appearing to be connected, but on the wrong way the controller won’t remain connected for more than a few seconds and a Add a device notification will keep on appearing
  • Check the dedicated Bluetooth connection issues page for more info

Controller was connected to the PC via Bluetooth: Paired incorrectly or needs to be re-paired

There is a correct and a incorrect method of pairing a controller to the PC via Bluetooth. Both will result in the controller appearing to be connected, but on the incorrect method the controller won’t remain connected for more than a few seconds and Windows will sometimes show a Add a device notification.

Sometimes this happen when a user had previously connected the controller to the PC, removed the device and is trying to simply turn on the controller in the hopes that it will reconnect. If in doubt, fully remove the controller from Windows’ Device list and re-pair it via the proper way.

Correct method

User manually makes Windows look out for a device that is in pairing mode

image of bluetooth pairing

Incorrect method

User simply turns on the controller and tries to accept the Add a device notification

image of add a device notification

Controller has been accidentally disabled

There is a chance that DS4W has permanently disabled your controller in a previous attempt of gaining Exclusive Access when using the Hide DS4 controllers option.

Though this can happen via any connection method, on Bluetooth removing and re-pairing the controller will fix the issue.

On USB, the easiest way to verify this is by checking if the controller works properly in other USB ports, though another indication for DS4 or DualSense users is that the lightbar will keep flashing yellow, indicating that the controller is only at a charging state (likewise, it will flash yellow only once then turn off if fully charged).

To check if your controller is disabled:

  • Open Windows’ Devices and Printers by pressing Win+R in your keyboard, typing control printers then selecting Ok
  • Locate your controller on the list
  • Right-click on it, select Properties then select the Hardware tab
  • Select the HID-compliant game controller and check its status at the bottom of the Window
  • If disabled, re-enable it by clicking at Properties then Enable device

If it was disabled then re-enabling should fix the issue.

image of reenabling controller

Controller is enabled but hidden

image of controller being hidden

If you found out that:

  • Your controller is properly connected
  • Your controller is NOT disabled in the previous sections
  • Still does not appear on Windows’ Game Controllers list
  • Is not detected by DS4Windows

Then it may be hidden. The following tools could be the culprit:

HidGuardian

HidGuardian is a driver that can prevent Windows from recognizing a connected controller as an actual game controller. It was used by DS4Windows to prevent the double-input issue, but support for it was removed in v3.0.8 for 2 reasons:

  • Users didn’t know how to properly configure HidGuardian and ended up having issues that were complicated to troubleshoot and fix
  • The release of HidGuardian’s successor, HidHide, which works the same but is more user-friendly

As such, the latest versions of DS4Windows won’t request HidGuardian for hidden controller’s access and if a controller is hidden by it then it won’t be detected anymore.

Users who still have HidGuardian installed must:

  • Uninstall it for their controller to be detected again
  • Install HidHide as a replacement for the “controller hiding” function that is necessary to prevent the double input issue

HidHide

You can check if you have HidHide installed by opening Windows’ Apps and Features and searching for it, though if it do is installed then it’s probably just not properly configured to grant DS4Windows access to hidden controllers.

  • If you are definitely sure DS4W has been properly whitelisted by HidHide and it still can’t detect the hidden devices try temporarily disabling it by opening the HidHide Configuration Client and unticking the Enable device hiding checkbox in the Devices tab
  • If it still doesn’t work then try uninstalling HidHide via Windows’ Settings -> Apps and Features and rebooting
  • If even with HidHide uninstalled your controller does not appear on Windows’ Game Controllers list then the problem lies elsewhere

Controller is a copy-cat/replica

For these type of controllers to be detected by DS4Windows, they need to either:

  • present themselves as a complete copy of the original in a way that DS4Windows actually thinks they are the original and also behaves exactly like a original one
  • have specific support for them on DS4Windows’ code
  • try to force their detection by using the debug version of DS4Windows

Top 5 Ways to Detect a controller on Windows

  • If you want to troubleshoot issues with your real controller then it’s better if DS4Windows is stopped/not running for these checks, otherwise you might mistaken a virtual controller with the real one
  • If the Hide DS4 controllers option is active or if you have controllers hidden with HidHide then they may not appear on the Gamepad Tester website or in Windows’ Game Controllers list
  • Connected DS3 controllers used with DsHidMini in DS4Windows mode won’t appear on the Gamepad Tester website nor in Windows’ Game Controllers list. Confirm if they are detected on DsHidMini Control Utility (DSHMC.exe)

Using a Gamepad Tester

The Gamepad Tester should work in most modern browsers and will show detected controllers along with some additional info such as their vendor and hardware identification (VID/PID).

Windows’ Game Controllers List (joy.cpl) Command

Connected controllers should appear on Windows Game controllers list, also called joy.cpl. To open it:

  • Press Win+R in your keyboard, type joy.cpl then select Ok. Alternatively, you can…
  • Use the search function on Windows’ taskbar to find and open Game Controllers

image of joy.cpl

Going to Windows Devices and Printers

Windows’ Devices and Printers should offer a simple view of connected devices. You can use it to confirm a device has been detected by:

  • USB: verifying if there are changes when (dis)connecting a controller
  • Bluetooth: checking if the controller related entry is present and its status

To open the Devices and Printers menu:

  • Press Win+R in your keyboard, type control printers then select Ok. Alternatively, you can…
  • Open it from Windows’ legacy Control Panel

image of devices and printers in windows

Opening Windows Bluetooth & Other Devices

This menu will show connected/paired Bluetooth controllers and other devices, though it does not go much beyond that. Paired controllers can be removed here.

To reach it, open Windows’ Settings on the Start Menu and select it there.

image of bluetooth settings

The Device Manager is the one source of truth to everything that makes part of your PC. If it has been detected then it will appear there, but because it is very techinical on how it presents devices to the users it may be a little hard for the average user to find their way around it.

Regardless, to open it, press Win+X in your keyboard (or right click the Start Menu) then select Device Manager in the appearing menu.

image of device manager

3.3 - Bluetooth issues

Common issues with Bluetooth connections

Common DS4 Bluetooth solutions

Using a good quality, dedicated USB BT Adapter

  • Integrated BT adapters are usually bad
  • Most problems are caused by a bad bluetooth connection
  • Though most controllers will work with a 2.1 BT adapter, more modern ones usually have better signal quality
    • A (at least) 4.0 BT adapter is recommended

Re-pairing it to Windows using the correct method

There are 2 ways a controller can be paired to Windows:

  • The controller makes the connection request to Windows (incorrect method)
  • Controller is set in its special pairing mode and then the user manually makes Windows connect to it (correct method)

If the controller has been connected in the wrong method it will 100% not work even though it appears on Windows as if it has been properly added. If in doubt, make Windows remove the controller from its Device list and re-pair it again using the correct method. Check the following section on how to propperly connect a controller to the PC.

For more information, click here

How to properly remove and re-pair a controller

Remove a paired controller from Windows

In settings

Open Windows’ Bluetooth Devices list on its Settings

Locate your controller on the list, click on it then select Remove device

image of bluetooth disconnecting

In devices and printers

Sometimes this can be used when Windows’ fail to remove a device through the usual Devices Settings menu

  • Open Windows’ Devices and Printers
  • Locate your device, right-click it then select Remove device

image of bluetooth disconnecting

Common Bluetooth issues

Windows can’t find the controller when adding via Bluetooth & Other Devices

  • MAKE SURE YOUR DEVICE IS IN PAIRING MODE!
  • For most controllers a 2.1 Bluetooth adapter is required
  • Windows will not detect the device if it already is on its paired devices list, requiruing it to be removed from there beforehand
  • If the controller has been previously connected to the PC but does not appear on the list anymore, check if it still exists on Windows’ Devices and Printers
  • Sometimes Windows takes an awful long time to detect DS4v1 controllers
  • Use a gamepad tester to see whether your device can be picked up online.

Controller connects and stays connected but Windows / DS4Windows does not recognize it

  • Re-pair the controller to Windows using the correct method explained in one of the topics above just to be sure
  • If you’re using a controller from your gaming console (PS3, PS4, PS5, Switch) make sure it has not accidentally connected to it/turned it on. It is recommended to fully turn off/unplug it when first attempting to pair the controller to the PC
  • If this is not the case, check the dedicated controller detection issues page

Controller does not reconnect after system reboot, sleep or shutdown cycle

  • If using a USB BT adapter it may be a compatibility issue between the adapter and the USB port being used. Test the adapter in other USB ports (un-pair the controller before moving the adapter)
    • Sometimes this issue is caused by BT adapters that were were made for 2.0 USB ports being used in 3.0 ones
  • It’s possible that your BT adapter model is just not fully compatible. Test with a different adapter
  • Possible issues with BT adapter driver. Even if your BT adapter appears to work, check if there isn’t a specific manufacter’s driver that is required for it to properly function

Controller connects and works but sometimes randomly disconnects or stop responding

  • Generally causes by a bad Bluetooth signal stability. Refer to the Input delay on Bluetooth page for more related info
  • Possible faulty controller or dying controller battery
  • Check DS4Windows’ log for error messages
  • Verify if the issue does not occur when DS4Windows or Steam are not running
    • Keep in mind that using some controllers (DS4, DualSense) with DS4W or Steam makes them transfer more data, thus making them more prone to lose connection if your BT adapter is not up to the task

Cannot connect more than 1 controller or connection is lost

  • Caused by a bad quality BT adapter or high signal interference
  • BT adapter can’t mantain the necessary data rate
  • Refer to the Input delay on Bluetooth page for more related info

Windows using integrated BT adapter instead of the external/USB adapter

The integrated BT adapter must be disabled in Windows’ Device Manager:

  • Press Win+X on the keyboard and select Device Manager on the appearing selection window
  • Locate the integrated BT adapter under the Bluetooth section and disable it
  • Replug the dedicated adapter or try disabling and enabling it again

Loss of WiFi or Bluetooth signal if controller is connected

  • If using an integrated card that double as both the Bluetooth and Wifi adapter then it’s possible that its signal quality is so bad that one is interfering with the other. The solution would be to use a dedicated, good quality USB BT adapter
  • Even if using independent BT and Wifi Adapters, if the signal quality of one of them is bad then it’s quite easy for severely interferece between them to occur anyway
  • Make sure other devices’ (laptops, smart TVs, smartphones) WiFi and Bluetooth signals are not generating radio interference near the PC
  • When DS4Windows starts communicating with controllers the amount the data being traded vastly increases and may serve as an explanation if this issue does not occur when the controller is connected but DS4Windows is not running

Controller sometimes tries to reconnect to other nearby PC

Both PCs’ Bluetooth adapters probably have the exact same MAC Address, so the controller can’t differentiate between them and tries to connect to the first one that responds.

Latency/input delay issues on Bluetooth

A connection latency is how much time it takes for one system to communicate to another. In DS4Windows case, we refer to the time it takes for the system/DS4Windows to communicate with the controller. A high latency means a high input delay in games, meaning the time it takes for your character to respond to the controller commands.

image of bluetooth latency

A high but stable input delay will make the users’ character feel slow to respond, while a low input delay with high delay spikes may make the user prone to errors because of unexpected slow respond times.

It’s often considered that a really bad high latency is one where the input delay is above 20ms, though the ideal is to keep it bellow 10ms.

Usual controller latency

The following table can be used as reference for comparison on what input delay to expect with a supported controller and a good Bluetooth adapter:

ControllerUsual input delayMinimum input delayNotes
DualShock 35ms5msConnected through BthPS3 + DsHidMini (DS4Windows Mode)
DualShock 44ms = DS4W default settings1,5ms - polling rate set to maximumv1 and v2 don’t have major latency differences
DualSense3ms1ms
Switch Pro Controller16ms16ms16ms is the lowest latency the official controller can achieve
Joy-Cons16ms16ms

Monitoring input delay

  • You can check the current input delay by hovering your mouse above the controllers name on the Controllers tab (check the image above)
  • If the controller’s latency goes over 10ms then it will appear on the Log
  • If you have a DualShock 3, DualShock 4 or DualSense you can enable the Flash Lighbar at High latency option in the Settings tab, which will make the lightbar flash in a red color when latency spikes are detected.

For the DualShock 3 you need to have DsHidMini’s Lightbar to LED translation enabled, then latency spikes will cause all 4 LEDs to quickly flash.

image of latency in program’s log

Input delay issues

In case you are having issues with input delay, keep something in mind: DS4Windows itself is probably not the cause of whatever high input latency/latency spikes that you may have! 98% chance of the issue being elsewhere.

Controllers do not communicate directly with DS4Windows via some driver, they connect to the default Windows’ Bluetooth Stack and DS4Windows just receives and sends data to it through the channels given by Windows.

If you are having latency issues then installing/uninstalling drivers won’t fix them unless they are directly related to your dongle’s driver. For this reason, messing with DS4Windows’ related drivers will probably be a waste of time.

Latency issues always boils down to:

  • Low quality Bluetooth adapters (most integrated ones)
  • High radio interference near the adapter
  • Too many devices connected to the adapter
  • Not using the correct/updated BT adapter’s driver

Causes of high or unstable latency

Note on “Bad” BT adapters

Keep in mind that when the term “bad” is used it does not necessarily mean “cheap”. Multiple users have confirmed they have no latency issues even with 4 controllers connected with cheap, generic $5 adapters from Aliexpress.

Bluetooth and WiFi interference

Both use the same frequency. Although they should auto adjust to prevent interference, sometimes it just happens. Check if your area isn’t overloaded with different 2.4Ghz WiFi networks and Bluetooth devices. Also, if one of the signals is too weak then it’s quite easy for the other to heavily interfere.

Integrated or bad Bluetooth adapters

It’s quite common for integrated BT adapters to suck for one of the following reasons:

  • They are inside the laptop’s shell or inside a case that act as an obstacle to the signal
  • The Bluetooth adapter also is the WiFi adapter and they are both interfering at each other
  • They are just being overrall bad. Integrated BT adapters generally have short range and can’t maintain the minimum data rate necessary when connecting more than 1 controller. Good integrated adapters are the exception, not the norm

Though the minimum BT specification required for most modern controllers is the 2.1 specs, more modern adapters should have better signal stability.

Multiple connected controllers

Each connected controller means more data that is being transferred through the Bluetooth adapter. If you have a bad adapter or high radio interference near it it may not be able to maintain the required data rate between the system and controllers, causing high latency or even connection loss. Not much can be done besides trying to lower the interference or replacing the adater with a better one.

A good quality adapter can easily maintain a stable, low latency connection with 4 controllers or even more.

DS4Windows causing controller to increase data transfer rate

THIS ONLY APPLIES TO DUALSHOCK 4 AND DUALSENSE DS4 and DualSense controllers can communicate in 2 different modes:

  • PC friendly mode: only basic button/axes information is sent by the controller to the PC
  • Native PS mode: controller sends its full set of information, including motion sensors data, status, touchpad states etc

When first connected to Windows, these controllers communicate in PC friendly mode and their data transfer rate is low. When picked by DS4Windows (or Steam for that matter), a request is sent for them to change into Native PS mode, which increases the volume and the frequency of data being sent.

Not only that, DS4Windows also sends data back to the controller related to the rumble, lightbar, triggers (DualSense only) etc.

When these changes occur, if the Bluetooth adapter can’t keep up with the required data rate then the user may suffer with high input delay or even connection loss. So if your never had latency problems when using your DS4/DualSense in games as a generic controller but then start having issues when trying to use DS4Windows or Steam this may be the cause.

Potential fixes to latency issues

Test with WiFi fully disabled

This test is recommended for those with integrated cards that work as both BT and WiFi adapters

By disabling the WiFi signal you have one less source of radio interference so you can then verify your BT adapter performance in a environment with less signal noise. Keep wifi enabled devices far from the PC too.

Set Windows’ Power Plan to High Performance
  • Set the power saving plan of the PC to “High Performance” (usually the default in Win10 is balanced)
  • On Windows’ Device Manager locate your Bluetooth Dongle -> Enter its properties -> Check if there is a tab called Power Management and disable the turn off this device to save power (untick the option)
Use a dedicated BT adapter

A dedicated, good quality BT USB Adapter should offer better performance than an integrated one. Because its antenna is located outside of the laptop/desktop’s shell, it also suffers less from signal loss caused by physical obstacles.

When using a USB adapter in a PC that also has a integrated one the latter must be disabled in Windows’ Device Manager in order for the USB BT adapter one to be used, since Windows can only keep one dongle active.

Moving the adapter to another USB port

Moving the dongle to a better located USB port may offer a better quality signal. Also, USB ports (specially 3.0 and above) can be a source of radio noise. Test the dongle in different ports to verify which offer you a better signal.

Connect USB BT adapter through a USB extension cable

A laptop/desktop’s shell is a source of radio noise, specially if it’s ungrounded or near high powered, high data transfer ports like USB 3.0 and above. This noise may worsen your BT’s adapter performance.

Connecting your BT adapter through an active cable extension, so it stays located at some distance from the computers shell (not necessarily nearer to the controller), is known to be useful in these cases.

Decrease the BT polling rate in profile settings

Only works with DS4 and DualSense gamepads. The BT polling rates of other types cannot be controlled

In Profile Editor -> Other tab it’s possible to set the BT Poll Rate used for DS4 and DualSense controllers on Bluetooth. If you are having latency issues, specially with multiple controllers connected, try setting this value to 10ms or more. For most games, a controller input delay is only noticeable above 16ms.

image of bluetooth polling rate in settings

Disable output data to the controller

Your adapter may not be up to the task to both receive and send data to the controller. In this case, you can set a profile with the Enable output data to DS4 option disabled. Keep in mind that disabling this option will also disable Rumble and Lightbar control.

image of enable output data in settings

3.4 - Virtual controller issues

DS4Windows virtual controller creation, usage and troubleshooting

Verifying if DS4Windows is successfully creating virtual controllers

DS4Windows cannot magically change your real controller to one for another type, so what it actually does is create a virtual Xbox or DS4 controller that is then associated to your real one. If the virtual controller creation fails then one of DS4Windows main features is not working.

The “Associate (X360/DS4) Controller (…)” message appears on the log but the virtual controller does not appear on the Game Controllers list

ViGEm spawned the device but it’s in a error state. Verify on Device Manager - Check ViGEm log - Virtual controller has been hidden by HidHide/HidGuardian? - HidHide HidGuardian issue that can happen when the user has both installed at the same time.

The “Associate (X360/DS4) Controller (…)” does NOT message appears on the log

It’s possible that the user has disabled virtual controller creating/association in the currently active profile. To verify:

  • Go into DS4Windows’ Controllers tab
  • Click on the Edit button next to the selected profile
  • Check on the Profile editor -> Other tab if the Disable virtual controller checkbox is ticked. Untick it if applicable
  • Save the profile changes and stop/start DS4Windows
  • Confirm on Windows’ Game Controllers list if the new virtual controller has now been detected

Games not recognizing the virtual controller

Making sure the double controller (double input) issue is prevented

If there is an X on the “Ex” column then it’s possible for the double input issue to occur

  • For users of HidHide, make sure that the HidHide Configuration Client is fully closed before opening DS4Windows, otherwise the “Ex” check may fail even though HidHide is correctly hiding the physical controller virtual controller x symbol

It’s possible for the double input issue to actually make your controller NOT be detected by games, as such it should be the user’s number one priority to prevent it before anything else.

This happens because the game may detect the wrong controller (your physical one) first and then keep waiting for its commands while ignoring DS4Windows’ virtual one. Depending on how the game “reads” the physical controller inputs it may get stuck in a “nothing happens” situation.

Check the page about what causes the double controller (double input) issue and how to prevent it.

Confirming the virtual controller is acting as expected

  • Test your controller in the Gamepad Tester, check if it responds as normal accordingly to the used profile configurations
  • If the virtual gamepad is not acting as expected, maybe your profile is misconfigured. To test, create a new profile under DS4Windows’ Profiles tab using one of the recommended gamepad presets, save and then select it for your controller in the Controllers tab
  • If on the gamepad tester website your controller does not respond to any command then double-check again the currently selected profile in the Controllers tab and its configuration. Make sure the buttons bindings are actually mapped to something and a blank profile is not being used
  • If the Gamepad Tester website is failing to detect the the virtual controller then check the page related to virtual controller creation issues

Game not recognizing the virtual Xbox controller or stops recognizing it upon controller reconnection

This may be related to a somewhat known Windows issue where it has, hidden from view, associated the connected Xbox controller to a incorrect / not-expected “XInput Slot”.

image of xinput in the wrong slot image of xinput in the wrong slot

Common reasons for games to not detect virtual (emulated) DualShock 4 controllers

Game supports only Xbox controllers

image of emulated controller type selector

Most games support only Xbox controllers because of how easy it is to add complete support to them. Even games that were released for Playstation consoles sometimes don’t have native DS4 support on the PC, and there is nothing that can be done besides switching to Xbox controller emulation.

A good (but not 100% reliable) way to confirm if a game has native DS4 support is by locating it on the PC Gaming Wiki and looking for the “Input settings” section. Look carefully, sometimes it is quite hidden, so make sure to expand menus when applicable. Still, most games that have support for DS4 controllers don’t actually have rumble support, so be warned.

Some games also can be modded to include PS button icons while using Xbox controllers, though it’s not possible to cover this here and so you’ll have to google it yourself.

Game requires Steam Input to have support for DS4 controllers

Though it’s quite uncommon, some games absolutely require using your DS4 through Steam Input by enabling the Playstation Configuration Support option and launching the game through Steam to have working DS4 support or to support rumble/lightbar features.

Keep in mind that for using your virtual DS4 controller through Steam Input you’ll have to run DS4Windows under a custom name for Steam to not ignore it (thanks for not giving us the option on this and making our lives harder, Steam).

Game intentionally ignore virtual controllers

No known cases. Most users who claimed some game had this behavior were actually having other unrelated issue. Example: Shovel Knight ignores DS4 controllers if it detects DS4Windows is running, but it shouldn’t matter if the user is using a Xbox controller or if running disguised to not be detected.

Not saying it’s not possible, just that it’s not known.

3.5 - In-game problems

The controller is correctly detected but not behaving properly in games

Usual culprits

Double input issue

It’s essentially the major reason for users having problems playing games with DS4Windows. To not keep repeating information all over the site, check the double input page for more information on that.

Make sure your real controller is 100% hidden before playing games, otherwise you might start having double input/controller issues and mistake them for something else.

If there is an X on the “Ex” column then it’s possible for the double input issue to occur

image of hidhide shared access

Test with a new, “clean”, properly-functioning profile

It’s possible that the currently active profile is misconfigured, either by incorrectly tweaking settings or by having it broken after a DS4Windows update (really rare to happen, but possible).

To not go into a wild goose-chase, the very first thing that should be done is creating a new, sure-to-be-working profile:

  1. Go to DS4Windows’ Profiles tab and click on the New button to start profile creation
  2. A window will appear asking if the user wants to use a Preset. Select “Yes” then choose a Gamepad preset with Xbox or DualShock 4 output
  3. Choose any name for this profile (e.g.: “testing”) then save it
  4. Go back to the Controllers tab and select the new profile

This should result in a good profile for troubleshooting most issues.

Most common issues in games

Character or camera moves by themselves

This is usually caused by the “stick drifting” issue, which happens when the controller stick position is not perfectly centered when at rest and can be possibly caused by 2 different hardware issues:

  • The stick is not physically snapping back to its center
  • The stick being physically centered but the sticks’ position sensors not correctly reading its position

To counteract this, you can use the Stick calibration tool that was added in version 3.6.0. To correctly use it:

  1. Connect the faulty controller
  2. Press the Edit button in that controller’s row in the main menu profile editor
  3. Scroll down to Stick calibration and set the offset manually or use the automatic tool. Please note that there’s a separate section for each stick stick calibration section
  4. Save the profile

Alternatively, you can use deadzone, but with stick calibration you preserve the linearity of raw input.

Buttons / triggers pressing themselves randomly or not registering properly

Random inputs are 99.9% of the time caused by the controller itself being faulty, not by DS4Windows or other drivers.

If the issue is in the triggers, it’s possible to try increasing its/their dead-zone to require pressing them further before being registered.

One way to test if you are having random buttom presses is by creating a profile that has a Special action enabled that causes a profile switch to another profile when a specific button is pressed, then just leave your controller turned on and wait, or maybe try slightly touching the buttons without fully pressing them to see if its a sensibility issue.

Other than that, the only thing left to do is taking the controller to the assistance.

Controller stops responding randomly

Unless DS4Windows is out-right crashing or appearing to be frozen (Windows says that it is not responding) then it is probably an issue with your controllers cable, its own USB port, the PC’s USB port or if connected via Bluetooth then a latency issue.

For wired users, try using other PC USB ports, replacing the cable or testing if the problem does not occur when connected over Bluetooth.

Besides that, check if there isn’t any error message in DS4Windows’ Log that could give some direction on this.

Game constantly or occasionally feels slow to respond to commands (high input delay sensation)

  • May be an issue with the game itself
  • If the controller is connected via Bluetooth then you may be having connection issues which result in high input delay or random latency spikes
  • Controller latency can be monitored by hovering the mouse over the controllers’ name on DS4Windows’ main Controllers tab. Also, if the latency goes above 10ms then it will be registered on the Log tab
  • If you are connected wired but DS4Windows is alerting you of high input delay (over 20ms) then probably the cable is faulty, or even the PC or controller’s USB port

This was an issue with HidHide that was fixed on v1.1.50. Make sure to update to the latest available HidHide version.

Game has native support to DS4’s rumble, motion, gyro, touchpad and/or lightbar but it does not work

  • Because of an issue with the ViGEmBus, DS4Windows has disabled support for rumble and the Lightbar passthru mode when using virtual DS4 controllers

  • The issue causes the controller to occasionally not stop rumbling or to set wrong lightbar colors

  • The last version to have these features enabled was v3.0.10. Keep in mind that these features may or may not work well with games in this version and support will not be given to users that aren’t to the latest version

  • Are you reeeeeally sure it actually has support for those features? One good way of knowing, though not 100% reliable, is by looking in your games’ page on the PC Gaming Wiki and checking in the controller section if it has 1) DS4 Controller support and 2) if it’s specifically stated that those functions are supported

  • Make sure you are using a emulated DS4 controller and that you’ve enabled the corresponding passthru options that you intend to use on the active profile

  • Sometimes, for a game to have support for these features (or to even detect DS4 controllers) the following conditions are required: 1) launching the game through Steam and 2) Using the DS4 controller through Steam’s Playstation Configuration Support. For more info on that, please check the Steam related info page

Rumble does not work

Rumble and lightbar passthrough are currently disabled when DS4 emulation is active

  • Because of an issue with the ViGEmBus, DS4Windows has disabled support for rumble and the Lightbar passthru mode when using virtual DS4 controllers

  • The issue causes the controller to occasionally not stop rumbling or to set wrong lightbar colors

  • The last version to have these features enabled was v3.0.10. Keep in mind that these features may or may not work well with games in this version and support will not be given to users that aren’t to the latest version

  • Check on your profile settings’ Other tab if the rumble is not at 0%

  • Still on the Other tab test there if both your motors are working. If they don’t work there then it’s a hardware issue with your controller or you have a third-party / copy-cat controller that doesn’t have rumble or does not work with DS4Windows

  • Most games only have working rumble when using Xbox controllers even if the game supports both Xbox and DualShock 4 controllers

  • Some games only support DS4 controllers or DS4 controller rumble when using Steam’s Playstation Configuration Support. Read the previous topic for more info on that

3.6 - Keyboard + mouse remapping

Issues related to mapping the controller input to keyboard and mouse

About DS4Windows’ KB+M handlers

The KB+M handlers are the means by which DS4Windows sends keyboard and mouse actions. Currently the 2 handlers used are the SendInput and the FakerInput handler.

SendInput

The SendInput handler requires no driver and it’s used by default when the FakerInput driver is not installed.

Unfortunaly, some games and Windows’ events may end-up ignoring commands coming from SendInput for a variety of reasons, with a few examples being:

  • Windows’ preventing malicious software from taking control of the user’s system
  • Games’ anti-cheat protection
  • Games simply not recognizing commands coming from the SendInput function

FakerInput

The FakerInput handler does not suffer from the limitations of the SendInput handler, but it’s usage requires its driver installation. It’s also currently in beta and the user may suffer from unknown issues.

When it’s active, DS4Windows’ KB+M commands are sent via the FakerInput and received by the system as non-different than a real keyboard and mouse, meaning Windows and games will accept its commands even in situations that virtual KB+M usage are blocked.

Verifying / changing current KB+M handler being used by DS4Windows

You can check on DS4Windows’ Log tab which handler is being used.

kbm handler in log

DS4Windows always uses the FakerInput handler if its driver is installer, so to switch between handlers it’s a matter of installing or uninstalling the FakerInput driver and then restarting DS4Windows.

Installing FakerInput

Restart DS4Windows after the installation installing fakerinput

Uninstalling FakerInput

Make sure DS4Windows is not running when uninstalling the FakerInput driver

uninstalling fakerinput

Common issues

Mouse drifting or keyboard typing by themselves

This usually happens when the KB & M are mapped to the controller’s sticks but these are suffering from stick drift, which happens when the controller’s sticks are not correctly centered when at a resting position.

To fix this, please refer to this page.

Windows not responding to DS4W’s KB & M commands in some situations

Some situations, mainly in User Account Control (UAC) warnings/prompts, will make Windows ignore DS4W’s commands if the SendInput handler is being used. This happens as a Windows’ protection against malicious software that try to abuse the SendInput function to take control of the user’s system.

The possible fixes for this are:

  • Fully disabling Windows’ UAC (not recommended)
    • This will not fully solve the issue as there are situations where Windows will still prevent the SendInput handler from working
  • Switching to the FakerInput handler
    • FakerInput’s KB+M are recognized by the system/games as non-different than a real keyboard and mouse
    • It’s in beta test (v0.1) and the user may face some not-known issues

Game doesn’t respond to DS4W’s KB/M commands

This usually happens if the SendInput handler is being used in a manner similar to the topic above (have a read on it), though the difference is that some games do this as an anti-cheat counter-measure.

The only real fix for this is switching to the FakerInput handler, which the game usually can’t differentiate between it and real KB & M devices being used by the user.

Special cases (Valorant and possibly others)

Some games have really strong anti-cheat protection that both:

  • Ignore the SendInput handler commands, requiring the FakerInput handler usage and
  • Ignores every Keyboard and/or Mouse commands not being received by the main devices in the system

Usually, this “main device” verification is done the moment the game is being launched by detecting which KB/M is the first to send commands. These first devices will be recognized as the “main” user devices and every other one will then be ignored.

The workaround to this is to either:

  • Unplug the main KB/M when launching the game or
  • Not use the real KB/M (keep the mouse completely still, do not use any buttons) when launching the game and use only DS4W’s KB/M until its commands are detected
    • After the game correctly recognizes DS4W’s KB+M commands the game will then start ignoring the real KB/M
    • Depending on the game, the real KB/M usage may be ignored even outside of the game as long as it’s still running
    • Valorant only affects mouse detection/usage inside and outside of the game while it’s running. All keyboards in the system function as normal

KB/M commands not working when being sent via macros

If keyboard events are sent too fast Windows may not register that they happened. It is advised that the user:

  • Manually adds a wait time between the key press and release commands
    • 100ms is the recommended minimum wait time
  • OR Activates the Record delays option when recording a MACRO, which will make the MACRO recorder auto-register the time it takes for the user to send commands (only starts registering the time after the first command is sent)
    • Depending on the key sequence being registered this may not work. Example: trying to record Alt + Tab, the Win key and some others combinations won’t work since pressing these keys or key combination will un-focus the MACRO recorder window, making it stop registering some/all the keys being used.

image of macro wait time

3.7 - Double input

The infamous double input problem

If the game detects both the real and the virtual gamepad at the same time then it will receive commands from 2 different devices at every button press and stick movement, which can lead to the infamous double-input issue that can make games unplayable.

Double Input issue may:

  • Detect every command twice, making it unplayable
  • Start 2 player mode randomly
  • Ignore the virtual controller because it picked the real controller first
  • Respond incorrectly to the controller’s inputs
    • Usually happens because, even though the game is correctly reading the virtual controller, it is also incorrectly reading the real controller’s inputs at the same time
  • Do not respond to any controller command
    • Usually happens because the game detected the real controller first while being simultaneously unable to read its inputs
  • Other non-obvious issues

To prevent or fix this issue it’s necessary to hide the real controller in order to make only DS4Windows’ virtual controller visible to games.

For a guide on how to do this, click here.

3.8 - Steam and DS4Windows

Relationship between Steam and DS4Windows
  • Steam and DS4Windows both have what is called “controller remapping” functions. To avoid conflicts, it’s recommended that every Steam controller related option is disabled so only DS4Windows is being used as a remapper
    • Your controller will work as normal in the vast majority of games regardless of Steam’s controller related options being disabled
    • A really small amount of Steam games require the usage of Steam’s controller options to have working or full DS4 controller support (e.g.: Horizon Zero Dawn). For more information on this, check the Steam related information page.
  • Steam ignores DS4 or DualSense controllers (real or virtual) if it detects DS4Windows is running on the user system, which makes no difference for most users as games will still detect the controllers as normal. The downsides to this Steam behavior are:
    • Real or virtual Playstation controllers won’t be able to control the Big Picture interface (emulated Xbox controllers work as normal)
    • There are a few games that require usage of Steam’s controller options to have working or full DS4 controller support (e.g.: Horizon Zero Dawn). Because DS4 controllers are ignored, it’s not usually possible to use the controller through the required Steam’s Playstation Configuration Support in those cases
  • It’s possible to prevent Steam from detecting that DS4Windows is running to workaround the points given above, but doing so can cause remapping conflicts depending on how both of them are configured, specially if the Playstation configuration support option is enabled. As such, this should only be done if absolutely necessary! For more information on this, check the Running DS4Windows under a custom “.exe” name guide.

3.9 - Audio issues

Microphone/speakers issues when controller is connected

General Info

Some official and third-party DualShock 4 and DualSense gamepads support audio input/output when connected to the PC via specific connection methods (mostly USB only). This page is dedicated on instructing users on how to fix some “issues” that might happen when connecting their gamepads to the PC and leave some comments

List of gamepads that support audio input/output on PC

  • DualShock 4 (version 2 only) connected via USB
  • DualShock 4 connected via Sony’s USB wireless adapter
  • DualSense connected via USB
  • Possibly DualShock 4 copy-cats via USB (rare situation, most don’t have any working audio functions when used on PC)

Switching between audio devices on Windows and applications

Windows taskbar

switching audio target on the taskbar

Windows settings

switching audio target and source on the taskbar

Discord settings

switching audio settings in discord

Or quick switch by right-clicking:

switching audio settings in discord

Common issues

PC’s own headphone/speaker or mic stop working when connecting a DualShock 4 or DualSense to the PC

Because some gamepads expose their headphone and mic jack when connected (check the list above on this page) Windows may be auto-switching to them as the new computer’s default.

The “fix” is instructing Windows or the application being used (Discord, Skype, some games that support audio communication) to switch back specifically to the desired headphone/mic. Have a look at the “switching between audio devices” section on this page.

Headphone or headset doesn’t work when connected via the gamepad

Things to check:

  1. Do you have a controller that has audio support when connected to the PC according to the list on this page? Is it connected by one of the supported methods also described on the list?
    • Remember, currently no official gamepad exposed its audio functions when connected through Windows’ Bluetooth
  2. Have you selected the gamepad’s headphone or mic as the desired audio devices accordingly to the “Switching between audio devices” section?

If everything looks OK but the headphone/mic still isn’t working then… Don’t know, sorry. Maybe the headphone jack port is broken or you are suffering from some poor contact?

Frequently asked questions

Can I use my DS4/DualSense’s headphone jack when connected via the standard Windows Bluetooth?

No, this feature is not implemented. Is it possible to implement this? Apparently yes. WILL it be implemented? The answer is probably no unless some new developer steps in to specifically focus on this.

What most users don’t understand is that:

  • DS4Windows is a free, open-source software developed by a few people out of their own limited free time. Have you ever had to work, study, have fun and still have time left to work on non-paid software for random internet users? Balancing all these things is not an easy task
  • Even minor things can be complicated to be implemented. Audio input/output over Bluetooth is complicated, specifically because there is a LOT that is not known for the lack of documentation, so sometimes it takes way too many hours of work just to test something
  • There are other more important things to focus that actually impact gaming. if users need wireless headsets they can just buy a dedicated one. As such, this niche feature is really low on the TODO list

4 - Developer reference

Important information developers might want to know

4.1 - Running and deployment

Important information related to running the program locally and deployment

Background

My fork contains a new post-build script. It’s located in /utils and it’s a complete rewrite of the original batch post-build script that was included in Ryochan7’s fork. It updates the newest.txt file that contains the latest version. It’s used for checking if you’re running the latest version of the application (it checks it against the file in my repo). It also moves the relevant localisation assemblies to a separate directory, runs Ryochan7’s script that injects relevant code into that build’s .deps.json file, renames the target folder from net8.0-windows to DS4Windows and zips the folder, completely automating the deployment process (from there all you have to do is release it on GitHub).

Running

It is important that you do not have the script execute when you just want to debug/run it quickly from the IDE. It won’t let you do that anyway, because it tries to run an exe thats in a directory called net8.0-windows that doesn’t exist anymore. I’m trying to keep it commented out in the .csproj file when I push new commits, however sometimes I might forget to do it and you might come accross an issue where you can’t run the code in the IDE, because it tells you that the file does not exist.

In that case, you need to comment the line that runs the script out in the /DS4Windows/DS4WinWPF.csproj file by putting REM in front of it (it needs to look like this: REM python $(SolutionDir)utils\post-build.py $(TargetDir) $(ProjectDir) $(Version)).

Deployment

For deployment, remember to uncomment the post-build script. You also need to remember that a version check is ran against this file so you need to disable version check (like in case of beta versions) or update the code that checks if the app is up to date to fetch this info from your repo.

4.2 - Beta versions

Important info related to deployment of beta versions

If you want to release a version from a different branch than master, it’s important that you define a BETA_VERSION constant before build. Otherwise you end up getting the outdated version warning. To do it, simply add BETA_VERSION in <DefineConstants> in a relevant Release PropertyGroup in the /DS4Windows/DS4WinWPF.csproj file. Example of how it should look:

...

    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
    <DefineConstants>WIN64;BETA_VERSION</DefineConstants>
    <ErrorReport>none</ErrorReport>
    <DebugType>none</DebugType>
    <DebugSymbols>false</DebugSymbols>
    <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
    <PlatformTarget>x64</PlatformTarget>
    </PropertyGroup>

    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x86'">
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
    <DefineConstants>BETA_VERSION</DefineConstants>
    <ErrorReport>none</ErrorReport>
    <DebugType>none</DebugType>
    <DebugSymbols>false</DebugSymbols>
    <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
    <PlatformTarget>x86</PlatformTarget>
    </PropertyGroup>
    
...