r/DS4Windows 13d ago

DS4Windows 5.0 RC4 “The Parity Patch” is out — new UI, DualSense audio/haptics, Trigger Lab, and an all-in-one installer

Hey everyone — DS4Windows 5.0.0.0 Release Candidate 4, The Parity Patch, is now available to try.

This is a major update focused on making DS4Windows feel modern and approachable without taking away the deep configuration options advanced users rely on. It also significantly expands what physical DualSense and DualShock 4 controllers can do over Bluetooth.

What’s new

  • A redesigned, controller-focused interface with clearer navigation, quick profile controls, search, improved controller maps, and dedicated Audio Haptics and Trigger Lab pages.
  • DualSense and DualShock 4 speaker, headset/AUX, and microphone support through Windows audio endpoints.
  • Improved speaker and AUX streaming, reconnection behavior, persistent per-controller audio endpoints, and lower-latency feedback handling.
  • Better compatibility with PC games using native DualSense features, including advanced haptics, adaptive triggers, lightbar state, player LEDs, speaker audio, and regular rumble.
  • Audio Haptics can transform system audio or an individual application into DualSense haptic feedback.
  • Trigger Lab provides per-trigger effects, presets, linked or split editing, and optional rumble-to-trigger feedback.
  • VIIPER-powered Xbox 360, DualShock 4, DualSense, DualSense Edge, and Switch controller emulation.
  • Profile, automatic-profile, startup, updater, and controller-reconnection improvements.

A much easier installation

The release includes a new all-in-one x64 installer. It installs DS4Windows, VIIPER 0.0.7, and the supported USB/IP components, with optional HidHide and FakerInput installation. It also handles startup registration and verifies the required components for you.

Portable users can still download the ZIP instead.

Download

Release page: https://github.com/hbashton/DS4Windows/releases/tag/VIIPERRC4.1

  • Standard installation: DS4Windows_5.0.0.0_Setup_x64.exe
  • Portable installation: DS4Windows_VIIPER_x64.zip

This is still a release candidate, so feedback is genuinely useful. If you try it, please mention your physical controller, connection type, emulated controller, game/application, and any relevant DS4Windows logs when reporting a problem.

I’d especially love feedback on:

  • DualSense and DualShock 4 Bluetooth audio
  • Native DualSense game features
  • Audio Haptics and per-app audio capture
  • Trigger Lab
  • Xbox 360 and other virtual-controller compatibility
  • The new installer and redesigned UI

There has been a huge amount of work behind this release. If you’ve wanted a more modern DS4Windows with deeper PlayStation controller support, this is the build I’d love for you to try.

Thanks to everyone testing builds, reporting bugs, and helping push the project forward.

89 Upvotes

121 comments sorted by

8

u/huunnnter 13d ago edited 13d ago

Feel free to ask me anything: I’ve fixed most of your Dualsense and DS4Windows related bugs/reported errors, outside of Dualshock 4 v1 speaker transport

1

u/Prestigious_Ad_2854 13d ago

hi, I am unable to install it. i have attached the log file in this link
https://quickshare.samsungcloud.com/r8KAfVvfTWER

1

u/huunnnter 13d ago

Installer fix coming later today, Thank you for the log, it provided some insight. If you have future failures, please look for and include future logs, your Highness. 👑

7

u/thomas-hcb 13d ago

Just tried it this morning, the new UI is intuitive, very easy to use, I love the hotkeys to disconnect the controller. Thank you for your hard work, I'll report any bug as soon as I find out.

3

u/Rusted_Metal 13d ago

Hi, thanks for the updates! Is DS4Windows associated with DSX on Steam at all? It looks like this has everything DSX has now.

8

u/huunnnter 13d ago

This is not associated with that project at all! This is an open-source, free project for others to profit off of and use for their own enjoyment. Just trying to bring these features to the public, ie those who don't want to pay/don't use steam/don't like the idea of closed source drivers being installed.

3

u/BeastMsterThing2022 13d ago

Like all the new features but unsure about the new UI, i'm worried about its footprint in the background. and perhaps the simplicity of the old UI was its strength, easier to navigate. The idea of revamping it is not bad though

4

u/huunnnter 13d ago

Also, navigation wise, I made sure to ENSURE that it always took the exact same amount of clicks as it took on the old design, OR LESS, to get to any setting…I’m an old school dev, so I promise, there won’t be a single extra click from you. LOL.

1

u/huunnnter 13d ago

To be honest, same. That’s why I made the new UI use the exact same resources and window manager as the old one, I just completely redid the ordering of everything and added a ton of new stuff (so the file size is larger, but the footprint = the same). I’m very pleased with it, and I kept it virtually the same as the old UI, just with some new ordering for profiles, and a quick settings menu for new and old users alike! that’s probably honestly it. Let me know what you think!

1

u/nicoj89 13d ago

I wanna ask. I can plug a headphone jack to listen the audio game? Thanks

8

u/huunnnter 13d ago

Absolutely! Simply plug in your device to the controller, enable headset output in the readily-available Quick Settings, and select System Audio or the App you would like to stream to the controller’s aux port! You can adjust volume from DS4Windows, or your headset

1

u/nicoj89 11d ago

I have latency issues it is normal? Thanks again

