Determina qual módulo é ligado por um dispositivo HID?

1

Estou tendo um problema estranho. Eu fiz alguns hackers baseados no trabalho de outra pessoa para backport o suporte para o teclado interno em um MacBook Pro 11,5 no kernel 3.19. Minha fonte do GitHub pode ser encontrada aqui .

Eu fiz todo o possível para garantir que ele seja o mais próximo possível do kernel 4.2, enquanto ainda é capaz de compilar e trabalhar como esperado no 3.19.

No entanto, durante a inicialização em 4.2 me dá funcionalidade perfeita funcionando como esperado, meu módulo não parece fazer nada. Os dispositivos da Apple existentes funcionam como esperado, mas ainda estou tendo os mesmos problemas com o teclado integrado.

Os problemas são baseados no fato de que a tecla de função não funciona e, portanto, não posso usar minhas teclas de mídia. Também fiz testes de sanidade para garantir que outros teclados Apple funcionem (testados com o teclado com e sem fio da Apple e ambos funcionam corretamente).

Existe uma maneira de validar que meu teclado está sendo vinculado ao driver correto?

A identificação USB do dispositivo é 05ac:0274 , e uma linha de configuração pode ser encontrada para esse dispositivo em hid-ids.h: 147 e em hid-apple.c: 553-554 . Estou convencido de que não é apenas pegar o dispositivo, porque mesmo com o módulo hid-apple removido, meu teclado embutido funciona, embora os outros não o façam.

Como posso depurar o que está acontecendo e porque meu teclado interno não está preso ao módulo hid-apple ?

EDITAR : consegui colocar meu teclado no driver correto usando o seguinte:

# unbind everything matching 05AC:0274 from hid-generic
for dev in 'ls /sys/bus/hid/drivers/hid-generic/ | egrep 05AC\:0274'; do
    echo -n $dev | sudo tee /sys/bus/hid/drivers/hid-generic/unbind
done
# bind everything matching 05AC:0274 to hid-apple
for dev in 'ls /sys/bus/hid/devices/ | egrep 05AC:0274' ; do
    echo -n $dev | sudo tee /sys/bus/hid/drivers/hid-apple/bind
done

O problema continua: como forçar um determinado ID USB a associar-se a um determinado driver? Aceito a resposta abaixo, mas ainda estou procurando uma solução ...

    
por Naftuli Kay 03.11.2015 / 21:43

1 resposta

2

Existe uma excelente resposta aqui . A resposta curta é o comando usb-devices (disponível para a maioria das distros em um pacote chamado usbutils ou algo semelhante) que deve fornecer as informações que você deseja no driver atual que cada dispositivo usb está usando.

    
por 03.11.2015 / 21:59