#devices #image #plugin #mirajazz

mirajazz

A library for interfacing with Mirabox and Ajazz stream controller devices

2 unstable releases

new 0.2.0 Apr 25, 2025
0.1.0 Apr 21, 2025

#434 in Hardware support

Download history 76/week @ 2025-04-16

76 downloads per month

MPL-2.0 license

27KB
575 lines

Mirajazz

A Rust crate for interfacing with Mirabox and Ajazz "stream controller" devices

This is a hardfork of elgato-streamdeck crate, with notable differences:

  • No Elgato-related code. For that you should use an original library
  • No device-specific code in the library, which devices to support is up to you
  • No async interface (for now), due to hidapi-rs lack of proper async support

The idea is to have a common lowlevel library serving as a backbone for device-specific OpenDeck plugins

udev rules

For using on Linux, you are required to bring your own udev rules for all the VID/PID pairs you want to support. Without the udev rules, you wouldn't be able to connect to the devices from the userspace.

Here's an example for Ajazz AKP03R (VID 0x0300, PID 0x1003):

SUBSYSTEM=="usb", ATTR{idVendor}=="0300", ATTR{idProduct}=="1003", MODE="0660", TAG+="uaccess", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0300", ATTRS{idProduct}=="1003", MODE="0660", TAG+="uaccess", GROUP="plugdev"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTR{idVendor}=="0300", ATTR{idProduct}=="1003", MODE="0660", TAG+="uaccess", GROUP="plugdev"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0300", ATTRS{idProduct}=="1003", MODE="0660", TAG+="uaccess", GROUP="plugdev"

Acknowledgments

  • @TheJebForge for the elgato-streamdeck library
  • @ZCube for initial ajazz devices support in the original library
  • @teras for more devices and fixes in the original library
  • @nekename for reviewing my code for "v2" devices and maintaining original library

Commit history of the original library can be found here

Dependencies

~2–13MB
~91K SLoC