Skip to content

Add PIDs for Buttonwood Protocol Ltd game controller and wireless receiver - #388

Merged
Spritetm merged 4 commits into
espressif:mainfrom
ButtonwoodProtocol:patch-1
Sep 27, 2026
Merged

Spritetm merged 4 commits into
espressif:mainfrom
ButtonwoodProtocol:patch-1

Conversation

@ButtonwoodProtocol

Copy link
Copy Markdown
Contributor

Company: Buttonwood Protocol Ltd

We would like to request four PIDs, added at the end of allocated-pids.txt in sequential order.
Open pull requests #385 and #387 both currently request 0x83C3, so 0x83C3 and 0x83C4 will
likely go to them; we therefore started from 0x83C5. We are happy to renumber if needed.

0x83C5 - Vision Pro game controller (ESP32-S3)
A USB game controller. Over USB it enumerates as a HID gamepad plus a CDC-ACM serial
interface; our PC companion software uses the serial interface for input telemetry and
configuration. The same device also works over Bluetooth LE.

0x83C6 - Vision Pro game controller, vendor-specific mode (ESP32-S3)
The same controller in an alternative USB configuration: a vendor-specific game controller
interface plus the CDC-ACM serial interface, with Microsoft OS 1.0 descriptors so that
Windows loads its built-in game controller driver without us borrowing another vendor's
VID/PID.

0x83C7 - Vision Pro Wireless USB receiver (ESP32-S3 / ESP32-S2)
A USB receiver for the controller's wireless link (ESP-NOW). In its default mode it
enumerates as a HID gamepad plus a CDC-ACM serial interface; our PC companion software
uses the serial interface to reach the wireless controller through the receiver.

0x83C8 - Vision Pro Wireless USB receiver, vendor-specific mode (ESP32-S3 / ESP32-S2)
The same receiver in its alternative USB configuration: a vendor-specific game controller
interface plus the CDC-ACM serial interface, so that Windows can use its built-in game
controller driver for the wireless controller. It needs its own PID for the same Windows
descriptor-caching reason as 0x83C6.

Why we need our own PIDs instead of the default TinyUSB/Arduino PIDs:

  • The two controller configurations expose different interfaces and different class drivers.
    Windows caches the Microsoft OS descriptor result per VID/PID/bcdDevice, so the
    vendor-specific configuration needs a PID of its own, separate from the HID configuration.
  • Our PC software and firmware updater identify our devices by VID/PID to pick the correct
    serial port and to make sure controller firmware is never flashed onto the receiver. The
    default PIDs are shared by many unrelated boards, so they cannot be used for that.
  • The receiver is a separate device with a different firmware and needs to be distinguishable
    from the controller.

We understand that Espressif may decline this request, and that an allocation does not mean
endorsement of our products.

Added new entries for Buttonwood Protocol Ltd's Vision Pro game controller and wireless USB receiver.
@Spritetm

Copy link
Copy Markdown
Member

Looks like you're good to if you rebase on current main. After you've done that, I'll merge.

@Spritetm

Copy link
Copy Markdown
Member

Looks good, merged!

@Spritetm
Spritetm merged commit cb52230 into espressif:main Sep 27, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants