Skip to content

A Stream Deck is attached, but it could not be opened. Mint 21.3 #384

@Blknd-K9s

Description

@Blknd-K9s

Problem

  • streamdeck sees the Stream Deck device but cannot open it:
    A Stream Deck is attached, but it could not be opened.
  • /dev/hidraw* existed but hidapi/streamdeck could not access the device.
  • Cause: Linux Mint 21.3 handles HID devices and USB permissions differently than Ubuntu. The default README udev rules are insufficient for Original V2 devices.

Steps Taken and Why

  1. Install dependencies
sudo apt install libhidapi-libusb0 python3-pip libxcb-xinerama0
python3 -m pip install --upgrade pip
  • libhidapi-libusb0 → kernel library for HID communication.
  • libxcb-xinerama0 → required for Qt to load X11 plugins.
  • Upgrading pip ensures Python packages install correctly.

  1. Configure udev rules

File: /etc/udev/rules.d/99-streamdeck.rules:

SUBSYSTEM=="usb", ATTR{idVendor}=="0fd9", ATTR{idProduct}=="006d", MODE="0666", GROUP="plugdev"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006d", MODE="0666", GROUP="plugdev"
  • The first line gives read/write access to the USB device node, which libusb or hidapi may query.
  • The second line ensures all hidraw interfaces are readable/writable by the user.
  • MODE="0666" → read/write for all users.
  • GROUP="plugdev" → ensures standard users in the plugdev group can access the device.

Reload rules:

sudo udevadm control --reload-rules
sudo udevadm trigger
  • Reloading and triggering ensures changes apply immediately.
  • Unplug/replug the Stream Deck for the rule to take effect.

  1. Install Python hidapi and test access
python3 -m pip install --user hidapi --upgrade
python3 -c "
import hid
for device in hid.enumerate():
    if device['vendor_id'] == 0xfd9 and device['product_id'] == 0x006d:
        d = hid.device()
        d.open(device['vendor_id'], device['product_id'])
        print('Device opened successfully!')
        d.close()
"
  • Ensures Python can communicate with the Stream Deck via HID.
  • Confirms the udev permissions are correct.
  • If this fails, StreamDeck-UI cannot work regardless of backend.

  1. Install Stream Deck GUI package
python3 -m pip install --user streamdeck
  • Installs the GUI in the user environment (~/.local/bin).
  • Avoids conflicts with system Python packages.

  1. Launch GUI with hidapi backend
STREAMDECK_BACKEND=hidapi QT_QPA_PLATFORM=xcb streamdeck
  • STREAMDECK_BACKEND=hidapi → forces the application to use hidraw devices instead of libusb, which works on Mint.
  • QT_QPA_PLATFORM=xcb → ensures Qt uses the X11 plugin, required for Mint Cinnamon.
  • GUI now detects the device, allows editing buttons, and updates hardware.

Key Insights

  • On Mint 21.3, both the USB node and hidraw interface must be explicitly accessible.
  • 0666 permissions plus plugdev group ensures Python and GUI can open the device.
  • hidapi is the only backend guaranteed to work on Original V2 devices under Mint; libusb fails due to missing access to /dev/bus/usb.
    ** Worth noting that this took an EMBARRASSINGLY long time to resolve.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions