nefarius / DsHidMini

Virtual HID Mini-user-mode-driver for Sony DualShock 3 Controllers

Home Page:https://docs.nefarius.at/projects/DsHidMini/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Rework device and host MAC address discovery and pairing

nefarius opened this issue · comments

Currently the host (if any) and device MAC addresses are requested on device boot and fails it entirely, if they do not succeed.

This should be converted from a hard error to a "warning" with fallback actions. This would improve the following situations:

  • Fake controllers that are timing-sensitive might start working if we do not or simply send these requests later during runtime
  • We can support aftermarket controllers without MAC address reporting like the Retro Fighters Defender
  • We can add a mechanism to read or re-pair Bluetooth information during runtime instead of once on boot

Fallback actions might be like just generating a random MAC or using a fake static default-MAC and report 00:00:00:00:00:00 for the host address.

One more discovery thanks to ps3 packet captures.

It looks like the console sends the initial output report with the led state over the control endpoint. Subsequent output reports, like rumble, are sent via interrupt out. We should make the driver do exactly that as well, plus cross check with the captures, how much time passes between each request between ps3 and DS3.

The Ep0 report is also slightly shorter and doesn't use a report id.