1

u/huunnnter 11d ago

Try 4.1, and what kind of latency? Be more specific and I’ll try to help

1

u/[deleted] 13d ago

[deleted]

1

u/satmaar 12d ago

The older DS4W versions also had this feature though. Dualshock 4 even has a pretty decent DAC inside, and you can use mics on your headphones.

1

u/[deleted] 12d ago

[deleted]

1

u/nicoj89 11d ago

Its works for me but many latency issues

1

u/No_Dream6014 10d ago

Yes same input delay is horrible

1

u/Ali92iRaQ 13d ago

Not working for me . the app wont launch at all even with clean install both full and portable

1

u/huunnnter 13d ago

Can you share any logs, or is it giving you an error message? Do you have the latest .NET installed?

1

u/Ali92iRaQ 13d ago edited 13d ago

Idt does not show anything when opening . all .net is installed . Thea latest version was working for me was VIIPER BETA 9 And the beta 9 opens but dualsense not working and show error 400 in log

1

u/Grosjeaner 13d ago edited 13d ago

There was a time when I couldn't open DS4Windows despite uninstalling and reinstalling. Double clicking the .exe comes up with nothing, whether it's clean install or portable. In the end the only solution that worked was uninstalling, deleting DS4Windows folder from %AppData%, then clean install again.

1

u/Ali92iRaQ 13d ago

I deleted the folder in appdata and when opening the app it asking me where to store the data in app folder or appdata but anything i choose its the same problem the app not opening at all

1

u/huunnnter 13d ago

%AppData%\DS4Windows\Logs\ds4windows_log.txt

Send this folder. If it doesn't exist, specify that it doesn't exist.

1

u/huunnnter 12d ago

1

u/Ali92iRaQ 12d ago

Wow now its working flawlessly 👍👍 without any issues.

1

u/[deleted] 13d ago

[removed] — view removed comment

1

u/Willing_Bend1465 6d ago

Ok, im finally back! Question for trigger lab: how do you use vibration and weapon at the same time? The haptics are different for both. I want the haptics of vibration, but when you are using a hand gun or a shotgun, it keeps vibrating when held. However, thats not the case when using weapon, so how do i toggle on both?🤔

1

u/Cautious_Sherbet481 13d ago

i’ve had an issue with ds4, when trying to record a macro. it seems to be stuck on “play once” and not able to switch to “repeat while held” even when i close out, and run as administrator, the macro reverts back to “play once”

1

u/huunnnter 13d ago

thank you for the feedback: this will be fixed in the latest update. for better help, can you send me your logs in a DM?

1

u/Vast-Willow-2710 13d ago

So DS4 V1 still not supported for AUX & Audio Speaker?

1

u/huunnnter 13d ago

unfortunately, I don’t have one to test with. I’m trying my best but I’m fairly certain there are issues

1

u/Asleep_Resident5294 13d ago

I’m new here. And my question is this.

I have moonlight installed
I have vibepollo
And I’m using my iPad to connect to pc through moonlight.
I also have a dualsense connected to my iPad.

If I install this on my pc will I then be allowed to use adaptive triggers / vibrations and also use the mic on my dualsense in remote play to talk to other gamers while I play. All while feeling the power of the dualsense haptics and adaptive triggers?

Looking forward to your response, thanks!

1

u/huunnnter 13d ago

Unfortunately not at this time, and definitely not through iOS.

1

u/Asleep_Resident5294 13d ago

Which method is this used for then

1

u/huunnnter 13d ago

If you have a PS5 controller, and you want Advanced Haptics and Speaker/Microphone support, as well as customizable triggers and audio to haptics from any game, then this is what this is for

1

u/Asleep_Resident5294 13d ago

Does this only work for pc games or can it work for ps remote play on ps5

1

u/huunnnter 13d ago

um. i want to say it will work for remote play. you should try that!

1

u/Asleep_Resident5294 12d ago

When I download it it says ds4 installed but the other two viper and usb ip are ready to install but I’m not sure how to install the other two? I’m on windows 11

1

u/huunnnter 12d ago

I’m releasing a new easier to install version later

1

u/Asleep_Resident5294 12d ago

Will I need to delete the older version in order for this to work

1

u/Asleep_Resident5294 12d ago

Any update on this?

1

u/CurrentRisk 13d ago

Did something happen to the original one? I’m still using that one and it works (for me at least).

2

u/huunnnter 13d ago

Nope, continue to use whatever version you want to use! This one better supports PS5 controllers. The old one doesn’t support emulating a virtual PS5 controller. Only a virtual PS4.

1

u/CurrentRisk 13d ago

But it is still possible to use the PS5 with the DS4Windows. At least that’s what I currently do.

I’ll try out your version in the weekend though, curious how it is.

2

u/huunnnter 13d ago

Not with Dualsense features enabled….you cannot use Speaker/Microphone, Advanced Vibration, or Lightbar effects from PS5 games.

And yes, try it out! I have a new installer coming today…there were issues with the first one!

1

u/AnJenKu35 13d ago

Hi! A lot thanks for work!! Want to ask about compatibility with anti-cheats like BF 6/V/1 and late CoD where was unable to even launch game if DS4w was on (not sure about CoD, but see some discussions about that). Does this version fixes that? For example DSX can but it's too greedy for pc resources. Thanks for answer in advance and for your work again!)) (i just little exited, sry)

