Open Bug 2082306 Opened 18 days ago Updated 10 days ago

Support the Nintendo Switch Pro controller over Bluetooth in the Gamepad API

Categories

(Core :: DOM: Device Interfaces, defect)

defect

Tracking

()

People

(Reporter: jstutte, Unassigned, NeedInfo)

References

(Blocks 1 open bug)

Details

(Keywords: webcompat:platform-bug)

User Story

user-impact-score:1000

The Nintendo Switch Pro controller (057e:2009) does not work correctly with the Gamepad API when connected over Bluetooth:

  • macOS: the controller does not work at all.
  • Windows 11: buttons work, but the D-pad and both analog sticks report no input.

Bug 1704419 (fixed in 155) made the controller work over USB on Windows by parsing its 0x30 full input report by hand in WindowsGamepadService::ParseSwitchProReport, because the HID report descriptor does not describe that report. That parsing only covers USB. Over Bluetooth the controller sends a different report (the simple 0x3F report unless the host switches it to full-report mode with a subcommand), which is not handled.

On macOS the controller goes through the IOKit HID path and SwitchProRemapper in GamepadRemapping.cpp, and nothing reaches the page over Bluetooth.

Expected: over Bluetooth on both platforms, the controller shows up with mapping == "standard", and all buttons, the D-pad and both sticks report correctly, matching USB on Windows and Chrome's behavior.

Possible approaches:

  • Windows: switch the controller to full-report mode over Bluetooth and reuse ParseSwitchProReport, or handle the 0x3F report.
  • macOS: check whether the GameController framework exposes the controller as a GCExtendedGamepad (it supports Switch Pro controllers), similar to the Xbox approach in bug 2049139.

Related: bug 1804814 (wrong readings and a page crash with a Switch Pro controller).

User Story: (updated)

The severity field is not set for this bug.
:cmartin, could you have a look please?

For more information, please visit BugBot documentation.

Flags: needinfo?(cmartin)
You need to log in before you can comment on or make changes to this bug.