Use a Razer Wireless Control Pod as a plug-and-play USB media controller for macOS without Razer Synapse.
The firmware runs on a Seeed Studio XIAO nRF52840 Sense. It connects to the pod over Bluetooth Low Energy, translates its consumer-control reports, and exposes a standard USB HID device to the Mac. Pairing is stored in flash, so the bridge reconnects after losing power.
| Pod input | macOS action |
|---|---|
| Turn left/right | Volume down/up |
| Single tap | Mute after 0.5 seconds |
| Single tap, then turn within 0.5 seconds | Brightness down/up |
| Double tap | Play/pause after 0.5 seconds |
| Double tap, then turn within 0.5 seconds | Previous/next track |
| Triple tap | Lock Mac (Control-Command-Q) |
Rotation keeps the active brightness or track mode alive for another second. Duplicate BLE reports are ignored. Fast spins drop steps rather than queueing them, so the dial never keeps moving after you stop.
If the Mac is asleep, any pod input wakes it; that input isn't applied. This needs the Mac to keep USB powered while asleep.
Volume and brightness move in quarter steps (64 across the full range instead of 16): the bridge holds Shift+Option with each key, the macOS shortcut for fine steps.
The timings and fine steps are constants at the top of src/main.cpp (TAP_WINDOW_MS, MODE_HOLD_MS, FINE_STEPS).
This firmware is designed primarily for macOS, but it can be easily adapted for other operating systems. If you want to use this firmware on Windows or Linux, you can fork the repository and modify the firmware to send the appropriate lock commands for your operating system.
To lock a Windows machine, you would need to modify the firmware to send the Win+L combination instead of Control-Command-Q.
To lock a Linux machine, you would need to modify the firmware to send the Super+L combination instead of Control-Command-Q.
- Razer Wireless Control Pod
- Seeed Studio XIAO nRF52840 Sense
- USB-C cable or adapter connecting the XIAO to the Mac or dock
The regular XIAO nRF52840 should also be compatible, but it has not been tested. Other nRF52840 boards may work after changing the PlatformIO board configuration and USB/BLE setup.
Install PlatformIO Core, then run:
pio run
pio run --target uploadIf automatic upload reset fails, double-tap the XIAO reset button to enter its bootloader, then run the upload command again.
- Put the Razer Wireless Control Pod into full pairing mode.
- Power or reset the XIAO.
- Wait a few seconds for the connection.
- Test the dial while the XIAO is connected to the Mac over USB.
The bond persists across normal resets and power loss. Re-enter pairing mode only if either device's bond is cleared or the pod is paired to another host.
View build output:
pio runView serial output when troubleshooting:
pio device monitor --baud 115200The log shows scan, connect, secure and disconnect events, plus each pod report and each USB key sent. Every line starts with a millisecond timestamp, so the gap between pod found and ready is how long a reconnect takes.
Built with the help of an AI coding assistant (Claude). I review and test what gets published.
MIT