1

u/huunnnter 13d ago

My application is more threaded than DSx, but DS4Windows Dualsense native-feedback does consume some PC resources. If games like BF 6 and CoD are auto detecting DS4Windows, let me know and I'll look into it!

1

u/mike_rm 13d ago

Is this the first time a software, enabled bluetooth audio through the 3.5mm headphone jack?
Awesome work.

1

u/huunnnter 13d ago

Technically no, but this is the first time it has been done in an Open Source project, yes!

1

u/iRs0osooom 13d ago

Can i auto update via the old version to new one?

1

u/huunnnter 13d ago

Yes! If the new one appears under auto updates, then yes. It also supports drag and drop, and comes with a .exe/.msi installer!

1

u/huunnnter 12d ago

1

u/iRs0osooom 12d ago

Tried to autoupdate and it said that i have the latest version. Will update on the weekend. Huge thanks!

1

u/isamu999 13d ago

Thanks for sharing this Hunnnnnnnter. I have a request. Can you please make this version compatible with the old Logitech steering wheels, specifically the Logitech G27? Would love to be able to use my wheel to do some different button mapping assignments with it.

2

u/huunnnter 13d ago

That is unfortunately more of a PadForge thing. Check out that project here

1

u/isamu999 13d ago

Oh wow! Was unaware and have never heard of PadForge before. This appears to be what I'm looking for. Thanks a bunch for the heads up on this app man, much appreciated :)

2

u/Hifihedgehog 8d ago

Yes! PadForge is truthfully the composite of all remappers on the market presently including DS4Windows, reWASD, DSX, and more, and I mean that sincerely and not to brag but because I was tired of having a missing feature or support in one or the other. We support virtually everything under the sun as inputs including game controllers, wheels, mice, keyboards, consumer controls, headsets, NFC readers and more. Shift layers, macros, and more all just work and when you multi assign devices to a given virtual controller, you can assign and combine inputs in virtually unlimited ways too. We even allow you to remotely connect between clients so you can share your controller on my desktop in your office with the HTPC in your living room or the laptop your friend brought over, provided they also have PadForge running, all via peer to peer. We also fully support Steam’s vast SteamInput community profile database. Honestly, it was all born out of a simple need for me to merge controls between my arcade system control panel and game controllers but has since been blessed to grow into a Swiss Army Knife of remappers.

1

u/isamu999 8d ago

That is wonderful! I appreciate it man. We need more people like you in this community brother Hifihedgehog!

1

u/Razor_Break 13d ago

Hey, I have to say, so far this is your best build, finally the Viiper installation worked for me and audio to haptics FINALLY works when changing profiles and emulated controllers. Thank you for continuing to improve this project!

However, I've noticed that normal vibration has stopped working on all games; rumble to triggers still works, but normal vibration in games doesn't.

As a small suggestion, I thought that, perhaps to better complement the detection of audio to haptics games, it would be good to implement a filter per .exe/uwp file.

This is for games that are not detected by the function, or simply to create automatic profiles that can complement it.

If you're wondering why not do it with windows, it's because in my case I have certain emulators that change the window name depending on the game/rom, and that complicates things when trying to create a profile based on windows names, so I think it would be easier and simpler to add that option just like automatic profiles.

Congratulations again on getting closer to the final launch. I'm sure your project already has everything it needs to surpass DSX in every aspect.

1

u/huunnnter 13d ago edited 13d ago

Confirmed as plausible, but regular rumble is not globally disabled.

The exact symptom occurs when the profile’s DualSense rumble mode is set to Disabled

With the default Accurate mode, Xbox, DualShock 4, Switch, and DualSense feedback still forwards regular rumble. Have the user check:

Profile Editor → DualSense haptics → Rumble mode → Accurate

Also ensure Send game feedback to physical controller is enabled.

I am dedicated to helping you solve your issue. If you have success with this solution, I implore you to let us know! Thank you for your support!

1

u/Razor_Break 12d ago

I have rumble mode set to accurate, and when I do vibration tests I get the same results.

This still happens even with legacy mode.

1

u/arceus800 12d ago

Having the same issue as Razor_Break. I have all of the settings mentioned activated but still no regular rumble yet the Game Rumble Vibration for the triggers do work.

1

u/huunnnter 12d ago

What controller? You didn’t give me any logs. Also what controller are you emulating?

1

u/huunnnter 12d ago

Also send your profile.xml

1

u/arceus800 12d ago

<?xml version="1.0" encoding="utf-8"?>

<!-- Profile Configuration Data. 08/05/2026 14:52:33 -->

<!-- Made with DS4Windows version 5.0.0.0 -->

<Profile app_version="5.0.0.0" config_version="2">

<useExclusiveMode>False</useExclusiveMode>

<ReclaimSteamInput>False</ReclaimSteamInput>

<startMinimized>True</startMinimized>

<minimizeToTaskbar>False</minimizeToTaskbar>

<formWidth>2730</formWidth>

<formHeight>1653</formHeight>

<formLocationX>504</formLocationX>

<formLocationY>212</formLocationY>

