适用于Logitech G29的Linux USB HID设备(内核4.4)

时间:2016-05-23 00:56:24

标签: linux shell raspberry-pi kernel usb

我无法在HID输入设备上注册中断事件。在旋转Logitech G29 ff Wheel或按下按钮(ps3-mode)时使用
cat /dev/input/event0 |hexdump时没有数据更新。

cat /proc/bus/input/devices

  

I:总线= 0003供应商= 046d产品= c294
  版本= 0100 N:名称=“罗技G29驱动力赛车轮”
  P:Phys = usb-3f980000.usb-1.3 / input0
  S:Sysfs = / devices / platform / soc / 3f980000.usb / usb1 / 1-1 / 1-1.3 / 1-1.3:1.0>>> /0003:046D:C294.0001/input/input0
  U:Uniq = H:处理程序= js0 event0
  B:PROP = 0 B:EV = 1b
  B:KEY = 1fff0000 0 0 0 0 0 0 0 0 0
  B:ABS = 30027
  B:MSC = 10左

可能IN / OUT端点地址存在问题,因为我可以将ForceFeedback命令发送到设备并且可以正常工作。

  

总线001设备005:ID 046d:c294 Logitech,Inc。驱动力
  无法打开设备,一些信息将丢失   设备描述符:
  bLength 18
  bDescriptorType 1
  bcdUSB 2.00
  bDeviceClass 0(在接口级别定义)
  bDeviceSubClass 0
  bDeviceProtocol 0
  bMaxPacketSize0 16
  idVendor 0x046d Logitech,Inc。
  idProduct 0xc294驱动力
  bcdDevice 13.50
  iManufacturer 1
  iProduct 2
  iSerial 0
  bNumConfigurations 1
  配置描述符:
  bLength 9
  bDescriptorType 2
  wTotalLength 41
  bNumInterfaces 1
  bConfigurationValue 1
  iConfiguration 4
  bmAttributes 0x80
  (总线供电)
  MaxPower 98mA
  界面描述符:
  bLength 9
  bDescriptorType 4
  bInterfaceNumber 0
  bAlternateSetting 0
  bNumEndpoints 2
  bInterfaceClass 3人机接口设备
  bInterfaceSubClass 0无子类
  bInterfaceProtocol 0无
  iInterface 0
   HID设备描述符:
  bLength 9
  bDescriptorType 33
  bcdHID 1.00
  bCountryCode 33 US
  bNumDescriptors 1
  bDescriptorType 34报告
  wDescriptorLength 157
  报告描述:
  **无法使用**   端点描述符:
  bLength 7
  bDescriptorType 5
  bEndpointAddress 0x81 EP 1 IN
  bmAttributes 3
  转移类型中断
  同步类型无
  使用类型数据
  wMaxPacketSize 0x0040 1x 64字节
  bInterval 10
  端点描述符:
  bLength 7
  bDescriptorType 5
  bEndpointAddress 0x01 EP 1 OUT
  bmAttributes 3
  转移类型中断
  同步类型无
  使用类型数据
  wMaxPacketSize 0x0010 1x 16字节
  bInterval 10

如何将按钮或轴事件注册到j0 / event0。有任何提示请! 提前致谢。

更新25.05.2016:
更新:经过一些试验和错误后,我现在可以使用 usblib libusb_interrupt_transfer(handle, ( 0x81 | LIBUSB_ENDPOINT_IN), data, sizeof(data), &actual_length, 0);与设备进行通信 我可以使用端点,IN和OUT。
下一个问题是HID设备描述符是无法使用的,因此我只获得转向角的1字节数据,而且对于+ -450deg来说这个数字很小。
如何修复丢失的HID设备描述符?

更新26.05.2016:
至少我可以通过一个技巧修复“UNAVAILABLE HID设备描述符”问题。使用dmesg查看内核输出。搜索USB设备。
1: input: Logitech G29 Driving Force Racing Wheel as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/0003:046D:C294.0001/input/input0
2: logitech 0003:046D:C294.0001: input,hidraw0: USB HID v1.00 Gamepad [Logitech G29 Driving Force Racing Wheel] on usb-3f980000.usb-1.2/input0我正在1:内核输出 1-1.2:1.0 中搜索子路径。取消绑定USB设备将解决问题sudo bash -c "echo -n 1-1.2:1.0 >/sys/bus/usb/drivers/usbhid/unbind"
当我现在呼叫lsusb -vd 0x046D:0xC294时,我将看到HID设备描述符。

0 个答案:

没有答案