Skip to content

Improve Virtual Device Spoofing for PlayStation and Other Gamepads #5

@ruffsl

Description

@ruffsl

Summary:
Current virtual device spoofing works for Xbox controllers but does not reliably spoof PlayStation controllers (e.g., DualShock 4). Game launchers like Steam appear to check more than just device name, vendor, and product IDs — possibly including device tree details and the presence of /dev/hidraw* nodes.

Expected Behavior:
Virtual devices spoofed as PlayStation controllers (such as DualShock 4) should be recognized by games and launchers (e.g., Steam) as authentic PlayStation hardware, enabling proper layout recognition and compatibility.

Current Behavior:
Spoofing works for Xbox, but not for PlayStation controllers. Steam and some games do not recognize the virtual device as a PlayStation controller, even when name, vendor, and product IDs are matched. The real DS4 also creates a /dev/hidraw* device, which may be relevant.

Possible Cause:

  • Steam and other software may check for additional device properties, such as:
    • Existence and attributes of /dev/hidraw* nodes
    • Device tree or sysfs properties
    • Report descriptors or other low-level USB/HID details
  • Current spoofing only covers basic uinput parameters and not the full set of device characteristics.

Suggested Solution:

  • Investigate what additional properties or nodes are required for PlayStation controller spoofing (e.g., create matching /dev/hidraw* nodes, set correct report descriptors).
  • Compare sysfs and udev properties between real and virtual devices.
  • Consider using or extending existing libraries/tools for more complete device emulation.

Notes:
Robust spoofing for PlayStation and other vendors would improve game compatibility, avoiding user confusion from mismatched gamepad layout recognition.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions