libusb impossible d'ouvrir le périphérique USB, l'autorisation isse. NetBeans/Ubuntu
Je suis en train d'écrire une application C/C++ avec NetBeans basé sur libusb-1.0 sur Ubuntu 12.04.
Je peux obtenir des informations de base à partir du périphérique USB (par exemple, la description de l'interface), mais je ne suis pas en mesure d'ouvrir l'appareil.
La fonction libusb_open me donne l'erreur:
libusb:error [op_open] libusb couldn't open USB device /dev/bus/usb/002/003: Permission denied.
libusb:error [op_open] libusb requires write access to USB device nodes.
Je comprends que j'ai besoin de modifier les autorisations, mais je ne sais pas comment faire (je suis un Linux de base de l'utilisateur). Merci!!!!
merci les gars. Je résolus d'une manière différente, et il fonctionne. Mais je pense que c'est une solution similaire. Dans le terminal j'ai donné: sudo su Que DEPUIS le TERMINAL j'ai exécuter netbeans (de la commande à exécuter, il peut être trouvé en cliquant sur NetBeans icône avec un clic droit > Propriétés > Commande) Compiler/exécuter dans Netbeans pas de problème de restriction de plus. Peut-être que quelqu'un d'autre peut trouver utile
OriginalL'auteur raff5184 | 2014-03-28
Vous devez vous connecter pour publier un commentaire.
Eh bien, vous pouvez exécuter votre application en utilisateur root mode et de se débarrasser avec la permission
question. Cependant, vous devriez être conscient des conséquences de l'exécution du programme en
racine de l'utilisateur et ne devraient pas le faire jusqu'à ce que vous comprendre pleinement l'utilisateur/le groupe la permission
sur UNIX système. Toutefois, si c'est votre machine de test, je pense que vous pouvez faire
la suite(pour le nom du programme ./un.out):
Maintenant, vous devriez être en mesure d'exécuter le programme avec succès.
Toutefois, si vous souhaitez fournir/modifier les autorisations de lecture/écriture/exécution pour un utilisateur particulier, vous devriez essayer de comprendre au sujet de chmod de commande. Vous devez modifier les autorisations de répertoire(/dev/bus/usb/002/) et un fichier particulier résidant dans ce répertoire. Espérons que cette information vous sera utile.
OriginalL'auteur Mantosh Kumar
Je pense que la meilleure façon de le faire est de créer une règle udev fichier pour vos appareils. Il suffit de créer un fichier texte les noms de quelque chose comme
myVendor.rules
et de mettre le texte suivant (où1234
est votre ID de fournisseur de:Mettre cette udev fichier dans votre
/etc/udev/rules.d/
répertoire. Cette udev fichier accorde un accès en lecture et écriture à TOUS les utilisateurs, des utilisateurs non privilégiés, pour TOUS les périphériques USB qui ont un correspondant de l'ID du Fournisseur. Cela signifie que votre appareil est accessible pour les utilisateurs non-root, même sans modification de votre exécutable ou de l'exécuter avec la commande sudo.Ce udev exemple est spécifique à la idVendor, mais vous pouvez vous limiter à une VID et PID pour être plus stricte. Vérifier cet article pour l'écriture de udev règles pour plus d'informations.
Oups, désolé, j'ai ajouté qu'à la réponse, vous aurez envie de placer le fichier dans
/etc/udev/rules.d/
.Cela n'a pas fonctionné pour moi jusqu'à ce que j'ai ajouté un colon de bits qui définit la valeur du mode:
MODE:="0666"
. J'ai aussi seulement besoin de la ligne d'usb, et pas le usb_device. Je suis sous Debian 7.7.c'est la bonne solution pour le problème, pas la accepté..
Je trouve que quand j'utilise les minuscules pour ceux nombres hexadécimaux. Quelqu'un sait pourquoi?
OriginalL'auteur Preston
Je pense que cela pourrait être une solution temporaire pour le problème tout en Preston solution serait de travailler de manière cohérente.
1. Vérifiez le port usb auquel est attribuée pour votre appareil
Vous pouvez trouver le port usb auquel est attribué à votre appareil en invoquant
ls
commande deux fois(d'abord avec l'appareil déconnecté et la seconde avec dispositif de connecté).Disons /dev/bus/usb/003/008 est de votre appareil.
2. Donner l'autorisation d'écriture pour tout le monde(les autres)
En fonction de la sortie de
ls -l
commande, utilisateur root(groupe) a autorisation en lecture/écriture sur003/008 port
tout autre utilisateur n'a qu'une autorisation de lecture.Vous pouvez vous permettre chaque utilisateur d'écrire sur le périphérique spécifique à l'aide de
chmod
de commande. Lors de l'utilisationchmod
commande, vous aurez besoin desudo
autorisation.ou
Maintenant, si vous vérifiez l'autorisation de l'usb, vous devez voir cette sortie
3. Chaque fois que de brancher ou l'arrêt du système répétez l'étape 1,2
Si vous branchez l'appareil à partir du port usb ou d'éteindre le système, ce que vous avez fait pour votre port usb de réinitialisation.
Vous devez répéter l'étape 1,2 à nouveau.
C'est pourquoi je dis que ma solution est temporaire(volatile).
Lectures supplémentaires
Je trouve ces deux articles de blog pourrait être utile pour votre compréhension.
OriginalL'auteur JaeJun LEE
Après l'ajout de la règle de
/etc/udev/rules.d/
quelque chose comme:
n'oubliez pas de recharger des règles:
OriginalL'auteur Andrei Emeltchenko