Prismatic is a tiny, native macOS menu-bar app that drives the RGB lighting on SteelSeries Arena 7 speakers directly over USB HID — so you don't need the heavy SteelSeries GG suite running in the background. Pick left/right colors, pull a palette straight from your wallpaper, dim, and toggle — all from the menu bar.
- Independent left / right colors — each speaker drives 2 of the Arena's 4 RGB zones
- Fetch colors from your wallpaper — extracts a dominant-color palette in one click
- Hardware brightness and instant on/off
- Custom inline color picker — works right inside the menu (no clunky system panels)
- No SteelSeries GG needed — talks to the speakers directly over USB
- Launch at login, built-in update check, ~1 MB native SwiftUI app
SteelSeries GG is a multi-hundred-megabyte Electron + background-service suite just to change a color. Prismatic does the one thing — lighting — natively, instantly, and out of your way. The USB protocol was reverse-engineered so the app can talk to the hardware on its own (see how it works).
brew install szamski/tap/prismaticDownload the latest Prismatic.dmg, open it, and drag Prismatic.app into Applications. A plain Prismatic.zip is attached to each release too.
- Connect the Arena 7 over USB (lighting is USB-only — Bluetooth won't do it).
- Quit SteelSeries GG if it's running (both can't own the device at once).
- Launch Prismatic — the menu-bar icon appears. Pick colors, brightness, done.
The Arena 7 exposes a vendor HID interface (UsagePage 0xFFC0, VID:PID 0x1038:0x1A00).
Lighting is set with an Output report, ID 0x06 (sent as a control SET_REPORT):
byte 0 : 0x06 report ID
byte 1 : 0xA1 command (0xA1 = set static colors, 0x09 = off)
byte 2…: 4 × zone each zone = [R, G, B, 0x01, 0x1E, brightness(0…10)]
zone order: left-base, left-rear, right-base, right-rear
…0x0F : terminator
The protocol was recovered from a USBPcap capture of SteelSeries GG. See
ArenaUSBController.swift for the
implementation and tools/ for the HID diagnostic scripts used during RE.
git clone https://github.com/szamski/Prismatic-for-macOS.git
cd Prismatic-for-macOS
xcodebuild -project prisma-led-macos.xcodeproj -scheme Prismatic -configuration Release buildRequires a full Xcode (not just the Command Line Tools).
Prismatic ships signed with a Developer ID certificate, built with the Hardened Runtime, and notarized, so it runs with no Gatekeeper warnings.
One-time: add a Developer ID Application certificate (Xcode → Settings → Accounts → Manage Certificates → click + → Developer ID Application) and sign in with your paid team.
- Product → Archive.
- In the Organizer, choose Distribute App → Direct Distribution. Xcode signs with Developer ID + Hardened Runtime, notarizes through your signed-in account, and staples the ticket — all in the GUI.
- Export the app, then zip it for the release:
ditto -c -k --keepParent Prismatic.app Prismatic.zip && shasum -a 256 Prismatic.zip
scripts/notarize.sh does the same headless (archive → Developer ID sign → notarize →
staple → zip → sha256). It needs a notarytool credential profile named prismatic:
xcrun notarytool store-credentials prismatic \
--apple-id "you@example.com" --team-id CKWYP7CT7C --password <app-specific-password>Either way: upload Prismatic.zip to a GitHub release tagged v<version> and bump
version + sha256 in Casks/prismatic.rb.
Issues and PRs are welcome.
Prismatic can likely drive any SteelSeries device that SteelSeries GG lights up — it just needs its USB lighting protocol reverse-engineered. The New device support issue form collects everything below; here's the full picture of what's involved.
What to provide
-
The device — exact model name, and confirmation that SteelSeries GG can change its lighting on your machine (that's how we know it's a GG-managed device).
-
USB identifiers + HID layout — run
swift tools/hid-probe.swiftwith the device connected and paste the output. It prints theVID:PID, the vendor usage page, and the report IDs with their Input / Output / Feature sizes — i.e. which HID report is most likely the lighting channel. -
A USBPcap capture — the one thing that unlocks everything. On a Windows PC with the device connected over USB:
- Install Wireshark (tick USBPcap in the installer) and SteelSeries GG.
- Start capturing on the USBPcap interface that carries VID
1038. - In GG, set the lighting to static, full brightness, and walk through a known sequence with ~2 s gaps: all red → all green → all blue → each zone a different color → off.
- Stop, Save As a
.pcapng, zip it, and attach.
That capture contains the exact
SET_REPORTpackets GG sends, which reveal the report ID, the command byte, the per-zone byte layout, and the RGB order — exactly how the Arena 7 was decoded. -
Zone layout — how many independently-addressable zones there are and where (e.g. "4 zones: a base ring + a rear cluster on each of the two speakers"), so the app can map colors to the right physical LEDs.
-
Environment — your macOS version and whether you're on Apple Silicon or Intel.
How it then gets implemented
- Decode the capture: locate the lighting transfer (
bmRequestType 0x21,bRequest 0x09), read the data bytes, and work out the frame —[report id][command][zone data…][terminator]plus any brightness / effect bytes. - Verify it live: send candidate reports with
tools/led-probe.swiftand watch the device (a stalled write means the frame is wrong; an accepted one means it's right). - Add a small device profile — USB IDs, report id, command, zone map — modeled on
ArenaUSBController.swift, and wire the app's left / right (or per-zone) colors onto it.
No Windows machine? Open the issue anyway with the hid-probe output. Without a capture
it's slower (the byte layout has to be inferred), but it's often still possible.
Prismatic is unofficial and not affiliated with or endorsed by SteelSeries. The USB protocol was reverse-engineered for interoperability. Use at your own risk.
MIT © 2026 Maciej Szamowski
SteelSeries, Arena, and PrismSync are trademarks of their respective owners.

