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

From: Jiri Kosina

Date: Mon Aug 03 2026 - 15:40:16 EST


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 <benjaminblume@xxxxxxxxx>

Applied, thanks.

--
Jiri Kosina
SUSE Labs