For the complete documentation index, see llms.txt. This page is also available as Markdown.

Error LIBUSB_ERROR_ACCESS

En entornos Linux modernos, es habitual en placas USB como Arduino cuando no existen reglas udev adecuadas ver el error LIBUSB_ERROR_ACCESS

LIBUSB_ERROR_ACCESS es un error de libusb que indica que el proceso no tiene permisos suficientes para acceder al dispositivo USB a bajo nivel. Suele aparecer cuando una aplicación (Arduino IDE, dfu-util, OpenOCD, etc.) intenta abrir un dispositivo USB sin privilegios adecuados o cuando otro servicio del sistema ya lo está ocupando (frecuentemente ModemManager en dispositivos CDC/ACM).

Solución

📦 Instalamos los siguientes paquetes

sudo apt install -y libusb-1.0-0 dfu-util dfu-programmer

📝 Creamos el fichero /etc/udev/rules.d/60-arduino.rules con el siguiente contenido:

# ------------------------------------------------------------
# Arduino GIGA R1 WiFi (CDC ACM)
# ------------------------------------------------------------
SUBSYSTEM=="tty", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0266", \
  MODE="0666", GROUP="dialout", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1", \
  ENV{ID_MM_CANDIDATE}="0"

SUBSYSTEM=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0366", \
  MODE="0666", GROUP="dialout", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1", \
  ENV{ID_MM_CANDIDATE}="0"

# ------------------------------------------------------------
# STM32 DFU (GIGA / STM32H7)
# ------------------------------------------------------------
SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", \
  MODE="0666", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"

# ------------------------------------------------------------
# Arduino UNO
# ------------------------------------------------------------
SUBSYSTEM=="tty", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0043", \
  MODE="0666", GROUP="dialout", TAG+="uaccess"

# ------------------------------------------------------------
# CH340
# ------------------------------------------------------------
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", \
  MODE="0666", GROUP="dialout", TAG+="uaccess"

Reiniciar daemon udev y aplicar reglas

Verificación

Salida esperada

Última actualización