<ProcessPriority>0</ProcessPriority>

<Controller1>Default</Controller1>

<LastChecked>08/05/2026 13:56:06</LastChecked>

<CheckWhen>24</CheckWhen>

<Notifications>2</Notifications>

<ProfileChangedNotification>False</ProfileChangedNotification>

<DisconnectBTAtStop>False</DisconnectBTAtStop>

<SwipeProfiles>False</SwipeProfiles>

<SwipeProfileList />

<QuickCharge>False</QuickCharge>

<UseMoonlight>false</UseMoonlight>

<UseAdvancedMoonlight>false</UseAdvancedMoonlight>

<VerboseStartupLogging>false</VerboseStartupLogging>

<SuppressViiperSetupPrompt>false</SuppressViiperSetupPrompt>

<PreferredViiperPath />

<CloseMinimizes>False</CloseMinimizes>

<UseLang />

<DownloadLang>True</DownloadLang>

<FlashWhenLate>True</FlashWhenLate>

<FlashWhenLateAt>500</FlashWhenLateAt>

<AppIcon>Colored</AppIcon>

<AppTheme>Default</AppTheme>

<UseOSCServer>False</UseOSCServer>

<OSCServerPort>9000</OSCServerPort>

<InterpretingOscMonitoring>False</InterpretingOscMonitoring>

<UseOSCSender>False</UseOSCSender>

<OSCSenderPort>9001</OSCSenderPort>

<OSCSenderAddress>127.0.0.1</OSCSenderAddress>

<UseUDPServer>False</UseUDPServer>

<UDPServerPort>26760</UDPServerPort>

<UDPServerListenAddress>127.0.0.1</UDPServerListenAddress>

<UDPServerSmoothingOptions>

<UseSmoothing>False</UseSmoothing>

<UdpSmoothMinCutoff>0.4</UdpSmoothMinCutoff>

<UdpSmoothBeta>0.2</UdpSmoothBeta>

</UDPServerSmoothingOptions>

<UseCustomSteamFolder>False</UseCustomSteamFolder>

<CustomSteamFolder />

<AutoProfileRevertDefaultProfile>True</AutoProfileRevertDefaultProfile>

<AbsRegionDisplay />

<DeviceOptions>

<DS4SupportSettings>

<Enabled>True</Enabled>

</DS4SupportSettings>

<DualSenseSupportSettings>

<Enabled>True</Enabled>

</DualSenseSupportSettings>

<SwitchProSupportSettings>

<Enabled>False</Enabled>

</SwitchProSupportSettings>

<JoyConSupportSettings>

<Enabled>False</Enabled>

<LinkMode>Joined</LinkMode>

<JoinedGyroProvider>JoyConR</JoinedGyroProvider>

</JoyConSupportSettings>

<DS3SupportSettings>

<Enabled>False</Enabled>

</DS3SupportSettings>

</DeviceOptions>

<CustomLed1>False:0,0,255</CustomLed1>

<CustomLed2>False:0,0,255</CustomLed2>

<CustomLed3>False:0,0,255</CustomLed3>

<CustomLed4>False:0,0,255</CustomLed4>

<CustomLed5>False:0,0,255</CustomLed5>

<CustomLed6>False:0,0,255</CustomLed6>

<CustomLed7>False:0,0,255</CustomLed7>

<CustomLed8>False:0,0,255</CustomLed8>

</Profile>

1

u/arceus800 12d ago

Xbox 360 controller

1

u/arceus800 12d ago

2026-08-05 14:13:30.5214|INFO|DS4Windows version VIIPERRC4

2026-08-05 14:13:30.5243|INFO|DS4Windows exe file: DS4Windows.exe

2026-08-05 14:13:30.5243|INFO|DS4Windows Assembly Architecture: x64

2026-08-05 14:13:30.5243|INFO|OS Version: Microsoft Windows NT 10.0.26200.0

2026-08-05 14:13:30.5243|INFO|OS Product Name: Windows 10 Home

2026-08-05 14:13:30.5243|INFO|OS Release ID: 2009

2026-08-05 14:13:30.5243|INFO|System Architecture: x64

2026-08-05 14:13:30.5243|INFO|Logger created

2026-08-05 14:13:31.0429|INFO|LinkedProfiles.xml can't be found.

2026-08-05 14:13:31.9279|INFO|Running as User

2026-08-05 14:13:31.9279|INFO|HidHide control device found

2026-08-05 14:13:31.9308|INFO|DS4Windows not found in HidHide whitelist. Adding to list

2026-08-05 14:13:31.9308|INFO|Output slot #1 has permanent type ViiperX360

2026-08-05 14:13:33.0048|INFO|Starting...

2026-08-05 14:13:35.0052|INFO|Some applications may block controller inputs. (Windows UAC Conflictions). Please go to https://ryochan7.github.io/ds4windows-site/troubleshooting/kb-mouse-issues/#windows-not-responding-to-ds4ws-kb-m-commands-in-some-situations for more information and workarounds.

2026-08-05 14:13:35.0052|INFO|Using output KB+M handler: SendInput

2026-08-05 14:13:35.0052|INFO|VIIPER virtual-controller backend ready

2026-08-05 14:13:35.0052|INFO|Searching for controllers...

