The program (or driver, if you wish) allows setting the RGB lights of HyperX Quadcast S and Duocast just like NGenuity does. It is supposed to work on all Unix-like systems. The Linux and MacOS versions have been tested and work as expected.
Available modes are solid, blink, cycle, wave, lightning, and pulse. The program runs as a daemon (except the MacOS version), kill it, or unplug the mic to stop.
- free & open source (GPL-2.0-only)
- works on Unix-like OSes
- cli
- daemon
- self-contained static compilation (without libusb)
- the foreground option (-f and --foreground)
- properly test FreeBSD
- visualizer mode (i.e. VU meter)
- save option
- multiple mics support
# Default solid color (#f20000, red) for the whole micro:
quadcastrgb solid
# Random blinking colors:
quadcastrgb blink
# Default cycle (rainbow) mode for the whole micro:
quadcastrgb -a cycle
# Purple color for the upper part and yellow for the lower:
quadcastrgb -u solid 4c0099 -l solid ff6000
# Default cycle mode for the upper diode with 50% brightness and yellow lightning for the lower:
quadcastrgb -u -b 50 cycle -l lightning ff6000 quadcastrgb is available in the AUR.
yay -S quadcastrgbmkdir quadcastrgb && cd quadcastrgb
wget https://gitlab.com/Ors1mer/QuadcastRGB/-/raw/main/aur/PKGBUILD
makepkg -sri # build and install
cd .. && rm -rf quadcastrgb # clean-upSimply download it and install:
wget https://ors1mer.xyz/downloads/quadcastrgb-1.0.4-2-amd64.deb
dpkg -i quadcastrgb-1.0.4-2-amd64.debAlternatively, it is possible to make a deb package of your own:
git clone https://gitlab.com/Ors1mer/QuadcastRGB.git
cd QuadcastRGB
make debpkg # build the package with dpkg
dpkg -i packages/deb/quadcastrgb-1.0.4-2-amd64.deb # installEverything is pretty much the same as for deb. Simply download and install:
wget https://ors1mer.xyz/downloads/quadcastrgb-1.0.4-2.x86_64.rpm
rpm -ivh quadcastrgb-1.0.4-2.x86_64.rpmOr build the package from source:
git clone https://gitlab.com/Ors1mer/QuadcastRGB.git
cd QuadcastRGB
make rpmpkg # build the package in ~/rpmbuild/
rpm -ivh quadcastrgb-1.0.4-2.x86_64.rpmDownload the binary executable for your processor architecture (Intel or ARM):
- https://ors1mer.xyz/downloads/quadcastrgb-1.0.3_macos_intel
- https://ors1mer.xyz/downloads/quadcastrgb-1.0.3_macos_arm
Rename the file however you like (quadcastrgb in the examples). Open the
directory (folder) with the file in Terminal. Execute this to make the
file executable and allow it to run on the system (MacOS doesn't trust the
binary by default; if you do not either - don't use the program):
chmod 711 quadcastrgb
xattr -dr com.apple.quarantine quadcastrgbLaunch the program like this:
./quadcastrgb solidIf you have encountered errors (e.g. Library not loaded), you have to install
the libusb dynamic library.
brew install libusb
ln -s /opt/homebrew/Cellar/libusb/1.0.27/lib/libusb-1.0.0.dylib /usr/local/lib/libusb-1.0.0.dylibThe second command creates a symlink so that the binary can find the library
(for some reason, homebrew doesn't do it automatically). You'll also need
superuser rights for the command.
In Terminal enter:
curl -OL https://github.com/libusb/libusb/releases/download/v1.0.26/libusb-1.0.26.tar.bz2
tar xvfj libusb-1.0.26.tar.bz2
cd libusb-1.0.26
./configure
make
make check
make install # needs superuser rights
cd .. && rm -r libusb-1.0.26The make command might prompt you to install "additional development tools".
Just agree and re-execute the command as well as the remaining ones.
Just launch the program like this:
open -a /path/to/quadcastrgb --args <program arguments>You must enter the absolute path to the executable after the -a option. There
are a bunch of options for how to do this. You may find it in the file
properties. Or run this while in the program directory in Terminal:
pwd
You'll get something like /Users/Bob/Desktop. Just append /quadcastrgb
(assuming quadcastrgb is the name of the file) to the output, and that will
be the absolute path.
To make the command shorter, create an alias:
alias quadcastrgb="open -a /path/to/quadcastrgb --args "To make the alias permanent, run this:
echo "alias quadcastrgb=\"open -a /path/to/quadcastrgb --args\"" >> ~/.zshrcNow you can run it from any directory in Terminal:
quadcastrgb <arguments>
Keep in mind that if you move the program file elsewhere, its absolute path changes and you'll have to update the alias.
If you are lucky, this should be enough:
make install # linux
gmake install OS=freebsd # freebsd
make install OS=macos # macSpecify BINDIR_INS and MANDIR_INS for make if you want to change the install locations.
Check the dependencies:
- gcc v12.2.0 OR clang v14.0.6 (most versions should do fine)
- libusb-1.0 v1.0.26 or newer
- glibc or any other standard C library
Check the $PATH and manpath. The program follows XDG specifications, so the binary is stored in $HOME/.local/bin (should be in $PATH) and the man is in $HOME/.local/share/man (should be in $MANPATH). It is possible to move them, of course.
Check the error code. If it is 4, try running the program under superuser privileges. If that was the problem, you should eventually create a dev rule for the microphone to allow certain users access to it.
Firstly, check what is the VendorID:ProductID of your mic e. g. like this:
$ lsusb
Bus 001 Device 007: ID 0951:171f Kingston Technology HyperX QuadCast S # this is what you're looking for
Bus 001 Device 006: ID 0951:171d Kingston Technology HyperX QuadCast SIt must be either 0951:171f, 03f0:0f8b, 03f0:028c, 03f0:048c, 03f0:068c, or 03f0:098c (if it isn't, contact me, the author, I'll add support for your IDs).
Let's proceed to the rule creation:
# Here the rules are stored:
cd /etc/udev/rules.d
# Do under superuser:
vi 10-quadcast-perm.rulesWrite this line, save & exit (:wq):
SUBSYSTEMS=="usb", ATTRS{idVendor}=="<THE_VENDOR_ID>", ATTRS{idProduct}=="<THE_PRODUCT_ID>", MODE="0660", GROUP="hyperrgb"Now the microphone is accessible for the group "hyperrgb". Add your user to the group and it's done.
Probably, the previous instance is still running. Kill it with kill or killall.
Simply kill the process by name:
killall quadcastrgbChances are you have a new revision of the mic that has unsupported VendorID:ProductID.
Currently supported IDs:
- 0951:171f
- 03f0:0f8b
- 03f0:028c
- 03f0:048c
- 03f0:068c
- 03f0:098c
If you have different IDs (check it with lsusb, for example), contact the author; I'll add the support very quickly.
When reporting the issue, provide the detailed output about Quadcast S devices if possible:
lsusb -vd 'VendorID:ProductID'