Eu acabei de encontrar esse ajuste que permite aumentar a taxa de pesquisa de um mouse usb para 1KHz. É possível obter o mesmo aumento para outros dispositivos USB (ou todos os dispositivos USB)? Eu sou um pesquisador em ciência cognitiva e conduzo experimentos usando teclados e gamepads (geralmente um gamepad xbox 360 com fio) para a entrada humana, onde uma taxa de pesquisa maior significaria melhor precisão de medição dos tempos de resposta.
7
Respostas:
Não conheço nenhum mecanismo geral. Acredito que é preciso ajustar as fontes do kernel ou o respectivo driver.
Um raio de esperança é dado por esta resposta para o fio Taxa de pesquisa do I-PAC / codificador do teclado :
fonte
Se você está disposto a compilar seu próprio kernel, modificando
drivers/hid/usbhid/hid-core.c
é uma opção.Eu tive um problema semelhante, como eu quero mudar a taxa de pesquisa do meu teclado e tablet de desenho, então eu modifiquei o meu hid-core.c já há algum tempo.
Parece que os kernels mais recentes (4.12 e posteriores) já possuem o parâmetro usbhid.jspoll, mas ainda não há parâmetros para teclados.
Com os kernels anteriores a 4.12, modifiquei o meu hid-core.c da seguinte maneira, fazendo o mousepoll afetar todos os dispositivos que ele manipula:
E para as versões 4.12 e superiores eu modifiquei de forma diferente, pois não queria quebrar o trabalho usbhid.jspoll:
Agora, para obter uma votação de 1000Hz (intervalo de 1 ms) em gamepads e teclados:
se incorporado ou inseguro: adicionar
usbhid.mousepoll=1
ouusbhid.jspoll=1 usbhid.elsepoll=1
para a linha de comando do kernel e reinicie.se módulo: escrever
options usbhid mousepoll=1
ouoptions usbhid jspoll=1 elsepoll=1
para/etc/modprobe.d/usbhid.conf
Se você acabou de
rmmod usbhid;modprobe usbhid
Depois de modificar o arquivo acima, você precisa desconectar e reconectar um dispositivo USB para alterar seu intervalo de pesquisa. mesmo que as mensagens do kernel pareçam sugerir o contrário .Depois de reiniciar ou recarregar o usbhid, para verificar se está funcionando, desconecte e reconecte os dispositivos USB e execute
dmesg |grep poll
Espere algo assim nas últimas linhas:
Os dispositivos aqui são
04d9:2013
,0810:0003
e056a:030e
fonte