lsusb: доступна только 1 конечная точка

Я пытаюсь связаться с устройством (у которого нет драйвера linux) через libusb. Я написал много базового кода и использовал программное обеспечение USB snooping для Windows (для которого есть драйвер), чтобы узнать коды, которые мне нужно отправить на него. Однако при выполнении "lsusb -v -d 1267:0000" отображается только 1 конечная точка, как показано ниже:

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)

Проблема в том, что должна существовать конечная точка записи, чтобы я мог отправлять данные, но отображается только конечная точка 0x81, которая, насколько я понимаю, является конечной точкой чтения (я очень новичок в этом). Нужно ли что-то делать, чтобы иметь доступ к этой конечной точке?

1 ответ

Вы либо не заявили о своем устройстве (Google запрашивает устройство с libusb), вам нужно работать от имени пользователя root, либо у устройства, с которым вы работаете, есть только один метод отчета. Да, это происходит.

На любом устройстве HID существует три возможных способа связи: вход, выход и отчеты о функциях. В зависимости от дескриптора HID ваше устройство может поддерживать только один. В этом случае, я думаю, он поддерживает только отчеты о функциях. К счастью, эти отчеты работают на входе и выходе. (Так описывается DigiSpark.)

Возможно, ни один из этих вариантов не сработает, но они того стоит!

Другие вопросы по тегам