Skip to content

VIIPERRC4.4: Bluetooth DS4 rumble and lightbar fail when effect writes bypass the control pipe #84

Description

@anagnorisis2peripeteia

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

  1. Install VIIPERRC4.4.
  2. Connect a DS4 controller through Bluetooth.
  3. Leave Copycat=False.
  4. Select an Xbox 360 virtual output profile.
  5. Set a visible profile lightbar colour.
  6. Trigger controller rumble from a game.
  7. Observe that normal input and the virtual controller work.
  8. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions