Linux: Chromium misremaps Xbox Series axes and triggers for virtual 045e:0b13 device
@LizardByte-bot is already working on this.
Since Aug 15, 2026.
Assessment
This issue has not been assessed yet.
Description
Environment
- Host OS: Linux
- Virtual controller provider: libvirtualhid through Sunshine
- Profile: Xbox Series
- Browser: Chromium
- Reported identity:
Sunshine (libvirtualhid) X-Box Series Controller (STANDARD GAMEPAD Vendor: 045e Product: 0b13) - Tester: https://app.lizardbyte.dev/gamepad-tester/
Observed behavior
Chromium applies the following incorrect routes:
- LT controls right-stick X.
- RT controls LT.
- Right-stick Y controls RT.
- Right-stick X controls right-stick Y.
The same controller works correctly in Steam's controller tester. Firefox does not show this axis/trigger routing failure.
Source-level explanation
The Linux uinput backend deliberately presents the Xbox Series profile as Bluetooth 045e:0b13, while emitting canonical Linux/XInput-style axes:
ABS_X,ABS_YABS_RX,ABS_RYABS_Z,ABS_RZ
Chromium selects its physical Xbox Series Bluetooth mapper for 045e:0b13. That mapper expects the physical Bluetooth joydev ordering rather than the ordering produced by the virtual uinput device. The reported four misroutes correspond directly to that mismatch.
Chromium source:
https://chromium.googlesource.com/chromium/src/+/HEAD/device/gamepad/gamepad_standard_mappings_linux.cc
Expected behavior
Chromium should expose standard Gamepad API controls with:
- LT and RT on buttons 6 and 7.
- Right-stick X/Y on axes 2 and 3.
- Share on button 17.
Constraints
Steam compatibility is the priority and currently works. Do not reorder the Linux backend's emitted axes merely to satisfy Chromium without proving Steam and Firefox remain correct. Evaluate a consumer-safe transport identity or an exact browser/tester normalization path. Keep Windows behavior unchanged.
- Dominant language
- C++
- Stars
- 57
- Forks
- 15
- Avg merge
- 11h 15m
- Merged PRs (30d)
- 33
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from LizardByte/libvirtualhid
-
Difficulty 3/5 1-2 days Newbie friendliness 68/100
LizardByte/libvirtualhid#150 · 1 comment ·
-
Difficulty 3/5 1-2 days Newbie friendliness 78/100
LizardByte/libvirtualhid#134 · 1 comment ·
-
LizardByte/libvirtualhid#106 · 1 assignee ·
-
LizardByte/libvirtualhid#83 · 1 assignee ·
-
LizardByte/libvirtualhid#82 · 1 assignee ·
All issues in LizardByte/libvirtualhid
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100
AXERA-TECH/ax-llm#77 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100
games-on-whales/wolf#509 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
bug-unconfirmed
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
NVIDIA/cuda-samples#453 ·