Control peripheral settings from the browser over WebHID. No drivers, no vendor software.
npm install
npm run devBy default on Linux your device is only readable, not writable, so the app connects but the lighting controls do nothing until a small udev rule grants access.
If "Connect Device" looks like it worked but nothing changes, run these three lines in a terminal, then unplug and replug your device (or reboot):
sudo tee /etc/udev/rules.d/55-openperipherals.rules <<'EOF'
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1532", MODE="0666", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="046d", MODE="0666", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0c45", MODE="0666", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="3710", MODE="0666", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="3554", MODE="0666", TAG+="uaccess"
EOF
sudo udevadm control --reload-rules
sudo udevadm trigger
Devices expose vendor HID interfaces that accept effect commands. This app builds and sends those report packets directly from the browser.
The HID protocol details for Razer devices were reverse-engineered by the OpenRazer project.
The HID protocol details for Logitech and Redragon devices were reverse-engineered by the OpenRGB project.
Found a bug, or want to add support for a new device? Open an issue or pull request.
cd openperipherals
npm install
npm run dev # start the dev serverMake your changes on a branch, then verify:
git checkout -b my-branch
npm run check # svelte-check diagnostics
npm run build # production build
git add .
git commit -m "fix: describe what you fixed" # or feat: for new features
git push -u origin my-branchThen open a pull request into main describing what changed and what you tested. It's highly recommended to describe what you add/fix and to include some screenshots or videos.