我无法在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设备描述符。