A tiny Windows tray app that keeps your Discord mute state and your HyperX QuadCast S in sync — in both directions.
- Mute in Discord → the QuadCast is muted and its light turns off.
- Unmute in Discord → the QuadCast is un-muted and its light turns on.
- Tap the mic's touch button → Discord is muted/un-muted too.
It runs silently in the system tray and uses almost no resources.
The QuadCast's tap-to-mute and its light are handled entirely inside the microphone — Windows and Discord don't know about each other. This app bridges the two so a single action (in Discord or on the mic) mutes everywhere and gives you a clear visual cue from the mic light.
- Two modes
- Mic & Light (default) – mutes the QuadCast at the Windows level. The firmware couples the light to that mute state, so light off = actually muted for every app, not just Discord.
- Light only – keeps the microphone live for other apps (OBS, recording, …) and only switches the RGB light via HID. Freely choose the colors for "live" and "muted" (e.g. green when live, off or blue when muted).
- Bidirectional touch-button sync – tapping the mic's touch button mutes/un-mutes Discord as well (the button is read directly from the mic over HID, since it isn't exposed as a Windows mute).
- Fail-safe – "muted" is only ever shown when confirmed by Discord. On disconnect, unknown state, or exit, the app always falls back to light on / mic free — better to show live once too often than to falsely signal "muted" while you're actually unmuted in Discord.
- NGENUITY auto-close (optional) – in Light-only mode NGENUITY constantly overwrites the light; the app can close it automatically while it's driving the light.
- Device dropdown, autostart, single-instance, logging.
- Windows 10 / 11
- Discord desktop client
- .NET 9 Desktop Runtime — only needed if you build the framework-dependent version. The published release is self-contained and needs nothing extra.
- A free Discord "application" (2-minute one-time setup, see below)
Discord only exposes voice state to a registered application:
- Open https://discord.com/developers/applications → New Application (any name, e.g.
QuadCast Bridge). - Open OAuth2 in the sidebar:
- Copy the Client ID.
- Under Client Secret, click Reset Secret and copy it.
- Under Redirects, add
http://127.0.0.1and save.
- Easiest: download
HyperXDiscordBridge.exefrom the latest release and run it. - From source: see Building.
On first launch the settings dialog opens automatically. Paste your Client ID and Client Secret, pick your microphone from the dropdown, and save.
The first time it connects, Discord shows a pop-up ("… wants to access your account") → Authorize. This is a one-time step; the token is stored locally and refreshed automatically.
That's it. Mute in Discord and watch the light go off.
The app lives in the system tray (double-click the icon to open settings):
| Icon | Meaning |
|---|---|
| 🟢 Green | Connected, mic live (light on) |
| 🔴 Red, crossed | Discord muted, mic off (light off) |
| ⚪ Grey | Not connected / disabled |
Right-click menu:
- Active – enable/disable syncing (disabling frees the mic)
- Start with Windows – autostart via the registry
- Settings… – credentials, device, mode, light colors (with a light-test button)
- Open log – for troubleshooting
- Quit – frees the mic / restores the light first
The QuadCast S touch button is firmware-internal and is not reported as a Windows mute. Instead it sends a vendor HID report on interface mi_01 (usage page 0xFFFF, 8-byte input) on every press: 05 10 <state> 00 00 00 00 00. Byte 2 is the mute state (0x00 = muted / light off, 0x01 = live). The app reads this on a dedicated thread and forwards changes to Discord via SET_VOICE_SETTINGS. If a unit reports the values inverted, flip HardwareMutedValue in config.json.
Colors are sent as 65-byte HID feature reports to the QuadCast S RGB interface (mi_00, usage page 0xFF90; VID/PID 0951:171F Kingston or 03F0:0F8B HP): a color packet (0x81 R G B for the upper and lower zone) followed by an apply packet (0x04 0xF2). The firmware falls back to its own pattern without fresh packets, so the app resends the state once per second while it's driving the light.
The HID protocol was reverse-engineered by the OpenRGB and QuadcastRGB projects; thanks to both.
| Path | Contents |
|---|---|
%APPDATA%\HyperXDiscordBridge\config.json |
Configuration |
%APPDATA%\HyperXDiscordBridge\tokens.json |
OAuth token (local, do not share) |
%APPDATA%\HyperXDiscordBridge\bridge.log |
Log file |
Requires the .NET 9 SDK.
# Run directly
dotnet run
# Self-contained single EXE (no runtime needed to run)
dotnet publish -c Release -r win-x64 --self-contained true /p:PublishSingleFile=true
# Framework-dependent single EXE (smaller, needs the .NET 9 Desktop Runtime)
dotnet publish -c Release -r win-x64 --self-contained false /p:PublishSingleFile=trueThe resulting executable is under bin\Release\net9.0-windows\win-x64\publish\.
MIT — see LICENSE.