From: bugzilla-daemon@kernel.org
To: linux-usb@vger.kernel.org
Subject: [Bug 222229] HID: usbhid: Razer DeathStalker Essential 2014 (1532:011f) 51.2s EP0 initialization timeout (-110), dead LEDs, and hotplug failure
Date: Wed, 04 Nov 2026 06:21:10 +0000 [thread overview]
Message-ID: <bug-222229-208809-PS8oQECpSN@https.bugzilla.kernel.org/> (raw)
In-Reply-To: <bug-222229-208809@https.bugzilla.kernel.org/>
https://bugzilla.kernel.org/show_bug.cgi?id=222229
--- Comment #1 from Pierre LEROY (pierre.jap@gmail.com) ---
UPDATE / FINAL SOLUTION:
After further usbmon trace analysis and prototyping, the exact root causes
and a verified 100% working fix for the 51.2s timeout, dead
status LEDs, and hotplug failures have been identified:
1. Root Causes:
- Destabilization on GET_REPORT: The MCU EP0 parser wedges if
usbhid_init_reports() queries reports via EP0 (requires
HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_NOGET).
- Dirty EP0 state: After usbhid_parse() queries class
GET_DESCRIPTOR(HID_DT_REPORT) (0x81), EP0 hangs on immediate subsequent
requests.
Issuing a standard 18-byte GET_DESCRIPTOR(USB_DT_DEVICE) (0x80) on EP0
before and after usbhid_parse() resets the MCU state machine
cleanly.
- Asynchronous led_work race: When Interface 0 (1.0) finishes
input_register_device(), input_leds_connect() schedules hdev->led_work
asynchronously on system_wq. This sends HID_REQ_SET_REPORT over EP0 at
the exact same millisecond usb_set_configuration() begins probing
Interface 1 (1.1) on EP0, resulting in 2 x 25.6s = 51.2s ETIMEDOUT.
- Hardware LED routing: The hardware status LEDs (NumLock / CapsLock /
ScrollLock) are actually accepted and routed through Interface 1
(1.1, the NKRO keyboard interface), not Interface 0.
2. Verified Results:
With EP0 descriptor resets, flushing led_work prior to probing secondary
interfaces, and routing LEDs to Interface 1.1:
- USB HID enumeration drops from 51.2s to < 0.2s.
- All 3 interfaces (1.0 Boot Keyboard, 1.1 NKRO Keyboard, 1.2
Mouse/Vendor) bind cleanly.
- NumLock, CapsLock, and ScrollLock LEDs light and toggle immediately.
- Hotplugging (unplug / replug) is 100% reliable.
3. Working Reference Module & Code:
Full DKMS module and verification code:
https://github.com/Djkawada/razer-deathstalker-linux-fix
--
You may reply to this email to add a comment.
You are receiving this mail because:
You are watching the assignee of the bug.
prev parent reply other threads:[~2026-11-04 6:21 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-02 23:51 [Bug 222229] New: HID: usbhid: Razer DeathStalker Essential 2014 (1532:011f) 51.2s EP0 initialization timeout (-110), dead LEDs, and hotplug failure bugzilla-daemon
2026-11-04 6:21 ` bugzilla-daemon [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bug-222229-208809-PS8oQECpSN@https.bugzilla.kernel.org/ \
--to=bugzilla-daemon@kernel.org \
--cc=linux-usb@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.