Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

razer-deathadder-mac

Control a Razer DeathAdder Essential on macOS — polling rate, DPI, and logo lighting — without Razer Synapse (which doesn't support this mouse on Mac).

It talks to the mouse directly using the same vendor HID protocol as OpenRazer: small USB feature reports that write settings into the mouse's onboard memory. These are configuration writes, not firmware flashing — low risk and reversible, and the settings persist across reboots and machines.

Ships a command-line tool and a menu-bar app.

Supported devices

Device USB PID Status
DeathAdder Essential (2021) — incl. White Edition 0x1532:0x0098 ✅ Verified on hardware
DeathAdder Essential (original) 0x1532:0x006E ⛔ Not yet — add it
DeathAdder Essential White Edition (older) 0x1532:0x0071 ⛔ Not yet — add it

The app auto-detects the connected device. Adding a new model is a single profile-table entry — see CONTRIBUTING.md. Only devices verified on real hardware are marked ✅.

Requirements

  • macOS (Apple Silicon or Intel)
  • Homebrew
  • Python 3.10+
  • hidapi (installed automatically by the installer via Homebrew)

Install

git clone https://github.com/Kartik4152/razer-deathadder-mac.git
cd razer-deathadder-mac
./scripts/install.sh

The installer creates a virtualenv, installs the package, and sets up a login LaunchAgent for the menu-bar app.

One-time permission: Input Monitoring

macOS gates access to mouse/keyboard HID devices behind Input Monitoring. After install:

  1. System Settings → Privacy & Security → Input Monitoring
  2. Enable the Python binary the installer prints (it may appear as Python).
  3. Re-run: launchctl kickstart -k gui/$(id -u)/com.github.kartik4152.razer-da-menubar

Without this, the app runs but shows "Not connected." (The CLI run from a terminal inherits your terminal's grant, so it works immediately.)

Usage

Menu-bar app

A mouse icon appears in the menu bar (no Dock icon). Click it to set polling rate, DPI, lighting, and brightness — checkmarks show the current values. It auto-starts at login.

Command line

razer-da info                 # firmware, serial, poll rate, DPI, brightness
razer-da poll get
razer-da poll set 1000        # 125 | 500 | 1000 Hz (per device)
razer-da dpi get
razer-da dpi set 1600         # or: dpi set 1600 3200  (X Y)
razer-da light brightness 75  # 0–100 %
razer-da light static         # steady (default white)
razer-da light breath         # breathing
razer-da light off

set commands read the value back to confirm. Add --debug to print raw HID bytes. (If you didn't install, run with python3 -m razer_da.cli … from the repo.)

Note on color: the DeathAdder Essential has a single fixed-color LED (white on the White Edition), not RGB — so brightness, on/off, and breathing work, but the hue can't be changed.

Auto-start management

# restart (after granting permission, or to reload)
launchctl kickstart -k gui/$(id -u)/com.github.kartik4152.razer-da-menubar
# stop + disable auto-start
./scripts/uninstall.sh           # add --purge to also remove the venv

Troubleshooting

  • Menu shows "Not connected" → grant Input Monitoring (above), then kickstart -k.
  • SIGBUS / crash when the icon renders → caused by a too-broad DYLD_LIBRARY_PATH (e.g. /opt/homebrew/lib) letting Homebrew's libpng hijack macOS ImageIO. The tooling scopes DYLD_LIBRARY_PATH to the hidapi-only keg dir ($(brew --prefix hidapi)/lib) to prevent this — never widen it.
  • Unable to import the 'hid' modulebrew install hidapi.
  • Unsupported devicerazer-da info prints the detected PID; see CONTRIBUTING.md to add it.

How it works

Each command is a 90-byte HID feature report: a fixed header (status, transaction id, command class/id, data size), an 80-byte argument area, and an XOR checksum. Transaction ids and per-zone command bytes are device-specific and live in razer_da/profiles.py; the report format and CRC are generic (razer_da/protocol.py). All command bytes were derived from the OpenRazer driver source and verified live against the hardware.

Credits & license

  • Protocol reverse-engineering thanks to the OpenRazer project.
  • Licensed under the MIT License.
  • Not affiliated with or endorsed by Razer Inc. "Razer" and "DeathAdder" are trademarks of Razer Inc. Use at your own risk.

About

No description, website, or topics provided.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages