Skip to content

Repository files navigation

HyperX Discord Bridge

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.

Why this exists

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.

Features

  • 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.

Requirements

  • 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)

Setup

1. Create a Discord application (one-time, ~2 minutes)

Discord only exposes voice state to a registered application:

  1. Open https://discord.com/developers/applicationsNew Application (any name, e.g. QuadCast Bridge).
  2. 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.1 and save.

2. Run the app

On first launch the settings dialog opens automatically. Paste your Client ID and Client Secret, pick your microphone from the dropdown, and save.

3. Authorize

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.

Usage

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

How it works

Touch-button read-out

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.

RGB control (Light-only mode)

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.

Files

Path Contents
%APPDATA%\HyperXDiscordBridge\config.json Configuration
%APPDATA%\HyperXDiscordBridge\tokens.json OAuth token (local, do not share)
%APPDATA%\HyperXDiscordBridge\bridge.log Log file

Building from source

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=true

The resulting executable is under bin\Release\net9.0-windows\win-x64\publish\.

License

MIT — see LICENSE.

About

Sync your Discord mute state with a HyperX QuadCast S - mute the mic and light when you mute in Discord, and vice versa.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages