Repository navigation
Add support for HyperX Cloud Alpha S - #612
Conversation
Sidetone (on/off, readable), chat-mix status and microphone mute status for the wired Cloud Alpha S (0951:16ed) via its control box's vendor HID collection.
|
Hi @Sapd, thanks for HeadsetControl! I'm the owner of the HyperX Cloud Alpha S used for this PR (wired, USB control box, 0951:16ed, firmware 0x4110). Everything was tested on my own headset on Windows 11:
I couldn't test on Linux or macOS. If anyone can, I'd appreciate it. While working on this I also found that the control box can do 7.1 on/off and a 10-band parametric EQ (the EQ is only applied while 7.1 is on). I left those out to keep this PR small, but I'm happy to add parametric EQ in a follow-up if you're interested. I'm happy to test changes or capture more data from the device. Just let me know. |
|
Thanks - and thanks for saying up front what you tested and on what. Checked here: build clean with no warnings, suite green, clang-format 18 clean, README table matches I broke six behaviours to see whether the tests hold, and all six fail:
The toggle guard is the part that would have worried me on a device where setting a value can invert it, and it's the part your tests pin down hardest. Chat-mix direction matches the convention too: game-favoured below 64, chat-favoured above. Keeping Two observations, neither blocking:
On 7.1 and the parametric EQ: yes, please. Merging. |
Changes made
Adds the wired HyperX Cloud Alpha S (
0951:16ed, USB audio control box):-s 0/-s 128), also readable (-s)-m), from the game/chat balance buttons on the control box--microphone-mute-status)Protocol: the control box exposes a vendor collection (usage page
0xff13, usage0x01) on interface 5. Every command is a 62 byte output report with report ID0x06; the reply is read with GET_REPORT for the same ID. Byte 10 selects the parameter (0x09status,0x07sidetone), bytes 7–9 are a fixed module id68 4a 8e. The sidetone command toggles (the 7.1 command0x02behaves the same way, checked against the control box LED), sosetSidetonereads the status first and only sends it when the state differs; setting the same value twice is a no-op. The device acknowledges by echoing the header with bit 7 set in byte 5. In the status reply, byte 14 bit 0 is sidetone, bit 1 is microphone mute, and bytes 16/20 are the game/chat attenuation in dB (Q8.8, big-endian); chat-mix maps them to steps with the same thresholds HyperX NGENUITY uses.Tested on Windows 11 with firmware
0x4110: device detection, sidetone get/set on and off, including setting the same value twice (state confirmed by reading it back), chat-mix and mic mute status follow the control box's balance and mute buttons. Unit tests use replies captured from that headset. Not tested on Linux or macOS.Checklist