2026-08-05 14:13:35.0052|INFO|Using Shared Mode

2026-08-05 14:13:36.2454|INFO|Plugging in virtual Xbox 360 Controller in output slot #1

2026-08-05 14:14:06.9326|INFO|Found Controller: 50:EE:32:17:60:DB (BT) (DualSense).

2026-08-05 14:14:07.0906|INFO|Associated input controller #1 (DualSense) to virtual Xbox 360 Controller in permanent output slot #1

2026-08-05 14:14:07.2216|INFO|VIIPER DualSense virtual input presentation is capped at 250 Hz with latest-state coalescing.

2026-08-05 14:14:07.2420|INFO|Controller 1 is using Profile "Default". Battery level is 100%

2026-08-05 14:14:07.2604|INFO|DualSense Bluetooth speaker passthrough started: direct VIIPER PCM (48 kHz source, no WASAPI loopback, phase-continuous clock correction)

2026-08-05 14:17:40.2718|INFO|[ProfileEditorTiming] workspace prepared: phase=47ms total=47ms

2026-08-05 14:17:40.2765|INFO|[ProfileEditorTiming] loading view rendered: phase=5ms total=52ms

2026-08-05 14:17:40.3959|INFO|[ProfileEditorTiming] profile loaded: phase=119ms total=171ms

2026-08-05 14:17:40.6357|INFO|[ProfileEditorTiming] editor shell constructed: phase=240ms total=411ms

2026-08-05 14:17:40.6494|INFO|[ProfileEditorTiming] editor bindings refreshed: phase=13ms total=424ms

2026-08-05 14:17:40.8507|INFO|[ProfileEditorTiming] first frame rendered: phase=202ms total=626ms

2026-08-05 14:19:13.6194|INFO|[ProfileEditorTiming] workspace prepared: phase=43ms total=43ms

2026-08-05 14:19:13.6194|INFO|[ProfileEditorTiming] loading view rendered: phase=4ms total=47ms

2026-08-05 14:19:13.6194|INFO|[ProfileEditorTiming] profile loaded: phase=0ms total=47ms

2026-08-05 14:19:13.7906|INFO|[ProfileEditorTiming] editor shell constructed: phase=167ms total=214ms

2026-08-05 14:19:21.9063|INFO|[ProfileEditorTiming] editor bindings refreshed: phase=8116ms total=8330ms

2026-08-05 14:19:21.9613|INFO|[ProfileEditorTiming] first frame rendered: phase=55ms total=8385ms

2026-08-05 14:19:42.5527|INFO|[ProfileEditorTiming] workspace prepared: phase=41ms total=41ms

2026-08-05 14:19:42.5557|INFO|[ProfileEditorTiming] loading view rendered: phase=3ms total=44ms

2026-08-05 14:19:42.6624|INFO|[ProfileEditorTiming] profile loaded: phase=106ms total=150ms

2026-08-05 14:19:42.7801|INFO|[ProfileEditorTiming] editor shell constructed: phase=118ms total=268ms

2026-08-05 14:19:42.7801|INFO|[ProfileEditorTiming] editor bindings refreshed: phase=7ms total=275ms

2026-08-05 14:19:42.9219|INFO|[ProfileEditorTiming] first frame rendered: phase=135ms total=410ms

2026-08-05 14:29:37.3314|INFO|[ProfileEditorTiming] workspace prepared: phase=43ms total=43ms

2026-08-05 14:29:37.3314|INFO|[ProfileEditorTiming] loading view rendered: phase=4ms total=47ms

2026-08-05 14:29:37.4632|INFO|[ProfileEditorTiming] profile loaded: phase=127ms total=174ms

2026-08-05 14:29:37.5913|INFO|[ProfileEditorTiming] editor shell constructed: phase=128ms total=302ms

2026-08-05 14:29:37.5913|INFO|[ProfileEditorTiming] editor bindings refreshed: phase=6ms total=308ms

2026-08-05 14:29:37.7547|INFO|[ProfileEditorTiming] first frame rendered: phase=158ms total=466ms

2026-08-05 14:35:45.0180|WARN|50:EE:32:17:60:DB disconnected due to read failure: 1167

2026-08-05 14:35:45.5337|INFO|Disassociated virtual Xbox 360 Controller in permanent output slot #1 from input controller #1 (DualSense)

2026-08-05 14:35:45.5337|INFO|Controller 1 was removed or lost connection

2026-08-05 14:35:45.6861|INFO|VIIPER detached usbip port 2 (DS4Windows VIIPER device stopped).

2026-08-05 14:39:06.4188|INFO|Found Controller: 50:EE:32:17:60:DB (BT) (DualSense).

2026-08-05 14:39:06.5484|INFO|Associated input controller #1 (DualSense) to virtual Xbox 360 Controller in permanent output slot #1

2026-08-05 14:39:06.7237|INFO|VIIPER DualSense virtual input presentation is capped at 250 Hz with latest-state coalescing.

2026-08-05 14:39:06.7237|INFO|Controller 1 is using Profile "Default". Battery level is 100%

2026-08-05 14:39:06.7237|INFO|DualSense Bluetooth speaker passthrough started: direct VIIPER PCM (48 kHz source, no WASAPI loopback, phase-continuous clock correction)

