All of lore.kernel.org
 help / color / mirror / Atom feed
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.

      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.