3

I am trying to communicate with a device (that has no linux driver) via libusb. I have written a lot of the basic code and used USB snooping software on windows (for which there is a driver) to find out the codes I need to send to it. However, only 1 end point is being shown when I perform "lsusb -v -d 1267:0000" as shown below:

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)

The problem is that there should be a write endpoint that I can send data down, yet only the 0x81 endpoint is showing up which, from my understanding, is a read endpoint (I'm very new to this). Do I need to do something in order be able to access this endpoint?

Ionică Bizău
  • 109,027
  • 88
  • 289
  • 474
UnknownFury
  • 304
  • 1
  • 12

1 Answers1

0

You either haven't claimed your device (google claiming a device with libusb), you need to run as root, or the device you're dealing with only has one method of report. Yes, that does happen.

On any HID device there are three possible methods of communication: Input, Ouput, and Feature Reports. Depending on the HID descriptor though, your device may only support one. In that case, I'd guess it is only supports Feature reports. Luckily these reports work input and output. (This is the way the DigiSpark is described.)

Maybe none of these options will work, but they're worth a shot!

eatonphil
  • 13,115
  • 27
  • 76
  • 133