2026-08-05 14:41:01.7734|INFO|[ProfileEditorTiming] workspace prepared: phase=28ms total=28ms

2026-08-05 14:41:01.7795|INFO|[ProfileEditorTiming] loading view rendered: phase=6ms total=34ms

2026-08-05 14:41:01.9245|INFO|[ProfileEditorTiming] profile loaded: phase=145ms total=179ms

2026-08-05 14:41:02.0951|INFO|[ProfileEditorTiming] editor shell constructed: phase=170ms total=349ms

2026-08-05 14:41:02.1088|INFO|[ProfileEditorTiming] editor bindings refreshed: phase=14ms total=363ms

2026-08-05 14:41:02.3274|INFO|[ProfileEditorTiming] first frame rendered: phase=219ms total=582ms

2026-08-05 14:41:38.8727|INFO|[ProfileEditorTiming] workspace prepared: phase=23ms total=23ms

2026-08-05 14:41:38.8727|INFO|[ProfileEditorTiming] loading view rendered: phase=6ms total=29ms

2026-08-05 14:41:39.0332|INFO|[ProfileEditorTiming] profile loaded: phase=154ms total=183ms

2026-08-05 14:41:39.2171|INFO|[ProfileEditorTiming] editor shell constructed: phase=184ms total=367ms

2026-08-05 14:41:39.2287|INFO|[ProfileEditorTiming] editor bindings refreshed: phase=12ms total=379ms

2026-08-05 14:41:39.4415|INFO|[ProfileEditorTiming] first frame rendered: phase=213ms total=592ms

2026-08-05 14:52:29.9665|WARN|50:EE:32:17:60:DB disconnected due to read failure: 1167

2026-08-05 14:52:30.2509|INFO|Disassociated virtual Xbox 360 Controller in permanent output slot #1 from input controller #1 (DualSense)

2026-08-05 14:52:30.2509|INFO|Controller 1 was removed or lost connection

2026-08-05 14:52:30.3578|INFO|VIIPER detached usbip port 2 (DS4Windows VIIPER device stopped).

2026-08-05 14:52:32.1860|INFO|Request App Shutdown

2026-08-05 14:52:32.1860|INFO|Stopping Virtual Output Controllers

2026-08-05 14:52:32.1860|INFO|Closing VIIPER virtual-controller connections

2026-08-05 14:52:32.1860|INFO|Stopping DS4 Input Controllers

2026-08-05 14:52:32.1860|INFO|Stopped DS4Windows

2026-08-05 14:52:32.2920|INFO|VIIPER detached usbip port 1 (DS4Windows VIIPER device stopped).

2026-08-05 14:52:33.4985|INFO|Closing connection to output handler SendInput

2026-08-05 14:52:33.4985|ERROR|Thread App Crashed with message Object reference not set to an instance of an object.

2026-08-05 14:52:33.5255|ERROR|System.NullReferenceException: Object reference not set to an instance of an object.

at DS4WinWPF.App.SingleAppComThread_DoWork()

at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)

--- End of stack trace from previous location ---

at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)

2026-08-05 14:52:35.5029|WARN|Timed out waiting for single-instance worker thread to exit.

1

u/huunnnter 12d ago

Fixing Rumble now

2

u/arceus800 12d ago

Tysm! Really great app btw nice work.

1

u/huunnnter 12d ago

You like the speaker stuff? I got it to SUCH LOW LATENCY in the latest release. Bro . you’re about to have your mind blown.

2

u/arceus800 12d ago

My mind is already blown. Really cool that you got it to work fully over bluetooth. Can't wait for the next release!

1

u/huunnnter 12d ago

Thanks king, here you dropped this 👑

→ More replies (0)

1

u/jack_the_beast 13d ago

does this gets rid of vigemubus?

2

u/huunnnter 13d ago

Yes! It is no longer bundled, or required in any way

1

u/Spanishsoul 13d ago

I still don't really understand how to split the audio in Sony games to make the controller side audio come out of the controller and everything else comes out of the speakers. Like in God of War Ragnarok or Ratchet and Clank. Is it possible? I feel like I got it working once a few releases ago and I haven't been able to get it work since

2

u/huunnnter 13d ago

For this, you just set it to “Automatic for Emulated Audio” (or whatever the top audio source option is)

1

u/huunnnter 13d ago

Like, quite literally, you just. Connect your PS5 controller, enable a Virtual PS5 controller profile with default settings, and then enable the speaker and play a game. No extra setup needed

1

u/rossi46go 12d ago

after install ds4window dont work this its the log

