我最近购买了 Corsair k65 RGB 键盘。当然,一开始它不起作用,但是通过 ckb-opensource 驱动程序,我的 arch 系统上一切正常。
一切都很顺利,直到我每次启动系统时都开始出现错误:
usb_submit_urb(ctrl) 失败:-1
出现在我的屏幕上,系统冻结了 30 秒。之后键盘可以工作,我可以登录我的系统。但这个错误意味着什么?
[11.238682]隐藏通用0003:1B1C:1B17.0002:usb_submit_urb(ctrl)失败:-1 [11.239526]hid-generic 0003:1B1C:1B17.0002:初始化报告超时 [11.239959]输入:Corsair Corsair K65 RGB游戏键盘为/devices/pci0000:00/0000:00:1c.7/0000:07:00.0/usb5/5-1/5-1:1.1/0003:1B1C:1B17 .0002/输入/输入6 [11.291882]hid-generic 0003:1B1C:1B17.0002:输入,hidraw4:USB HID v1.11键盘[Corsair Corsair K65 RGB游戏键盘]位于usb-0000:07:00.0-1/input1上 [21.291319]hid-generic 0003:1B1C:1B17.0003:初始化报告超时 [21.291585] hid-generic 0003:1B1C:1B17.0003:hiddev0,hidraw5:USB HID v1.11设备[Corsair Corsair K65 RGB游戏键盘]在usb-0000:07:00.0-1/input2上 [31.290650]hid-generic 0003:1B1C:1B17.0004:初始化报告超时 [31.290905]hid-generic 0003:1B1C:1B17.0004:hiddev0,hidraw6:USB HID v1.11设备[Corsair Corsair K65 RGB游戏键盘]位于usb-0000:07:00.0-1/input3上
如果我使用lsusb
我得到:
总线 005 设备 002:ID 1b1c:1b17 Corsair
我听说“usbhid quirks”是一种可能的解决方法。但我该如何使用这个呢?或者有什么可能的解决方案吗?
答案1
适用于所有具有 USBhid 怪癖的 Corsair 机械键盘的解决方案。
sudo nano /etc/default/grub
或您喜欢使用的任何其他编辑器来代替 nano。
你会看到这一行
GRUB_CMDLINE_LINUX_DEFAULT=""
确保将 usbhid.quircks 放在引号之间并保存。
在我的情况我不得不把它改成这一行
GRUB_CMDLINE_LINUX_DEFAULT="usbhid.quirks=0x1B1C:0x1B17:0x20000408"
之后,更新 grub
sudo update-grub
*如果找不到该命令,您可能运行的是 grub 2.0。请改用此命令。 update-grub 命令只是一个运行 grub-mkconfig 的脚本
sudo grub-mkconfig -o /boot/grub/grub.cfg
完成后,重新启动系统。
现在它应该可以正常工作并且不会出现该消息。
使用键盘的怪癖。您可以将下面的列表用于 Corsair 键盘。
K65 RGB: usbhid.quirks=0x1B1C:0x1B17:0x20000408
K70: usbhid.quirks=0x1B1C:0x1B09:0x0x20000408
K70 RGB: usbhid.quirks=0x1B1C:0x1B13:0x20000408
K95: usbhid.quirks=0x1B1C:0x1B08:0x20000408
K95 RGB: usbhid.quirks=0x1B1C:0x1B11:0x20000408
Strafe: usbhid.quirks=0x1B1C:0x1B15:0x20000408
Strafe RGB: usbhid.quirks=0x1B1C:0x1B20:0x20000408
M65 RGB: usbhid.quirks=0x1B1C:0x1B12:0x20000408
Sabre RGB Optical: usbhid.quirks=0x1B1C:0x1B14:0x20000408
Sabre RGB Laser: usbhid.quirks=0x1B1C:0x1B19:0x20000408
Scimitar RGB: usbhid.quirks=0x1B1C:0x1B1E:0x20000408
更新 Linux 内核 4.11:HID 修复是对更多 Corsair 鼠标和键盘的支持。 K65RGB 和 K70RGB 在 Linux 4.11 中针对这些设备修复了 HID 问题。
您可以找到您的内核版本以在终端中使用此命令
uname -r
总而言之,如果您使用的是 Linux 内核 4.11,则您可能不需要执行此过程来添加 usbhid 怪癖。
答案2
只是想补充一点,我必须使用不同的代码才能让我最近购买的 K70 Lux 在 Linux Mint 18(4.4.0-21 内核)上正常工作。
K70 勒克斯:usbhid.quirks=0x1B1C:0x1B36:0x0x20000408
该代码基于 的输出lsusb
。就我而言,我有
Bus 003 Device 002: ID 1b1c:1b36 Corsair
将其与之前答案中的代码进行比较后,我发现我需要更改 USB 标识符以匹配我的设备。
答案3
这个答案完全基于@rsking84和@romano的答案,但使用了不同的方法来让你
- 无需重新启动计算机即可实现此功能
- 无需重新启动计算机即可进行调试
参考这个帖子,罗马诺的方法通过设置内核命令行参数依次用于设置模块参数usbhid模块加载时。有时usbhid将被编译到内核中,在这种情况下,这似乎是设置此参数的唯一方法。
模块参数也可以在模块加载(或重新加载)时设置。这意味着在运行时使用以下一种情况测试参数:
/usr/bin/sudo rmmod usbhid
/usr/bin/sudo modprobe usbhid.quirks=0x1B1C:0x1B17:0x200004
cat /sys/module/usbhid/parameters/quirks
(如果出现问题并且键盘停止工作,您可以通过拔下并重新插入键盘来解决此问题)
一旦你使用了这个工作(可能改变产品和供应商ID,如@rsking84的答案),你可以添加选项,如下/etc/modprobe.d/ushbid.conf
所示:
options usbhid quirks=0x1B1C:0x1B17:0x200004
这可以通过rmmod usbhid
再次运行并重新插入键盘来测试。