> Complete documentation index: [llms.txt](/llms.txt). Markdown versions of all pages are available by appending `.md` to page URLs.

# Solving USB Connection Issues on Linux

> Install the one-time udev rule that lets the current user open a Binho Supernova, Pulsar or Atira on Linux, and fix the symptoms when it is missing.

The Supernova, the Pulsar and the Atira need one `udev` rule on Linux, installed once. Without it, the current user cannot open the adapter. This applies to Mission Control 3 (desktop and [mc3.binho.io](https://mc3.binho.io)), PyCosmicSDK and CosmicSDK.

On Windows and macOS, see [Windows and macOS](/support/troubleshooting/windows-and-macos/).

## Symptoms

* The adapter is not found, although `lsusb` lists it.
* PyCosmicSDK lists the adapter with an empty serial number.
* Opening the adapter fails with an error such as:

  ```text
  Open connection failed. Exception type: <class 'OSError'>. Exception message: open failed.
  ```

## Install the udev Rule

This is the same rule that ships with CosmicSDK (`udev/65-binho-hid.rules`) and that PyCosmicSDK documents.

:::note
Using the CosmicSDK Linux download? It already contains the rule and an installer: run `sudo ./scripts/install_udev_rules.sh`, then unplug and replug the adapter. Skip to [Check the Adapter](#check-the-adapter).

:::

### 1. Create the Rules File

```sh
sudo nano /etc/udev/rules.d/65-binho-hid.rules
```

Keep the `65-` prefix: the `uaccess` tag only works from a rules file that sorts before `73-seat-late.rules`.

### 2. Add the Rules

```text
# Binho Supernova: commands (HID) and large transfers (USB). Same ID in the bootloader.
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="82fc", MODE="0660", GROUP="plugdev", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="82fc", MODE="0660", GROUP="plugdev", TAG+="uaccess"

# Binho Pulsar: commands (HID) and large transfers (USB). Same ID in the bootloader.
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="82fd", MODE="0660", GROUP="plugdev", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="82fd", MODE="0660", GROUP="plugdev", TAG+="uaccess"

# Binho Atira: HID control and USB (CMSIS-DAP and SPI bulk).
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="8347", MODE="0660", GROUP="plugdev", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="8347", MODE="0660", GROUP="plugdev", TAG+="uaccess"

# Binho Atira bootloader.
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="82fe", MODE="0660", GROUP="plugdev", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="82fe", MODE="0660", GROUP="plugdev", TAG+="uaccess"

# Serial ports of the Supernova, Pulsar and Atira: keep the distribution's group, add the logged-in user.
SUBSYSTEM=="tty", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="82fc", TAG+="uaccess"
SUBSYSTEM=="tty", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="82fd", TAG+="uaccess"
SUBSYSTEM=="tty", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="8347", TAG+="uaccess"
```

| Part of the rule | What it does |
| --- | --- |
| `hidraw` lines | Access to the HID interface, which carries every command. |
| `usb` lines | Access to the USB interface used for large (bulk) transfers. Without them, ordinary transfers work but large transfers are unavailable. |
| `TAG+="uaccess"` | Gives the logged-in user access. This covers distributions without a `plugdev` group, such as Fedora and Arch. |
| `GROUP="plugdev"` | Also gives the `plugdev` group access, where it exists (Debian, Ubuntu). For remote or headless sessions, add the current user to it: `sudo usermod -aG plugdev $USER`, then log out and back in. |

:::note
The Binho Nova appears as a serial port (`/dev/ttyACM*`) rather than a HID device. For the Nova, add the current user to the distribution's serial group instead, usually `dialout` (`sudo usermod -a -G dialout $USER`), then log out and back in.

:::

### 3. Reload the Rules

```sh
sudo udevadm control --reload-rules
sudo udevadm trigger
```

Then unplug and replug the adapter so the new permissions apply. If the adapter still cannot be opened, reboot the computer.

:::caution
Earlier versions of this page used a `binho` group in `/etc/udev/rules.d/99-binho.rules`, or a `SUBSYSTEM=="usb", MODE="0666"` line without a vendor ID. Delete those files or lines: the 0666 line opens every USB device on the computer to all users. Then follow the steps above.

:::

## Check the Adapter

Check that the adapter's HID node is readable by the current user. With the adapter plugged in:

```sh
ls -l /dev/hidraw*
getfacl /dev/hidraw* 2>/dev/null | grep -B3 "user:$USER"
```

A Binho node shows `crw-rw----` with group `plugdev`, or an ACL entry for the current user. Then open the adapter from the tool. With [PyCosmicSDK](/software/pycosmicsdk/):

```sh
python -c "import pycosmicsdk; print(pycosmicsdk.list_devices())"
```