2013-05-07 5 views
6

Gibt es einen Bash-Befehl, ein Programm oder eine libusb-Funktion (obwohl ich keine gefunden habe), die mir angibt, was die OUT- oder IN-Endpunkte eines USB-Geräts sind?kennen den Endpunkt eines USB-Geräts

Zum Beispiel, bNumEndpoints von libusb_interface_descriptor (aus libusb1.0 library) zeigt mir mein USB-Laufwerk hat 3 Endpunkte, aber woher weiß ich, was ist ihre ID-Nummer?

Antwort

4

Ich fand schließlich die Antwort in lubusb-1.0. In war eigentlich keine Funktion, sondern eine Struktur Feld:

uint8_t libusb_endpoint_descriptor :: bEndpointAddress

Die Adresse des Endpunkts dieses Descriptor beschrieben.

Bits 0: 3 sind die Endpunktnummer. Bits 4: 6 sind reserviert. Bit 7 zeigt die Richtung an, siehe libusb_endpoint_direction. nur musste diese Zeilen schreiben, um die verfügbaren Endpunkte anzuzeigen

Für jede Schnittstelle für den USB-Laufwerk, I:

cout<<"Number of endpoints: "<<(int)interdesc->bNumEndpoints<<endl; 
for(int k=0; k<(int)interdesc->bNumEndpoints; k++) { 
     epdesc = &interdesc->endpoint[k]; 
     cout<<"Descriptor Type: "<<(int)epdesc->bDescriptorType<<endl; 
    cout<<"EP Address: "<<(int)epdesc->bEndpointAddress<<endl; 
} 

Wo epdesc ist die libusb_endpoint_descriptor und interdesc die libusb_interface_descriptor ist.

8

Nachdem Sie das Gerät beansprucht haben, führen diese (wobei $ den Terminal Eintrittspunkt darstellt):

$ sudo lsusb -v -d 16c0:05df 

Wo 16c0: 05df Ihr Hersteller- und Produkt-IDs durch einen Doppelpunkt getrennt sind. (Wenn Sie nicht wissen, diese, geben Sie lsusb und herauszufinden, welches Gerät Ihr ist durch Herausziehen und wieder laufen lsusb)

Wenn Sie verwirrt Verwendung der lsusb Mann Seite bekommen:

http://linux.die.net/man/8/lsusb

Dann Sobald Ihre Beschreibung angezeigt wird, suchen Sie die Zeile bEndpointAddress und der folgende Hex-Code ist der Endpunkt für diesen bestimmten Bericht.

Verwandte Themen