web-dev-qa-db-ja.com

usb_submit_urb(ctrl)が失敗しました:-1 Corsair k65 RGBキーボード

最近Corsair k65 RGBキーボードを購入しました。もちろん、最初は動作しませんでしたが、ckb-opensourceドライバーを使用すると、Archシステムですべてを動作させることができました。

システムを起動するたびにエラーが発生し始めるまで、すべてがうまくいきました。

usb_submit_urb(ctrl)が失敗しました:-1

画面にが表示され、システムが30秒間フリーズします。その後、キーボードが機能し、システムにログインできます。しかし、エラーはどういう意味ですか?

[11.238682] hid-generic 0003:1B1C:1B17.0002:usb_submit_urb(ctrl)failed:-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/input/input6 
 [11.291882] hid-generic 0003:1B1C:1B17.0002:input、hidraw4:USB HID v1.11 Keyboard [Corsair Corsair K65 RGB Gaming Keyboard] on 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ゲーミングキーボード] on 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-0000:07:00.0-1/input3 [.____上のUSB HID v1.11デバイス[Corsair Corsair K65 RGBゲーミングキーボード] ]

lsusbを使用すると、次のようになります。

バス005デバイス002:ID 1b1c:1b17 Corsair

「usbhid癖」が可能な回避策であると聞きました。しかし、これをどのように使用しますか?それともこれに可能な解決策はありますか?

5
Romano

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癖を追加するためにこのプロセスを実行する必要がない可能性があります。

6
Romano

最近購入したK70 LuxをLinux Mint 18(4.4.0-21カーネル)で正しく動作させるために別のコードを使用する必要があることを追加したかっただけです。

K70 Lux:usbhid.quirks = 0x1B1C:x1B36:0x0x20000408

コードはlsusbの出力に基づいています。私の場合、私は持っていました

Bus 003 Device 002: ID 1b1c:1b36 Corsair 

これを前の回答のコードと比較すると、デバイスに合わせてUSB識別子を変更する必要があることがわかりました。

2
rsking84

この回答は、@ rsking84と@romanoの回答に完全に基づいていますが、別のアプローチを使用して、

  • コンピュータを再起動せずにこれを機能させる
  • コンピューターを再起動せずにデバッグする

この投稿 を参照すると、romanoのアプローチは カーネルコマンドライン引数 を設定することで機能し、これはのモジュールパラメーターの設定に使用されます。ロードされたときのusbhidモジュール。 usbhidがカーネルにコンパイルされる場合があります。その場合、これがこのパラメータを設定する唯一の方法であると思われます。

モジュールパラメータは、モジュールがロード(または再ロード)されるときにも設定できます。これは、実行時に1つのケーステストパラメーターを使用することを意味します。

/usr/bin/Sudo rmmod  usbhid
/usr/bin/Sudo modprobe usbhid.quirks=0x1B1C:0x1B17:0x200004
cat /sys/module/usbhid/parameters/quirks

(これがうまくいかず、キーボードが機能しなくなった場合、キーボードのプラグを抜いて再度差し込むことで修正できる可能性があります)

これを使用して(@ rsking84の回答のように製品とベンダーIDを変更する可能性があります)取得したら、次のように/etc/modprobe.d/ushbid.confにオプションを追加できます。

options usbhid quirks=0x1B1C:0x1B17:0x200004

これは、もう一度rmmod usbhidを実行してキーボードを再接続することでテストできます。

0
Att Righ