Ich versuche libusb zu verwenden, bekomme aber folgende Fehlermeldung:
usbfs: Prozess 24665 (Myprogramm) beanspruchte die Schnittstelle 0 vor der Verwendung nicht
Ich verstehe nicht wirklich warum, denn soweit ich das beurteilen kann, mache ich es nach der Beschreibung in der Bibliothek. Hier ist mein Code:
%Vor%Wie Sie sehen können, beanspruche ich die Schnittstelle vor der Übertragung. (Ich habe den gleichen Code auch mit anderen USB-Geräten ausprobiert, nur für den Fall, dass das etwas damit zu tun haben würde.)
Ich benutze libusb-1.0.9, welches die neueste Version ist, die ich finden konnte. Ich führe dieses Ding auf Ubuntu 12.04_64 (Präzises Pangolin).
Probieren Sie calling libusb_set_debug(context, where_to)
aus, um weitere Debug-Informationen von libusb zu erhalten. Das Where_to für die Nachrichten ist eine Ganzzahl:
Dies ist aus der libusb-Dokumentation , die ziemlich gut ist.
Ich habe Code ausgeführt, bei dem die Fehlermeldungen gut aussahen, aber intern hat er berichtet, dass ein anderer Prozess einen exklusiven Anspruch darauf hatte, also konnte ich ihn nicht verwenden.
hatte gerade das gleiche Problem mit libusb-1.0
; Ich hatte ursprünglich diese Sequenz:
... und dafür wurde die "nicht beanspruchte Schnittstelle" generiert, als das erste libusb_bulk_transfer
ausgeführt wurde (aber keine nachfolgenden, oben nicht gezeigten), was ich durch gdb
bestätigt habe. ( übrigens, diese Fehlermeldung kommt von / linux / drivers / usb / core / devio.c )
Diese Seite: USB-Hid-Problem · Yubico / Yubikey-Personalisierung Wiki · GitHub verweist auf einen Fix für libusb-0.1
, der die entsprechende "detach_driver" -Funktion aufgerufen hat; also habe ich begonnen, den "detach_driver" -Teil in meinem Code zu verschieben - und schließlich scheint diese Sequenz die "Schnittstelle nicht beansprucht" -Nachricht loszuwerden:
Offensichtlich, wenn der Treiber zuerst getrennt wird und dann die Schnittstelle beansprucht wird - dann werden keine Fehler erzeugt. Aber das ist auch, was Sie dort in OP haben - also denke ich, der Trick für OP wäre detach
, dann set configuration
und danach claim interface
...
Hoffe, das hilft,
Prost!
Sie sollten alle Ergebniswerte überprüfen, dann können Sie leicht herausfinden, was falsch läuft. Überprüfen Sie einfach alle Ergebniswerte, wenn sie das zurückgeben, was Sie erwarten.
Bestätigen:
Tags und Links usb libusb libusb-1.0