Describe the bug
VIIPERRC4.4 accepts input from Bluetooth DS4 controllers, but rumble and profile lightbar output do not work.
The intended setting for these controllers is Copycat=False.
With that setting, IsGenuineBluetoothDualShock4() selects WriteOutputReportViaSharedOverlapped. This bypasses the control-pipe output path that works on the tested controllers.
To Reproduce
- Install
VIIPERRC4.4.
- Connect a DS4 controller through Bluetooth.
- Leave
Copycat=False.
- Select an Xbox 360 virtual output profile.
- Set a visible profile lightbar colour.
- Trigger controller rumble from a game.
- Observe that normal input and the virtual controller work.
- Observe that rumble and lightbar output do not work.
Expected behavior
Bluetooth DS4 rumble and lightbar output must work with the intended Copycat=False setting.
Screenshots and Logs
No error is logged when the effect reports fail.
The release contains these Bluetooth branches in both WriteOutput(byte[]) and writeOutput():
if (IsGenuineBluetoothDualShock4())
return hDevice.WriteOutputReportViaSharedOverlapped(...);
if (nativeOptionsStore != null && nativeOptionsStore.IsCopyCat)
return hDevice.WriteOutputReportViaInterrupt(...);
return hDevice.WriteOutputReportViaControl(...);
With Copycat=False, the genuine-controller branch selects the shared-overlapped path.
A local diagnostic build removed both Bluetooth effect special cases. It routed Bluetooth effects through WriteOutputReportViaControl.
That build restored rumble and lightbar output on both controllers.
git blame attributes the shared-overlapped branch to 1caf5ee7.
Desktop:
- Controller: two Bluetooth DS4 controllers; Windows reports Sony VID
054C
- Connection: Bluetooth through a TP-Link USB adapter
- OS: Windows NT
10.0.26200.0
- DS4Windows:
VIIPERRC4.4, tag 4d41a61
Additional context
Copycat=True was used temporarily during diagnosis. It is not the intended configuration or a requirement for this reproduction.
The issue is the Bluetooth effect-report transport selection. It is not a request to require copycat mode.
Describe the bug
VIIPERRC4.4accepts input from Bluetooth DS4 controllers, but rumble and profile lightbar output do not work.The intended setting for these controllers is
Copycat=False.With that setting,
IsGenuineBluetoothDualShock4()selectsWriteOutputReportViaSharedOverlapped. This bypasses the control-pipe output path that works on the tested controllers.To Reproduce
VIIPERRC4.4.Copycat=False.Expected behavior
Bluetooth DS4 rumble and lightbar output must work with the intended
Copycat=Falsesetting.Screenshots and Logs
No error is logged when the effect reports fail.
The release contains these Bluetooth branches in both
WriteOutput(byte[])andwriteOutput():With
Copycat=False, the genuine-controller branch selects the shared-overlapped path.A local diagnostic build removed both Bluetooth effect special cases. It routed Bluetooth effects through
WriteOutputReportViaControl.That build restored rumble and lightbar output on both controllers.
git blameattributes the shared-overlapped branch to1caf5ee7.Desktop:
054C10.0.26200.0VIIPERRC4.4, tag4d41a61Additional context
Copycat=Truewas used temporarily during diagnosis. It is not the intended configuration or a requirement for this reproduction.The issue is the Bluetooth effect-report transport selection. It is not a request to require copycat mode.