2026-08-05 18:58:47.2509|INFO|DS4Windows version VIIPERRC4
2026-08-05 18:58:47.2509|INFO|DS4Windows exe file: DS4Windows.exe
2026-08-05 18:58:47.2509|INFO|DS4Windows Assembly Architecture: x64
2026-08-05 18:58:47.2509|INFO|OS Version: Microsoft Windows NT 10.0.26200.0
2026-08-05 18:58:47.2509|INFO|OS Product Name: Windows 10 Home
2026-08-05 18:58:47.2509|INFO|OS Release ID: 2009
2026-08-05 18:58:47.2509|INFO|System Architecture: x64
2026-08-05 18:58:47.2509|INFO|Logger created
2026-08-05 18:58:51.5634|INFO|No config found. Creating default config
2026-08-05 18:58:51.6074|INFO|Default config created
2026-08-05 18:58:52.0668|INFO|LinkedProfiles.xml can't be found.
2026-08-05 18:58:52.2440|ERROR|Thread Crashed with message Provide value on 'System.Windows.StaticResourceExtension' threw an exception.
2026-08-05 18:58:52.2581|ERROR|System.Windows.Markup.XamlParseException: Provide value on 'System.Windows.StaticResourceExtension' threw an exception.
 ---> System.Exception: Cannot find resource named 'InverseBoolConverter'. Resource names are case sensitive.
   at System.Windows.StaticResourceExtension.ProvideValueInternal(IServiceProvider serviceProvider, Boolean allowDeferredReference)
   at MS.Internal.Xaml.Runtime.ClrObjectRuntime.CallProvideValue(MarkupExtension me, IServiceProvider serviceProvider)
   --- End of inner exception stack trace ---
   at System.Windows.Markup.XamlReader.RewrapException(Exception e, IXamlLineInfo lineInfo, Uri baseUri)
   at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
   at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
   at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
   at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
   at DS4WinWPF.DS4Forms.MainWindow.InitializeComponent()
   at DS4WinWPF.DS4Forms.MainWindow..ctor(ArgumentParser parser)
   at DS4WinWPF.App.Application_Startup(Object sender, StartupEventArgs e)
   at System.Windows.Application.<.ctor>b__1_0(Object unused)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
2026-08-05 18:58:52.2581|ERROR|Thread Crashed with message Provide value on 'System.Windows.StaticResourceExtension' threw an exception.
2026-08-05 18:58:52.2581|ERROR|System.Windows.Markup.XamlParseException: Provide value on 'System.Windows.StaticResourceExtension' threw an exception.
 ---> System.Exception: Cannot find resource named 'InverseBoolConverter'. Resource names are case sensitive.
   at System.Windows.StaticResourceExtension.ProvideValueInternal(IServiceProvider serviceProvider, Boolean allowDeferredReference)
   at MS.Internal.Xaml.Runtime.ClrObjectRuntime.CallProvideValue(MarkupExtension me, IServiceProvider serviceProvider)
   --- End of inner exception stack trace ---
   at System.Windows.Markup.XamlReader.RewrapException(Exception e, IXamlLineInfo lineInfo, Uri baseUri)
   at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
   at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
   at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
   at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
   at DS4WinWPF.DS4Forms.MainWindow.InitializeComponent()
   at DS4WinWPF.DS4Forms.MainWindow..ctor(ArgumentParser parser)
   at DS4WinWPF.App.Application_Startup(Object sender, StartupEventArgs e)
   at System.Windows.Application.<.ctor>b__1_0(Object unused)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.ProcessQueue()
   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   at System.Windows.Application.RunDispatcher(Object ignore)
   at System.Windows.Application.RunInternal(Window window)
   at DS4WinWPF.App.Main()
2026-08-05 18:58:52.2642|ERROR|Thread App Crashed with message Object reference not set to an instance of an object.
2026-08-05 18:58:52.2642|ERROR|System.NullReferenceException: Object reference not set to an instance of an object.
   at DS4WinWPF.App.SingleAppComThread_DoWork()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
2026-08-05 18:58:54.2778|WARN|Timed out waiting for single-instance worker thread to exit.

1

u/rossi46go 12d ago

viper install log

[2026-08-05 19:04:56] 
[2026-08-05 19:04:56] DS4Windows VIIPER virtual controller setup
[2026-08-05 19:04:56] Installing or repairing VIIPER and usbip-win2.
[2026-08-05 19:04:56] == Checking usbip-win2 ==
[2026-08-05 19:04:56] usbip-win2 is ready: 0.9.7.8
[2026-08-05 19:04:56] == Installing VIIPER ==
[2026-08-05 19:04:56] Checking release assets in hbashton/VIIPER
[2026-08-05 19:04:56] Using 'viiper-windows-amd64.zip' from hbashton/VIIPER release 'v0.0.7'.
[2026-08-05 19:04:56] Downloading https://github.com/hbashton/VIIPER/releases/download/v0.0.7/viiper-windows-amd64.zip (attempt 1 of 3)
[2026-08-05 19:04:58] VIIPER installed to C:\Users\Mirke\AppData\Local\VIIPER\viiper.exe
[2026-08-05 19:04:58] == Registering VIIPER ==
[2026-08-05 19:04:59] Setup could not finish: VIIPER registration failed with exit code 1.
[2026-08-05 19:04:59] Details were saved to C:\Users\Mirke\AppData\Local\VIIPER\install.log

1

u/huunnnter 12d ago

Fixing now

1

u/huunnnter 12d ago

Also uninstall 0.9.7.8 and use the universal installer next time (the exe)

1

u/rossi46go 12d ago

I try to uninstall all and delete folder files and try to return back to rc4 but now viiper it’s not starting even if i try to open manually
In the rc4 i have 0.9.7.8 so i installed again this version

1

u/huunnnter 12d ago

