Skip to content

Input: xpad - add Turtle Beach Stealth Ultra wireless dongle (10f5:7070)#364

Open
KallistoX wants to merge 1 commit into
paroj:masterfrom
KallistoX:add-stealth-ultra-wireless
Open

Input: xpad - add Turtle Beach Stealth Ultra wireless dongle (10f5:7070)#364
KallistoX wants to merge 1 commit into
paroj:masterfrom
KallistoX:add-stealth-ultra-wireless

Conversation

@KallistoX
Copy link
Copy Markdown

What

Adds the USB ID for the wireless dongle (0x7070) of the Turtle Beach Stealth Ultra controller.

Why

Without this entry, the dongle is matched only via the vendor wildcard but no device-specific quirks apply. Result: the device enumerates and xpad creates an input node, but no input events flow and the controller auto-powers off after ~10s.

How tested

  • Hardware: Turtle Beach Stealth Ultra (FW 1.06) + bundled dongle
  • Kernel: 7.0.10 on CachyOS (x86_64)
  • Before patch: dmesg shows input: Generic X-Box pad, jstest shows device but no events, controller times out after 10s.
  • After patch: dmesg shows the GIP subsystem path (/gip0/gip0.0/input/...), all sticks/triggers/buttons (incl. share) work in jstest and KDE's controller test, no auto-off.

Note on context

paroj/xpad master is currently behind torvalds mainline - both 0x7008 and 0x7073 (the wired Stealth Ultra Controller, merged for 6.15) are missing here. I placed the new entry in PID order after 0x7005; happy to rebase/reorder if you prefer to sync 7008/7073 from mainline first.

Related

Same pattern as the older Stealth Pivot request in #353 - TB's third-party dongles expose a separate PID for the wireless side that isn't covered by the vendor wildcard's device-specific handling.

The Turtle Beach Stealth Ultra controller exposes two different USB
product IDs depending on connection mode:

  0x7073: controller connected directly via USB-C (in mainline since 6.15)
  0x7070: controller connected wirelessly through the bundled 2.4 GHz
          dongle

Without an entry in xpad_device[], the device is only matched via the
XPAD_XBOXONE_VENDOR(0x10f5) wildcard. xpad binds and creates an input
node ("Generic X-Box pad"), but with no device-specific mapping the
proper XBOXONE/GIP handling does not engage: no input events ever
arrive and the controller auto-powers off after ~10s because it never
sees a valid host handshake.

Adding the entry with MAP_SHARE_BUTTON | XTYPE_XBOXONE (mirroring the
existing wired 0x7073 entry in mainline) lets xpad probe it via the
GIP subsystem. The dongle is transparent and accepts the standard
XBOXONE init - inputs flow correctly and the controller stays
connected.

Tested on Linux 7.0.10 with the bundled Turtle Beach dongle and a
Stealth Ultra controller. Sticks, triggers, all buttons (including
share) verified working via jstest and KDE's controller test page.

Signed-off-by: Dominic Bussemas <dominic@bussemas.me>
@KallistoX
Copy link
Copy Markdown
Author

For the record: this PR continues from @endrift's 0x7073 wired support that shipped in kernel 6.15 (https://lore.kernel.org/r/20250513225950.2719387-1-vi@endrift.com). I'll be sending this 0x7070 wireless dongle entry to the linux-input mailing list this week for proper mainline merge.

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.

1 participant