Skip to content

Feature Request: Native Gamepad layout for 8BitDo Ultimate 2 Wireless Controller (VID 0x2DC8, PID 0x6012) #2483

Description

@GatorDawg100

Summary

The 8BitDo Ultimate 2 Wireless Controller is a popular third-party gamepad that supports both 2.4GHz USB Dongle and direct Bluetooth wireless connectivity.

On macOS (and other platforms), when connected in D-Input / Wireless mode (Vendor ID: 0x2DC8, Product ID: 0x6012), Unity's New Input System (com.unity.inputsystem) treats the device as an unconfigured generic InputDevice rather than instantiating a Gamepad instance.

Because games relying on Gamepad.current or Gamepad.all (such as Valheim) strictly query devices typed as Gamepad, this controller is completely unrecognized in-game unless users switch to Nintendo Switch mode (which sacrifices analog triggers and turns them into digital buttons).

Device Information

  • Manufacturer: 8BitDo
  • Product Name: 8BitDo Ultimate 2 Wireless
  • Vendor ID: 0x2DC8 (11720)
  • Product ID: 0x6012 (24594)
  • Interface: HID (USB 2.4GHz adapter and macOS Bluetooth HID)
  • Report ID: 0x01 (34 bytes input report)

Verified HID Input Report Layout (Report ID 1 - 34 bytes)

We have reverse-engineered, tested, and verified the exact packet layout:

  • Offset 0: Report ID (0x01)
  • Offset 1: D-Pad Hat Switch (0=Up, 1=UpRight, 2=Right, 3=DownRight, 4=Down, 5=DownLeft, 6=Left, 7=UpLeft, 15=Neutral)
  • Offset 2: Left Stick X (0..255, center 128)
  • Offset 3: Left Stick Y (0..255, center 128, inverted)
  • Offset 4: Right Stick X (0..255, center 128)
  • Offset 5: Right Stick Y (0..255, center 128, inverted)
  • Offset 6: Face buttons & Bumpers (bitmask):
    • Bit 0: South (A)
    • Bit 1: East (B)
    • Bit 3: West (X)
    • Bit 4: North (Y)
    • Bit 6: Left Shoulder (LB)
    • Bit 7: Right Shoulder (RB)
  • Offset 7: System & Thumbstick Clicks (bitmask):
    • Bit 2: Select / Back
    • Bit 3: Start
    • Bit 4: Home / Guide
    • Bit 5: Left Stick Click (L3)
    • Bit 6: Right Stick Click (R3)
  • Offset 8: Left Trigger Analog (0..255, continuous continuous travel)
  • Offset 9: Right Trigger Analog (0..255, continuous continuous travel)
  • Offset 10: Back Paddles:
    • Bit 0: Paddle M1 (Grip)
    • Bit 1: Paddle M2 (Grip)

Proposed Implementation

Adding a layout definition such as:

InputSystem.RegisterLayout<EightBitDoUltimate2Gamepad>(
    "8BitDoUltimate2Wireless",
    matches: new InputDeviceMatcher()
        .WithInterface("HID")
        .WithCapability("vendorId", 0x2dc8)
        .WithCapability("productId", 0x6012)
);

InputSystem.RegisterLayoutMatcher(
    "8BitDoUltimate2Wireless",
    new InputDeviceMatcher()
        .WithProduct("8BitDo Ultimate 2 Wireless")
);

We have confirmed this layout works with 100% fidelity, zero latency, and full analog trigger sensitivity in Unity runtime.

Adding this built-in layout to com.unity.inputsystem will allow all Unity games on macOS (and other desktop platforms) to support this controller natively without requiring custom mods or workarounds.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions