linux内核区分hid设备,适用于Logitech G29的Linux USB HID设备(内核4.4)

我无法在HID输入设备上注册中断事件 . 我使用时没有数据更新

旋转Logitech G29 ff Wheel或按下按钮(ps3-mode)时 cat /dev/input/event0 |hexdump .

cat /proc/bus/input/devices

I:Bus = 0003 Vendor = 046d Product = c294 Version = 0100 N:Name =“Logitech G29 Driving Force Racing Wheel”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 endpoints 地址存在问题,因为我可以将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报告描述符:** UNAVAILABLE ** endpoints 描述符:bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3传输类型中断同步类型无用法类型数据wMaxPacketSize 0x0040 1x 64字节bInterval 10 endpoints 描述符:bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 3传输类型中断同步类型无用法类型数据wMaxPacketSize 0x0010 1x 16字节bInterval 10

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

Update 25.05.2016:

更新:经过一些试验和错误后,我现在可以使用 usblib 和 libusb_interrupt_transfer(handle, ( 0x81 | LIBUSB_ENDPOINT_IN), data, sizeof(data), &actual_length, 0); 与设备进行通信 . 我可以使用 endpoints ,IN和OUT .

下一个问题是HID设备描述符是无法使用的,所以我只获得1转的转向角数据,这对于-450deg来说是微不足道的 .

如何修复丢失的HID设备描述符?

Update 26.05.2016:

至少我可以通过一个技巧修复"UNAVAILABLE HID Device Descriptor"问题 . 使用 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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值