{"id":50172376,"url":"https://github.com/Ors1mer/QuadcastRGB","last_synced_at":"2026-06-10T15:00:39.756Z","repository":{"id":162520954,"uuid":"535031987","full_name":"Ors1mer/QuadcastRGB","owner":"Ors1mer","description":"Set RGB lights on HyperX QuadCast S and Duocast","archived":false,"fork":false,"pushed_at":"2026-05-31T10:09:11.000Z","size":234,"stargazers_count":106,"open_issues_count":4,"forks_count":13,"subscribers_count":9,"default_branch":"main","last_synced_at":"2026-05-31T12:08:33.839Z","etag":null,"topics":["c","free-software","gplv2","linux","microphone","open-source","unix"],"latest_commit_sha":null,"homepage":"https://ors1mer.xyz/quadcastrgb.html","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ors1mer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-09-10T15:04:49.000Z","updated_at":"2026-05-22T20:18:23.000Z","dependencies_parsed_at":"2024-02-09T12:46:36.621Z","dependency_job_id":"4d2202d9-fa6e-4092-84ab-8ad250fa13a7","html_url":"https://github.com/Ors1mer/QuadcastRGB","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/Ors1mer/QuadcastRGB","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ors1mer%2FQuadcastRGB","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ors1mer%2FQuadcastRGB/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ors1mer%2FQuadcastRGB/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ors1mer%2FQuadcastRGB/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ors1mer","download_url":"https://codeload.github.com/Ors1mer/QuadcastRGB/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ors1mer%2FQuadcastRGB/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34157453,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","free-software","gplv2","linux","microphone","open-source","unix"],"created_at":"2026-05-25T00:00:35.407Z","updated_at":"2026-06-10T15:00:39.749Z","avatar_url":"https://github.com/Ors1mer.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# QuadcastRGB\n# About\nThe program (or driver, if you wish) allows setting the RGB lights of HyperX\n*Quadcast S, Quadcast 2, Duocast, and Quadcast 2S* just like NGenuity does. It\nis supposed to work on all Unix-like systems. The Linux and MacOS versions have\nbeen tested and work as expected.\n\nAvailable modes are *solid, blink, cycle, wave, lightning, and pulse*. The\nprogram runs as a daemon (except the MacOS version), kill it, or unplug the mic\nto stop.\n\nFor *Quadcast 2S* only solid mode is supported at the moment. And on\n*Quadcast 2* it is only possible to set the brightness, not the color.\n\n## Features:\n- *free \u0026 open source (GPL-2.0-only)*\n- *works on Unix-like OSes*\n- *cli*\n- *daemon*\n\n## Things yet to be done:\n- *self-contained static compilation (without libusb)*\n- *the foreground option (-f and --foreground)*\n- *properly test FreeBSD*\n- *visualizer mode (i.e. VU meter)*\n- *save option*\n- *multiple mics support*\n\n## Examples:\n```bash\n# Default solid color (#f20000, red) for the whole micro:\nquadcastrgb solid\n# Turn off RGB completely (by passing the black color #000000)\nquadcastrgb solid 0\n# Set brightness and keep the default color (#f20000)\nquadcastrgb solid -b 20\n# Random blinking colors:\nquadcastrgb blink\n# Default cycle (rainbow) mode for the whole micro:\nquadcastrgb -a cycle\n# Purple color for the upper part and yellow for the lower:\nquadcastrgb -u solid 4c0099 -l solid ff6000\n# Default cycle mode for the upper diode with 50% brightness\n# and yellow lightning for the lower:\nquadcastrgb -u -b 50 cycle -l lightning ff6000\n```\n\n# Install\n## Arch-based distro\n*quadcastrgb* is available in the AUR.\n### Install with yay\n```bash\nyay -S quadcastrgb\n```\n### Build on your own\n```bash\nmkdir quadcastrgb \u0026\u0026 cd quadcastrgb\nwget https://gitlab.com/Ors1mer/QuadcastRGB/-/raw/main/aur/PKGBUILD\nmakepkg -sri # build and install\ncd .. \u0026\u0026 rm -rf quadcastrgb # clean-up\n```\n\n## Debian-based distro\nSimply download it and install:\n```bash\nwget https://ors1mer.xyz/downloads/quadcastrgb-1.0.4-2-amd64.deb\ndpkg -i quadcastrgb-1.0.4-2-amd64.deb\n```\nAlternatively, it is possible to make a deb package of your own:\n```bash\ngit clone https://gitlab.com/Ors1mer/QuadcastRGB.git\ncd QuadcastRGB\nmake debpkg # build the package with dpkg\ndpkg -i packages/deb/quadcastrgb-1.0.4-2-amd64.deb # install\n```\n\n## RPM-based distro\nEverything is pretty much the same as for deb. Simply download and install:\n```bash\nwget https://ors1mer.xyz/downloads/quadcastrgb-1.0.4-2.x86_64.rpm\nrpm -ivh quadcastrgb-1.0.4-2.x86_64.rpm\n```\nOr build the package from source:\n```bash\ngit clone https://gitlab.com/Ors1mer/QuadcastRGB.git\ncd QuadcastRGB\nmake rpmpkg # build the package in ~/rpmbuild/\nrpm -ivh quadcastrgb-1.0.4-2.x86_64.rpm\n```\n\n## MacOS\n### Installation\nDownload the binary executable for your processor architecture (Intel or ARM):\n- https://ors1mer.xyz/downloads/quadcastrgb-1.0.3_macos_intel\n- https://ors1mer.xyz/downloads/quadcastrgb-1.0.3_macos_arm\n\nRename the file however you like (`quadcastrgb` in the examples). Open the\ndirectory (folder) with the file in `Terminal`. Execute this to make the\nfile executable and allow it to run on the system (MacOS doesn't trust the\nbinary by default; if you do not either - don't use the program):\n```bash\nchmod 711 quadcastrgb\nxattr -dr com.apple.quarantine quadcastrgb\n```\nLaunch the program like this:\n```bash\n./quadcastrgb solid\n```\nIf you have encountered errors (e.g. `Library not loaded`), you have to install\nthe `libusb` dynamic library.\n### Libusb installation\n#### Homebrew\n```bash\nbrew install libusb\nln -s /opt/homebrew/Cellar/libusb/1.0.27/lib/libusb-1.0.0.dylib /usr/local/lib/libusb-1.0.0.dylib\n```\nThe second command creates a symlink so that the binary can find the library\n(for some reason, `homebrew` doesn't do it automatically). You'll also need\nsuperuser rights for the command.\n#### Compilation\nIn `Terminal` enter:\n```bash\ncurl -OL https://github.com/libusb/libusb/releases/download/v1.0.26/libusb-1.0.26.tar.bz2\ntar xvfj libusb-1.0.26.tar.bz2\ncd libusb-1.0.26\n./configure\nmake\nmake check\nmake install # needs superuser rights\ncd .. \u0026\u0026 rm -r libusb-1.0.26\n```\nThe `make` command might prompt you to install \"additional development tools\".\nJust agree and re-execute the command as well as the remaining ones.\n### I want quadcastrgb to continue running after I close the terminal\nJust launch the program like this:\n```bash\nopen -a /path/to/quadcastrgb --args \u003cprogram arguments\u003e\n```\nYou must enter the absolute path to the executable after the `-a` option. There\nare a bunch of options for how to do this. You may find it in the file\nproperties. Or run this while in the program directory in `Terminal`:\n```\npwd\n```\nYou'll get something like `/Users/Bob/Desktop`. Just append `/quadcastrgb`\n(assuming `quadcastrgb` is the name of the file) to the output, and that will\nbe the absolute path.\n\nTo make the command shorter, create an alias:\n```bash\nalias quadcastrgb=\"open -a /path/to/quadcastrgb --args \"\n```\nTo make the alias permanent, run this:\n```bash\necho \"alias quadcastrgb=\\\"open -a /path/to/quadcastrgb --args\\\"\" \u003e\u003e ~/.zshrc\n```\nNow you can run it from any directory in `Terminal`:\n```\nquadcastrgb \u003carguments\u003e\n```\nKeep in mind that if you move the program file elsewhere, its absolute path\nchanges and you'll have to update the alias.\n\n## Compiling from source\nIf you are lucky, this should be enough:\n```bash\nmake install # linux\ngmake install OS=freebsd # freebsd\nmake install OS=macos # mac\n```\nSpecify *BINDIR_INS* and *MANDIR_INS* for *make* if you want to change the\ninstall locations.\n\n# FAQ\n## Problem 1: make failed\nCheck the dependencies:\n- gcc v12.2.0 OR clang v14.0.6 (most versions should do fine)\n- libusb-1.0 v1.0.26 or newer\n- glibc or any other standard C library\n\n## Problem 2: command not found\nCheck the $PATH and manpath. The program follows XDG specifications, so the\nbinary is stored in $HOME/.local/bin (should be in $PATH) and the man is in\n$HOME/.local/share/man (should be in $MANPATH). It is possible to move them,\nof course.\n\n## Problem 3: couldn't open the microphone\nCheck the error code. If it is 4, try running the program under superuser\nprivileges. If that was the problem, you should eventually create a dev rule\nfor the microphone to allow certain users access to it.\n\n## How to create the udev rule\nFirstly, check what is the VendorID:ProductID of your mic e. g. like this:\n```bash\n$ lsusb\nBus 001 Device 007: ID 0951:171f Kingston Technology HyperX QuadCast S # this is what you're looking for\nBus 001 Device 006: ID 0951:171d Kingston Technology HyperX QuadCast S\n```\nIt must be either 0951:171f, 03f0:0f8b, 03f0:028c, 03f0:048c, 03f0:068c,\nor 03f0:098c (if it isn't, contact me, the author, I'll add support for your\nIDs).\n\nLet's proceed to the rule creation:\n```bash\n# Here the rules are stored:\ncd /etc/udev/rules.d\n# Do under superuser:\nvi 10-quadcast-perm.rules\n```\nWrite this line, save \u0026 exit (:wq):\n```bash\nSUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"\u003cTHE_VENDOR_ID\u003e\", ATTRS{idProduct}==\"\u003cTHE_PRODUCT_ID\u003e\", MODE=\"0660\", GROUP=\"hyperrgb\"\n```\nNow the microphone is accessible for the group \"hyperrgb\". Add your user to the\ngroup and it's done.\n\n## Problem 4: launching the program a second time does nothing\nProbably, the previous instance is still running. Kill it\nwith *kill* or *killall*.\n\n## How to end the program\nSimply kill the process by name:\n```bash\nkillall quadcastrgb\n```\n\n## Problem 5: \"HyperX Quadcast S isn't connected\" even though it is\nChances are you have a new revision of the mic that has unsupported\nVendorID:ProductID.\n\nCurrently supported IDs:\n- 0951:171f\n- 03f0:0f8b\n- 03f0:028c\n- 03f0:048c\n- 03f0:068c\n- 03f0:098c\n\nIf you have different IDs (check it with *lsusb*, for example), contact the\nauthor; I'll add the support very quickly.\n\nWhen reporting the issue, provide the detailed output about Quadcast S devices\nif possible:\n```bash\nlsusb -vd 'VendorID:ProductID'\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOrs1mer%2FQuadcastRGB","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FOrs1mer%2FQuadcastRGB","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOrs1mer%2FQuadcastRGB/lists"}