usb_submit_urb (ctrl) falhou: -1 Teclado Corsair k65 RGB

4

Eu comprei recentemente um teclado RGB K65 da Corsair. É claro que não funcionou no começo, mas com um driver ckb-opensource eu consegui que tudo funcionasse no meu sistema de arco.

Tudo correu tão bem até eu começar a receber erros sempre que eu inicializo meu sistema:

usb_submit_urb(ctrl) failed: -1

aparece na minha tela e o sistema congela por 30s. Depois disso, o teclado funciona e consigo fazer login no meu sistema. Mas o que significa o erro?

[   11.238682] hid-generic 0003:1B1C:1B17.0002: usb_submit_urb(ctrl) failed: -1
[   11.239526] hid-generic 0003:1B1C:1B17.0002: timeout initializing reports
[   11.239959] input: Corsair Corsair K65 RGB Gaming Keyboard as /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: timeout initializing reports
[   21.291585] hid-generic 0003:1B1C:1B17.0003: hiddev0,hidraw5: USB HID v1.11 Device [Corsair Corsair K65 RGB Gaming Keyboard] on usb-0000:07:00.0-1/input2
[   31.290650] hid-generic 0003:1B1C:1B17.0004: timeout initializing reports
[   31.290905] hid-generic 0003:1B1C:1B17.0004: hiddev0,hidraw6: USB HID v1.11 Device [Corsair Corsair K65 RGB Gaming Keyboard] on usb-0000:07:00.0-1/input3

Se eu usar lsusb , obtenho:

Bus 005 Device 002: ID 1b1c:1b17 Corsair

Eu ouvi falar sobre "peculiaridades usbhid" é uma possível solução alternativa. Mas como eu uso isso? Ou existe alguma solução possível para isso?

    
por Romano 02.05.2016 / 13:58

3 respostas

5

Solução para todos os teclados mecânicos da Corsair com peculiaridades usbhid.

sudo nano /etc/default/grub

ou qualquer outro editor que você goste de usar em vez de nano.
você vai ver essa linha

GRUB_CMDLINE_LINUX_DEFAULT=""

certifique-se de colocar o usbhid.quircks entre aspas e salve-o.
Em meu caso eu tive que mudar para essa linha

GRUB_CMDLINE_LINUX_DEFAULT="usbhid.quirks=0x1B1C:0x1B17:0x20000408"

depois disso, atualize o grub

sudo update-grub

* Se esse comando não for encontrado, você provavelmente executará o grub 2.0. Use este comando em vez disso. comando update-grub é apenas um script que executa o grub-mkconfig

sudo grub-mkconfig -o /boot/grub/grub.cfg

depois disso, reinicie o sistema.
Agora ele deve funcionar normalmente e a mensagem não aparecerá.

Use as peculiaridades dos seus teclados. Você pode usar esta lista abaixo para teclados da 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

Atualizar Kernel Linux 4.11: As correções HID são suportadas por alguns mouses e teclados da Corsair. O K65RGB e o K70RGB têm suas correções de HID no Linux 4.11 para esses dispositivos.

Veja confirmar: link

Você pode descobrir sua versão do kernel para usar este comando no terminal uname -r

para resumir, se você tem o kernel Linux 4.11, há uma chance de você não precisar passar por esse processo para adicionar peculiaridades usbhid.

    
por 02.05.2016 / 14:56
1

Só queria acrescentar que eu tive que usar um código diferente para obter o meu K70 Lux recém-adquirido funcionando corretamente no Linux Mint 18 (kernel 4.4.0-21).

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

O código é baseado na saída de lsusb . No meu caso, eu tive

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

Ao comparar isso com os códigos na resposta anterior, fui informado de que precisava alterar o identificador USB para corresponder ao meu dispositivo.

    
por 19.09.2016 / 05:20
0

Esta resposta é inteiramente baseada na resposta de @rsking84 e @ romano, mas usa uma abordagem diferente para permitir que você

  • Como isso funciona sem reiniciar o computador
  • Depure sem reiniciar o computador

Referindo-se a este post , a abordagem de romano funciona definindo um argumento de linha de comando do kernel que, por sua vez, é usado para definir um parâmetro de módulo para o módulo usbhid quando é carregado. Às vezes o usbhid será compilado no kernel, caso em que esta parece ser a única maneira de definir este parâmetro.

Os parâmetros do módulo também podem ser definidos quando o módulo é carregado (ou recarregado). Isso significa um parâmetro de teste de caso em tempo de execução usando:

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

(Se isso der errado e o teclado parar de funcionar, você poderá consertar isso desconectando e reconfigurando o teclado)

Uma vez que você tenha este trabalho usando (possivelmente mudando o id do produto e do fornecedor como na resposta do @rsking84), você pode adicionar opções a /etc/modprobe.d/ushbid.conf assim:

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

Isso pode ser testado executando rmmod usbhid mais uma vez e reconfigurando o teclado.

    
por 23.05.2017 / 17:47