Saltar al contenido

libusb no puede abrir el dispositivo USB, permiso isse. NetBeans / Ubuntu

Solución:

Creo que la mejor manera de hacer esto es crear un archivo de reglas udev para sus dispositivos. Simplemente cree un archivo de texto con nombres como myVendor.rules y poner el siguiente texto en él (donde 1234 es su ID de proveedor:

SUBSYSTEM=="usb", ATTRS{idVendor}=="1234", MODE="0666"
SUBSYSTEM=="usb_device", ATTRS{idVendor}=="1234", MODE="0666"

Pon este archivo udev en tu /etc/udev/rules.d/ directorio. Este archivo udev otorgará acceso de lectura y escritura a TODOS los usuarios, incluidos los usuarios sin privilegios, para TODOS los dispositivos USB que tengan una ID de proveedor coincidente. Esto significa que su dispositivo es accesible para usuarios no root incluso sin modificar su ejecutable o ejecutarlo con sudo.

Este ejemplo de udev es específico de idVendor, pero puede restringirlo a un VID y PID para que sea más estricto. Consulte este artículo para escribir reglas de udev para obtener más información.

Creo que esta podría ser una solución temporal para el problema, mientras que la solución de Preston funcionaría de manera consistente.

1. Compruebe qué puerto USB está asignado a su dispositivo

Puede averiguar qué puerto usb está asignado a su dispositivo invocando ls comando dos veces (primero con el dispositivo desconectado y segundo con dispositivo conectado).

$ ls -l /dev/bus/usb/00*
/dev/bus/usb/001:
total 0
crw-rw-r-- 1 root root 189, 0  1월 10 12:08 001
crw-rw-r-- 1 root root 189, 1  1월 10 12:08 002

/dev/bus/usb/002:
total 0
crw-rw-r-- 1 root root 189, 128  1월 10 12:08 001
crw-rw-r-- 1 root root 189, 129  1월 10 12:08 002

/dev/bus/usb/003:
total 0
crw-rw-r-- 1 root root 189, 256  1월 10 12:08 001
crw-rw-r-- 1 root root 189, 257  1월 10 12:08 002
crw-rw-r-- 1 root root 189, 258  1월 10 12:08 003
crw-rw-r-- 1 root root 189, 259  1월 10 12:08 004
crw-rw-r-- 1 root root 189, 260  1월 10 12:08 005
crw-rw-r-- 1 root root 189, 263  1월 10 15:42 008 <-- this is your device

Digamos / dev / bus / usb / 003/008 es tu dispositivo.

2. Dar permiso de escritura para todos (otros)

Según la salida de ls -l mando, usuario raíz (grupo) tiene permiso de lectura / escritura en 003/008 port tiempo otro usuario solo tiene permiso de lectura.

crw-rw-r-- 1 root root 189, 263  1월 10 15:42 008

Puedes permitir cada usuario escribir en un dispositivo específico usando chmod mando. Durante el uso chmod comando, necesitarás sudo permiso.

$ sudo chmod o+w /dev/bus/usb/003/008

o

$ sudo chmod a+w /dev/bus/usb/003/008

Ahora, si verifica el permiso de usb, debe ver esta salida

$ ls -l /dev/bus/usb/003/008
crw-rw-rw- 1 root root 189, 263  1월 10 15:42 /dev/bus/usb/003/008

3. Cada vez que lo desconecte o apague el sistema, repita el paso 1,2

Si conecta el dispositivo desde el puerto USB o apaga el sistema, lo que hizo para su puerto USB se reiniciará.

Tienes que repetir el paso 1, 2 de nuevo.

Por eso digo que mi solución es temporal (volátil).

Lecturas adicionales

Creo que estos dos artículos de blog serían útiles para su comprensión.

  • Guía para principiantes sobre permisos de archivos y directorios
  • Comando Unix LS: 15 ejemplos prácticos

Bueno, puede ejecutar su aplicación en modo de usuario root y deshacerse del problema de los permisos. Sin embargo, debe ser consciente de las consecuencias de ejecutar el programa en el usuario root y no debe hacerlo hasta que comprenda completamente el permiso de usuario / grupo en el sistema basado en UNIX. Sin embargo, si es su máquina de prueba, creo que puede hacer lo siguiente (para el nombre del programa ./a.out):

  1. Abre la terminal
  2. Vaya al directorio donde está presente el ejecutable de su programa (verifique que su netbeans crea el proyecto y escriba cd “completepath).
  3. sudo ./a.out
  4. Ahora el símbolo del sistema le pedirá ingresar la contraseña de root

Ahora debería poder ejecutar el programa correctamente.

Sin embargo, si desea proporcionar / cambiar el permiso de lectura / escritura / ejecución para un usuario en particular, debe intentar comprender el comando chmod. Debería cambiar el permiso al directorio (/ dev / bus / usb / 002 /) y cualquier archivo en particular que resida en este directorio. Espero que esta información sea de utilidad.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *