New issue
Advanced search Search tips

Issue 773048 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Oct 2017
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 3
Type: Bug



Sign in to add a comment

Xbox One gamepads not recognized on OSX

Project Member Reported by mattreynolds@chromium.org, Oct 9 2017

Issue description

Chrome Version: 61.0.3163.100 (Official Build) (64-bit)
OS: OS X 10.12.6

What steps will reproduce the problem?
(0) Open html5gamepad.com
(1) Connect an Xbox One S gamepad over USB
(2) Press a button on the gamepad

What is the expected result?

The gamepad should be recognized and its button/axis state displayed.

What happens instead?

No gamepad is recognized.
 
We fail to recognize the newer model of Xbox One S gamepad because its product ID is missing from XboxDataFetcher.
It looks like we're also failing to initialize newer Xbox One S gamepads properly. Older models of this gamepad could be initialized with a two-byte initialization packet, but newer models require a five-byte initialization packet. I don't know what the function of the additional bytes is.

Old init: 0x05 0x20
New init: 0x05 0x20 0x00 0x01 0x00
Project Member

Comment 3 by bugdroid1@chromium.org, Oct 12 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/99f2c57cf39521324b2d9056616940883d0be820

commit 99f2c57cf39521324b2d9056616940883d0be820
Author: Matt Reynolds <mattreynolds@google.com>
Date: Thu Oct 12 22:11:42 2017

Add product IDs for Xbox One gamepads on Mac

In Chrome for Mac, when Xbox gamepads are connected over USB but no
driver is installed, Chrome uses an internal driver to read button
and axis data from the gamepads. The internal driver recognizes
product and vendor IDs for the Xbox 360 USB gamepad and Xbox One
gamepad (2013 version), but fails to recognize the newer Xbox One
2015 version or One S gamepads because they advertise different
product IDs.

This CL adds these product IDs so the gamepads can be used in Chrome
even when a driver is not installed. It also modifies the Xbox One
initialization packet so it functions correctly with newer Xbox One
gamepads (older gamepads are unaffected).

And one more unrelated fix: the Product and Vendor ID fields were
reversed when creating the gamepad ID string for Xbox controllers.

BUG= 773048 

Change-Id: I589ab71f54b43d8f873efb3abc349ed7dc0ba6dc
Reviewed-on: https://chromium-review.googlesource.com/707821
Commit-Queue: Matt Reynolds <mattreynolds@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
Cr-Commit-Position: refs/heads/master@{#508499}
[modify] https://crrev.com/99f2c57cf39521324b2d9056616940883d0be820/device/gamepad/xbox_data_fetcher_mac.h
[modify] https://crrev.com/99f2c57cf39521324b2d9056616940883d0be820/device/gamepad/xbox_data_fetcher_mac.mm

Status: Available (was: Started)
Summary: Xbox One gamepads not recognized on OSX (was: Xbox One S gamepad (USB) not recognized on OSX)
Prior to this change, we recognized these Xbox gamepads connected over USB:

Xbox 360 wired controller 045e:028e
Xbox One controller (2013 version) 045e:02d1

The above CL adds support for two more Xbox One gamepads:

Xbox One controller (2015 version) 045e:02dd
Xbox One S controller 045e:02ea

I'm leaving this open because we still don't recognize the Xbox One Elite or any USB dongles for attaching wireless Xbox gamepads.

Xbox One Elite 045e:02e3
Xbox 360 Wireless Receiver for Windows 045e:0291
Xbox 360 Wireless Receiver for Windows 045e:02a1
Wireless XBox Controller Dongle 045e:02e6 (for Xbox One 2013 and 2015 gamepads)
Xbox 360 Wireless Adapter 045e:0719

Labels: TE-NeedsTriageFromMTV
Adding the label 'TE-NeedsTriageFromMTV' as issue needs 'Xbox One S gamepad' device to verify.

Thanks!
Project Member

Comment 6 by bugdroid1@chromium.org, Oct 20 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/89cb80017340ccb8b91a1f168a1aaac38152f52d

commit 89cb80017340ccb8b91a1f168a1aaac38152f52d
Author: Matt Reynolds <mattreynolds@google.com>
Date: Fri Oct 20 00:44:13 2017

Support Xbox One Elite gamepad in XboxDataFetcher (Mac)

This change adds the Xbox One Elite gamepad to the list of devices
recognized by the Xbox data fetcher on Mac. The Elite supports button
remapping, and exposes both the mapped and unmapped state. Chrome will
use the mapped button state, which has the same layout as the normal
Xbox One button state.

BUG= 773048 

Change-Id: I595031b93bf97facd8c66e6ccb227aefd3b99d89
Reviewed-on: https://chromium-review.googlesource.com/726853
Reviewed-by: Brandon Jones <bajones@chromium.org>
Commit-Queue: Matt Reynolds <mattreynolds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#510273}
[modify] https://crrev.com/89cb80017340ccb8b91a1f168a1aaac38152f52d/device/gamepad/xbox_data_fetcher_mac.h
[modify] https://crrev.com/89cb80017340ccb8b91a1f168a1aaac38152f52d/device/gamepad/xbox_data_fetcher_mac.mm

Status: Fixed (was: Available)
Xbox One (and Xbox 360) gamepads should now work on Mac when connected over USB. XboxDataFetcher recognizes these devices:

Xbox 360 wired controller 045e:028e
Xbox One controller (2013 version) 045e:02d1
Xbox One controller (2015 version) 045e:02dd
Xbox One Elite 045e:02e3
Xbox One S controller 045e:02ea

Sign in to add a comment