mirajazz 0.4.0

A library for interfacing with Mirabox and Ajazz stream controller devices
Documentation

Mirajazz

Crates.io Version Crates.io License

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
  • Uses async-hid instead of hidapi-rs. For old synchronous implementation use version v0.3.0
  • Async only

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

Current limitations

  • Depends on tokio for wrapping synchronous image manipulation tasks
  • No way to read firmware version due to async-hid not supporting feature reports for now

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