Default LibUSB HIDAPI Backend

This is the default and recommended backend - a cross platform library for communicating with HID devices. Most systems will have this as a system package available for easy installation.

Windows

Windows systems requires additional manual installation of a DLL in order to function. The latest source for the hidapi.dll DLL is the releases page of the libUSB GitHub project.

Place the DLL into a folder that has been added to your system %PATH% directory list (typically this includes the C:\Windows\System32 folder but adding a new path would be recommended instead of modifying your Windows directory).

Ensure you use the correct DLL version for your installed Python version; i.e. if you are using 32-bit Python, install the 32-bit hidapi.dll.

MacOS (Darwin)

On MacOS systems, you can choose to either compile the HIDAPI project yourself, or install it via one of the multiple third party package managers (e.g. brew install hidapi, when using Homebrew).

Linux (Ubuntu/Debian)

On Linux, the libhidapi-libusb0 package is required can can be installed via the system’s package manager.

The following script has been verified working on a Raspberry Pi (Models 2B and 4B) running a stock Debian Buster image, to install all the required dependencies needed by this project on a fresh system:

# Ensure system is up to date, upgrade all out of date packages
sudo apt update && sudo apt dist-upgrade -y

# Install the pip Python package manager
sudo apt install -y python3-pip python3-setuptools

# Install system packages needed for the default LibUSB HIDAPI backend
sudo apt install -y libudev-dev libusb-1.0-0-dev libhidapi-libusb0

# Install system packages needed for the Python Pillow package installation
sudo apt install -y libjpeg-dev zlib1g-dev libopenjp2-7 libtiff5

# Install python library dependencies
pip3 install wheel
pip3 install pillow

# Add udev rule to allow all users non-root access to Elgato StreamDeck devices:
sudo tee /etc/udev/rules.d/10-streamdeck.rules << EOF
    SUBSYSTEMS=="usb", ATTRS{idVendor}=="0fd9", GROUP="users", TAG+="uaccess"
    EOF

# Reload udev rules to ensure the new permissions take effect
    sudo udevadm control --reload-rules

# Install the latest version of the StreamDeck library via pip
pip3 install streamdeck

Note that after adding the udev rules, you will need to remove and re-attach any existing StreamDeck devices to ensure they adopt the new permissions. This should allow you to access StreamDeck devices without needing root permissions.