Re: [PATCH] HID: hyperx: add driver for the HyperX QuadCast 2 mute button

Jiri Kosina <[email protected]> Mon, 3 Aug 2026 21:39:19 +0200 (CEST)
Newsgroups org.kernel.vger.linux-input,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On Mon, 13 Jul 2026, Benjamin Blume wrote:

> The tap-to-mute button of the HyperX QuadCast 2 (03f0:07b4) is handled
> entirely in the device firmware.  The firmware gates the audio internally
> but never sends the Telephony "Phone Mute" usage (0x2f) that its own report
> descriptor advertises, and it does not touch the UAC feature unit either.
> Consequently neither an evdev key event nor an ALSA mixer change is ever
> generated, and userspace has no way to learn that the microphone was muted:
> desktops keep showing the microphone as live, and conferencing applications
> keep displaying an unmuted microphone while transmitting silence.
> 
> The mute state is reported through a vendor-defined collection instead:
> 
>   06 c0 ff        Usage Page (Vendor-Defined 0xFFC0)
>   a1 01           Collection (Application)
>   06 c1 ff          Usage Page (Vendor-Defined 0xFFC1)
>   85 77             Report ID (0x77)
>   09 f0             Usage (0xF0)
>   75 08  95 3f      Report Size (8), Report Count (63)
>   81 02             Input (Data,Var,Abs)
> 
> Pressing the button emits a 64-byte report on that collection:
> 
>   77 06 00 00 ...   microphone unmuted
>   77 06 01 00 ...   microphone muted
> 
> where byte 1 identifies the mute event and byte 2 carries the resulting
> state.  As the payload is an opaque vendor blob carrying no HID usages,
> hid-input cannot map it and a hwdb entry cannot express it either.
> 
> Add a driver that decodes the report and emits KEY_MICMUTE, which makes the
> button behave like any other microphone mute key.
> 
> Note that the device reports the resulting absolute state, whereas
> KEY_MICMUTE is a momentary key that userspace acts on as a toggle, so the
> driver emits one keypress per state change.
> 
> Tested on a HyperX QuadCast 2 (03f0:07b4).
> 
> Signed-off-by: Benjamin Blume <[email protected]>

Applied, thanks.

-- 
Jiri Kosina
SUSE Labs