Unofficial Linux repackage of the Azeron keypad configuration software (v1.5.6). Provides full feature parity with the Windows version — button remapping, profile management, thumbstick calibration, LED control, and firmware updates.
- Azeron Classic / Compact
- Azeron Cyborg
- Azeron Cyborg II
- Azeron Cyro / Cyro Lefty
- Azeron Keyzen
Arch Linux:
sudo pacman -S --needed hidapi libusb python usbutils dfu-utilDebian / Ubuntu:
sudo apt install libhidapi-hidraw0 libusb-1.0-0 python3 usbutils dfu-utilFedora:
sudo dnf install hidapi libusb1 python3 usbutils dfu-utilopenSUSE:
sudo zypper install libhidapi-hidraw0 libusb-1_0-0 python3 usbutils dfu-utilmacOS (Apple Silicon):
brew install node dfu-util libusb hidapi python@3dfu-util is only required for firmware updates.
Releases are built automatically — a weekly CI job checks for new upstream Azeron versions and publishes updated packages to the releases page.
Download the latest .AppImage from the releases page, make it executable, and run:
chmod +x azeron-software-*-x64.AppImage
./azeron-software-*-x64.AppImageDownload the latest .deb from the releases page and install:
sudo dpkg -i azeron-software-*-amd64.debDownload the latest .rpm from the releases page and install:
sudo rpm -i azeron-software-*-x86_64.rpmyay -S azeron-softwaregit clone https://github.com/renatoi/azeron-linux.git
cd azeron-linux
makepkg -siThis builds and installs the package in one step. It also installs udev rules automatically.
brew install --cask renatoi/azeron-linux/azeron-softwareOr download the latest .zip from the releases page, extract, and drag to Applications. Gatekeeper will prompt on first launch; right-click -> Open to trust the build.
Note: Only Apple Silicon (arm64) is supported.
The Azeron device communicates via HID, which requires permission to access /dev/hidraw*. If you installed via makepkg -si, the udev rules are already in place. Otherwise, install them manually:
sudo cp assets/99-azeron.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm triggerRe-plug your Azeron device after installing the rules.
Install build dependencies for your distro:
Arch Linux:
sudo pacman -S --needed hidapi libusb nodejs npm p7zipDebian / Ubuntu:
sudo apt install libhidapi-dev libusb-1.0-0-dev nodejs npm p7zip-fullFedora:
sudo dnf install hidapi-devel libusb1-devel nodejs npm p7zipmacOS (Apple Silicon):
brew install node dfu-util libusb hidapi python@3Then clone and build:
git clone https://github.com/renatoi/azeron-linux.git
cd azeron-linux
bash scripts/setup.sh
npm run buildThe setup script installs npm dependencies, rebuilds node-hid for Linux, applies Linux patches, and installs udev rules. Build output goes to the output/ directory.
If you prefer to run each step yourself:
# 1. Install system and npm dependencies (see Quick start above for your distro)
npm install
# 2. Install app dependencies and rebuild node-hid for Electron 30
cd app
npm install node-hid@2.2.0
cd ..
npx @electron/rebuild -f -w node-hid -m app -v 30.0.9
# 3. Apply Linux patches
node scripts/patch-main.js
# 4. Build packages (AppImage + pacman)
npm run buildnode scripts/patch-main.js applies targeted string replacements to the minified main-process.js. The script fails with an error if any search string is not found, which signals that an upstream update changed something that needs attention. Patches can be platform-conditional — set AZERON_PATCH_TARGET=darwin for macOS builds.
| Patch | Platform | Description |
|---|---|---|
| fix-platform-string | all | Fix e.Linux="Linux" to lowercase "linux" |
| fix-tray-icon | all | Resolve tray icon path using process.resourcesPath |
| fix-app-root-path | all | Use process.execPath for reliable root path detection |
| disable-auto-updater | all | Disable S3 auto-update (no Linux/macOS builds on their CDN) |
| fix-dfu-util-name | all | Replace dfu-util-static with system dfu-util |
| fix-login-items-1/2/3 | all | Skip setLoginItemSettings on Linux (unsupported API) |
| fix-wayland-scaling | linux | Force x11/xwayland to fix fractional scaling on Wayland |
| fix-hid-write-padding-text/binary | linux | Pad HID writes to 65 bytes (Linux hidraw doesn't auto-pad like Windows/macOS) |
| fix-profile-activation | linux | Fire-and-forget profile switch (device does USB reconnect to apply) |
| fix-usb-reset-on-connect | linux | USB device reset before HID open (fixes config interface after reconnect) |
| fix-xinput-drain | linux | Drain XInput endpoint on Interface 0 to prevent firmware lockup |
| silence-console-logs | all | Reduce console log level from debug to error |
| fix-quit-on-window-close | linux | Clean exit on window close (avoids node-hid NAPI crash on Linux) |
npm start -- --no-sandboxNew upstream versions are detected and released automatically via GitHub Actions (weekly on Mondays). You can also check manually:
# Check only (exit code 0 = up to date, 2 = update available)
bash scripts/check-update.sh
# Check, download, rebuild, and repackage automatically
bash scripts/check-update.sh --applyWith --apply, the script will:
- Download the new installer and verify its SHA-512 checksum
- Extract the Electron app from the NSIS installer
- Replace
app/dist,app/node_modules, and firmware files - Rebuild
node-hidfor Linux - Apply all Linux patches (fails loudly if a patch no longer matches)
- Update
build-manifest.json,package.json, andPKGBUILDwith the new version - Build AppImage and pacman packages
If any step fails, it reports all errors at the end.
Auto-update and beta participation: The Settings page in the app shows "Auto update enabled" and "Beta Version Opt In?" checkboxes. These do not work on Linux — the auto-updater has been disabled since there are no Linux builds on Azeron's update server. To check for updates, see the Checking for Updates section below, or watch the releases page for new versions.
- Check that the device shows up on USB:
lsusb -d 16d0:
- Verify udev rules are installed and reloaded (see above).
- Check hidraw permissions:
Devices should have
ls -l /dev/hidraw*crw-rw-rw-permissions after udev rules are applied.
This is a permission error. Install the udev rules and re-plug the device.
Try running with --no-sandbox:
./azeron-software-1.5.6-x86_64.AppImage --no-sandboxOr set the environment variable:
ELECTRON_DISABLE_SANDBOX=1 ./azeron-software-1.5.6-x86_64.AppImageTo enable debug logs when troubleshooting:
AZERON_LOG_LEVEL=debug azeron-softwareValid levels: error (default), warn, info, debug.
Some Azeron devices (Cyborg II, Cyro, Cyro Lefty) can lock up when using an Xbox Joystick / XInput profile on Linux. The entire device becomes unresponsive — including hardware buttons — and can only be recovered by plugging into Windows/Android or switching to a non-XInput profile.
Cause: The firmware generates XInput gamepad reports on USB Interface 0. On Windows, the Xbox controller driver consumes these reports. On Linux, no driver claims Interface 0, so the STM32 MCU's USB TX buffer fills up and the firmware blocks.
App fix (automatic): The app automatically drains Interface 0 while running (v1.5.7+). No action needed — just keep the app open while using XInput mode.
Standalone fix (without the app): If the device locks up when the app is not running, you can run the drain script manually:
pip install pyusb
sudo python3 scripts/azeron-xinput-drain.pyThis claims Interface 0 and reads from it continuously, preventing the TX buffer from filling up. Stop with Ctrl+C.
Firmware updates require dfu-util installed on the system (pacman -S dfu-util, apt install dfu-util, or dnf install dfu-util). The device enters DFU mode (STM32 bootloader at 0483:df11) during the update. The udev rules already grant access to this bootloader device.
The official Azeron Software is an Electron app that communicates with the keypad via USB HID reports. The device exposes 5 USB interfaces; interface 4 (hidraw) is used for configuration. The app sends commands using either a text-based protocol (legacy firmware) or a binary protocol (modern firmware like the Cyborg II).
This project extracts the original app from the Windows installer, rebuilds the native node-hid module for Linux, and applies minimal patches for platform compatibility. No protocol reimplementation is needed — the original app logic runs as-is.
azeron-linux/
.github/workflows/
ci.yml # CI: build validation on PRs (Linux + macOS)
release.yml # CI: weekly update check + build + release (Linux + macOS)
Casks/
azeron-software.rb # Homebrew cask (macOS tap)
app/
dist/ # Webpack bundles (unpatched; patched during build)
src/resources/ # Tray icon, proving-ground profiles
package.json # App metadata and dependencies
assets/
99-azeron.rules # Udev rules for device access
build/
icon.png # App icon
firmware/ # Firmware binaries for all Azeron models
scripts/
azeron-xinput-drain.py # Standalone XInput endpoint drain (for use without the app)
patch-main.js # Platform compatibility patches (Linux + macOS)
setup.sh # Automated setup script (Linux)
setup-macos.sh # Automated setup script (macOS)
check-update.sh # Check for new Azeron releases + auto-update
build-manifest.json # Tracks upstream version and checksum
package.json # Build config (electron-builder)
PKGBUILD # Arch Linux / AUR build recipe
- Azeron for the original software and hardware
- noreza — Linux input mapper for Azeron (alternative approach)
- azeron-cli — early Rust-based protocol reverse engineering
THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USE AT YOUR OWN RISK. The authors are not responsible for any damage to hardware, misconfiguration of devices, data loss, or any other harm resulting from the use of this software, including but not limited to failed firmware updates.
This project is not affiliated with, endorsed by, or sponsored by Azeron SIA. "Azeron" is a trademark of Azeron SIA. All trademarks belong to their respective owners.
This is an unofficial repackage for personal and educational use, provided under fair use for interoperability purposes. The original Azeron Software is proprietary software by Azeron SIA. Firmware binaries are property of Azeron LTD. No proprietary source code has been modified or reverse-engineered — only minimal binary patches are applied to enable Linux platform compatibility.
If you are a representative of Azeron and have concerns about this project, please open an issue or contact the maintainer directly.