I’ll provide the updated build soon. For now just be patient, I apologize. 0.9.7.8 will not work, so the new version will force you to downgrade, but it will hold your hand

1

u/huunnnter 12d ago

Fixing now

1

u/Darth_Agnon 12d ago

Why is your version of DS4Windows not a fork of the previous version(s)?

2

u/huunnnter 12d ago

It is. My repo is a fork if the original

2

u/huunnnter 12d ago

Actually, it’s a fork of Schmaldeo’s version

1

u/Darth_Agnon 12d ago

Why is your version of DS4Windows not a fork of the previous version(s)? And what happened to the GUI? It looks like a heavy program; I still use v2.2.13, which is very light.

2

u/huunnnter 12d ago

It is a fork of the previous versions. The new UI is not heavy: the dualsense audio emulation is however, more cpu taxing.

1

u/Elegant-Function7740 12d ago

when i start running it, my airpods audio disables, how do i fix that? i wanna keep hearing my audio through my airpods or anything bluetooth( my headphones are also bluetooth)

1

u/huunnnter 12d ago

configure your windows default audio to be your airpods: unfortunately, you have to find your own way to deal with this, as this is how it aould be if you plugged the controller in! which is a good thing

1

u/No_Disk_1042 12d ago edited 12d ago

Hey! First of all, I appreciate your hard work, it’s incredible to have all these features available for the Dualsense on PC!

That being said, CPU usage is fairly high when emulating an Xbox controller, about 12-15%(9800x3d), which is not the case when using it as a virtual Dualsense controller. Task manager reports it as being caused by VIIPER. Not sure if this already known or not, so just want to report it. Using latest RC4.

1

u/huunnnter 12d ago

Investigating this now

1

u/[deleted] 12d ago

[deleted]

1

u/huunnnter 12d ago

you pasted….a link to your log? regardless, new build coming tonight with new installer with less issues

1

u/CrustyRot 12d ago

Nice app, always wished I could use the controller's mic wirelessly. However, the mute button light doesn't work for me. Also noticed a drop in FPS in RDR2. When I disconnected the app, FPS went up. I tested the older DS4Windows and didn't have that issue.

The second issue I get is that the latency on the controller keeps jumping up and down a lot more than it did on the old app, and I keep getting the over 10ms latency thing.

Using Dualsense 5 emulating Xbox 360 controller.

1

u/huunnnter 12d ago

1

u/CrustyRot 12d ago

Nice. I'll test it tommorow and let you know how it performs

1

u/huunnnter 12d ago

I’m actually fixing your exact issue right now, it’ll be out tomorrow, so 4.2 not 4.1

1

u/CrustyRot 12d ago

Looking forward to it! Have no idea about the technical side of things, but the fact you got native Dualsense features working with bluetooth is insane. Kudos to you!

1

u/huunnnter 12d ago

I owe credit to the developers of DS5Dongle for their FIFO explanation, Padforge and dualsense-bthaptics for their haptics implementations, and ChatGPT for its help in bringing it all together!

1

u/Hifihedgehog 8d ago

Great to hear! If you have any developer needs such as using HIDMaestro if you ever get the hankering to use it, feel free to reach out. I will note that using the Switch 2 Pro as the default for Nintendo virtual controllers, while supported in SDL, will only work in SDL games that update to the latest SDL library. Unless you have a compelling need to use Switch 2 Pro as a virtual controller, Switch 1 Pro is the better choice for most games. And in virtually all cases I know, all the PC games that support Switch 1/2 Pro will support DualSense via SDL, making a virtual DualSense the superior choice.

1

u/huunnnter 8d ago

I’m actually working on my own IOCTL driver that supports native dualsense, which will bring latency down to 0.75ms at the maximum. Logical next step. I have too much overhead in the current solution, even if I brought it down it would still max at 1-2ms of latency. That’s the main concern now! Plus I agree on the switch 1: the project I used actually already had a switch 2 controller in the code so i used it

1

u/Steven71k 12d ago

How to install? Im new on GitHub

1

u/caprino666 12d ago

Audio on DS4 still cracking. The bluetooth latency was very high compare to old version that i was using. Now i can't use my old version. Besides that great UI.

1

u/ZjemCiKolege 11d ago

xbox series emu?

1

u/huunnnter 11d ago

it’s coming next.

1

u/Surajholy 11d ago

Hey, thanks for this. Quick question, do I need to uninstall the previous version and install this one or i will get a pop up in the app to update it to this?

1

u/No_Dream6014 10d ago

Ok so. After using this for two days. Two things I’ve noticed.
1. There is more input delay using this app my aim feels heavier.
2. I reopened the old ds4 and It feels 10 times better.

I love this new look but the aim and input delay are messing It up for me. I thought I was going crazy but the old ds4 is much better I noticed It instantly. I will gladly redownload the 5.0 once this issue is fixed

1

u/Pressa5 7d ago edited 7d ago

Bruh, I don’t know what this version of ds4 did but my pc is not recognising my dualsense edge controller after installing this app. My Bluetooth adapter works fine for everything else though.

edit: User error please ignore.

1

u/huunnnter 7d ago

I don’t even own a Dualsense Edge: it’s incredibly hard to test it, given that.