usb_submit_urb(ctrl) 失败:-1 Corsair k65 RGB 键盘

usb_submit_urb(ctrl) 失败:-1 Corsair k65 RGB 键盘

我最近购买了 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 问题。

请参阅提交:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=deaba636997557fce46ca7bcb509bff5ea1b0558

您可以找到您的内核版本以在终端中使用此命令 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再次运行并重新插入键盘来测试。

相关内容