2013-03-05 2 views
3

J'essaie de communiquer avec un périphérique (qui n'a pas de pilote Linux) via libusb. J'ai écrit beaucoup de code de base et utilisé le logiciel de surveillance USB sur Windows (pour lequel il y a un pilote) pour trouver les codes que je dois lui envoyer. Cependant, seulement 1 point final est affiché lorsque je joue « lsusb -v -d 1267: 0000 », comme indiqué ci-dessous:lsusb: seulement 1 point de terminaison disponible

Bus 003 Device 005: ID 1267:0000 Logic3/SpectraVideo plc 
Device Descriptor: 
    bLength    18 
    bDescriptorType   1 
    bcdUSB    1.10 
    bDeviceClass   0 (Defined at Interface level) 
    bDeviceSubClass   0 
    bDeviceProtocol   0 
    bMaxPacketSize0   8 
    idVendor   0x1267 Logic3/SpectraVideo plc 
    idProduct   0x0000 
    bcdDevice   0.00 
    iManufacturer   0 
    iProduct    0 
    iSerial     0 
    bNumConfigurations  1 
    Configuration Descriptor: 
    bLength     9 
    bDescriptorType   2 
    wTotalLength   25 
    bNumInterfaces   1 
    bConfigurationValue  1 
    iConfiguration   0 
    bmAttributes   0x80 
     (Bus Powered) 
    MaxPower    100mA 
    Interface Descriptor: 
     bLength     9 
     bDescriptorType   4 
     bInterfaceNumber  0 
     bAlternateSetting  0 
     bNumEndpoints   1 
     bInterfaceClass  255 Vendor Specific Class 
     bInterfaceSubClass  0 
     bInterfaceProtocol  0 
     iInterface    0 
     Endpoint Descriptor: 
     bLength     7 
     bDescriptorType   5 
     bEndpointAddress  0x81 EP 1 IN 
     bmAttributes   3 
      Transfer Type   Interrupt 
      Synch Type    None 
      Usage Type    Data 
     wMaxPacketSize  0x0008 1x 8 bytes 
     bInterval    8 
Device Status:  0x0000 
    (Bus Powered) 

Le problème est qu'il devrait y avoir un point de terminaison d'écriture que je peux envoyer des données vers le bas, Pourtant, seul le point de terminaison 0x81 apparaît, ce qui, d'après ce que je comprends, est un point de terminaison de lecture (je suis très nouveau à ce sujet). Ai-je besoin de faire quelque chose pour pouvoir accéder à ce point de terminaison?

Répondre

0

Vous n'avez pas revendiqué votre appareil (Google revendiquant un appareil avec libusb), vous devez exécuter en tant que root, ou l'appareil auquel vous faites affaire n'a qu'une seule méthode de rapport. Oui, cela arrive.

Sur n'importe quel périphérique HID, il existe trois méthodes de communication possibles: Input, Ouput et Feature Report. Cependant, selon le descripteur HID, votre appareil ne peut en supporter qu'un. Dans ce cas, je suppose qu'il ne supporte que les rapports de fonctionnalités. Heureusement, ces rapports fonctionnent en entrée et en sortie. (C'est ainsi que le DigiSpark est décrit.)

Peut-être qu'aucune de ces options ne fonctionnera, mais elles valent le coup!

Questions connexes