protonscr

NZXT Kraken X2 Hidraw udev rule causes Xbox Series X Controller to disappear in all games

protonopen
ValveSoftware/Proton#9468 · opened 2026-02-05 by filippo-martini · updated 2026-08-04 · 6 comments · github
1 matching comments, n / p to jump
Ffilippo-martini 2026-02-05 github

In order to control some devices on my machine, I have to apply the following two udev rules:

SUBSYSTEMS=="usb|hidraw", ATTRS{idVendor}=="1e71", ATTRS{idProduct}=="2006", TAG+="uaccess", TAG+="NZXT_Smart_Device_V2"
SUBSYSTEMS=="usb|hidraw", ATTRS{idVendor}=="1e71", ATTRS{idProduct}=="170e", TAG+="uaccess", TAG+="NZXT_Kraken_X2"

The first one does not alter proton behavior in any way, while the second makes my Xbox series controller (connected via usb) completely invisible to all games run via proton. Native Linux applications outside of proton are not affected.

I took the following screenshots from dolphin emulator run via proton, as it clearly shows all detected input devices. The controller effectively disappears after enabling the second udev rule.
Image Image

Proton versions prior to 9.0-4 are not affected, while either PROTON_DISABLE_HIDRAW=1 or SDL_GAMECONTROLLER_IGNORE_DEVICES=0x1e71/0x170e can be used as workaround on later versions.

Here is a log generated with PROTON_LOG=+hid of a game refusing to see my controller:
steam-837470.log

Ffilippo-martini 2026-02-05 github

@kisak-valve I've seen you changed the title but that's not what's happening at all 😅. As I wrote in the body it's not the Kraken X2 disappearing (which I should have specified is an AIO CPU cooler, while the Smart Device V2 is a fan/rgb controller) but my Xbox Series controller.

Ttornadus 2026-02-06 github

I can replicate this, which leads me to believe that this (or perhaps other udev rules for similar devices) may be the root cause for #8917 and #8681!

Cchrisdevchroma 2026-02-13 github

Can confirm the same issue on a system with a NZXT Kraken X, with PROTON_DISABLE_HIDRAW=1 being a workaround.

Ttornadus 2026-02-20 github

There was a great workaround posted in https://github.com/liquidctl/liquidctl/issues/860. SDL_GAMECONTROLLER_IGNORE_DEVICES=0x1e71/0x170e should solve the problem without disabling entire subsystems or multiple gamepad input like with the other workarounds in the thread. Perhaps this is targeted enough to make it in as a patch for Proton?

Ggira0 2026-05-12 github

I also got the 1e71:170e NZXT Kraken and using SDL_GAMECONTROLLER_IGNORE_DEVICES=0x1e71/0x170e fixed all my controller issues.

Bbdavj 2026-08-04 github

Can confirm this exact issue, and I have a crash backtrace that may explain the mechanism.

Setup

  • CachyOS (fresh install), reproduced in both gamescope session and KDE desktop
  • NZXT Kraken X (1e71:170e) + ITE RGB LED controller (048d:5702), both with hidraw uaccess
  • Controllers: Xbox One S (Xbox Wireless Adapter) and 8BitDo Ultimate 2 Wireless (tested in both XInput 2dc8:310b and DInput 2dc8:6012 modes)
  • Reproduced on Proton Experimental, Proton Hotfix, GE-Proton11-3, and proton-cachyos (native + SLR)

Symptoms (matching OP)

All controllers work at kernel level (evtest), in native Linux games, and in the Steam client UI/controller test — but are completely invisible to every Proton game (games show keyboard prompts). Occurs with Steam Input enabled, disabled, and with PROTON_NO_STEAMINPUT=1. Persisted across a full OS reinstall.

Verified before finding the cause:

  • Steam Input's virtual X-Box 360 pad (28de:11ff) is created, emits events in evtest, and is present in the container's /dev/input
  • /run/udev/data inside the pressure-vessel container matches the host (all c13:* entries present)
  • udevadm info on the virtual pad shows ID_INPUT_JOYSTICK=1, no ID_INPUT_IGNORE
  • SDL_GAMECONTROLLER_IGNORE_DEVICES in the game env does not include the virtual pad

Crash evidence

With PROTON_LOG=1 WINEDEBUG=+plugplay, enumeration errors on the Kraken:

00bc:err:hid:get_container_id_for_usb_udev_device Failed to get parent device.
00bc:trace:plugplay:enumerate_new_device Creating new device L"HID\\VID_1E71&PID_170E&MI_00\\512&57884173394&0&0&0".

...and shortly after, hidclass.sys crashes:

=>0 0x006fffff323a28 in hidclass.sys (+0x3a28) (0x000000018dfe90)
0x006fffff323a28 hidclass.sys+0x3a28: movq 0x40(%rax), %rsi
PE-Wine     6fffff300000-    6fffff30d000       Deferred        winexinput.sys
PE-Wine     6fffff320000-    6fffff330000       COFF            hidclass.sys

With the HID stack down, games enumerate zero gamepads — which would explain why the controller "disappears" for all Proton games while native applications are unaffected.

Workarounds confirmed on my system

  • Removing uaccess from the Kraken/ITE hidraw nodes (MODE="0600", TAG-="uaccess") restores controllers in all Proton games immediately — but breaks liquidctl for non-root users
  • SDL_GAMECONTROLLER_IGNORE_DEVICES=0x1e71/0x170e (as OP noted) is the cleaner option since liquidctl keeps working

Full PROTON_LOG attached.