O que a opção do kernel 'i8042.nomux = 1' faz durante a inicialização do Ubuntu?

23

Eu tenho um laptop com um touchpad com várias acomodações. Meu touchpad nunca funciona em nenhuma distribuição Linux, como Ubuntu, Fedora, openSUSE, Linux Mint, Knoppix, Puppy, Slitaz e muito mais. Eu tentei muitas coisas, mas nada funcionou. Estou lutando com os drivers Synaptics há mais de um ano, mas também não funciona.

Então, em algum lugar eu li sobre a i8042.nomuxopção do kernel. Então eu iniciei o Ubuntu com as seguintes opções:

i8042.nomux=1 i8042.reset

Isso fez meu touchpad funcionar em todas as variantes do Ubuntu e seus derivados, como o Linux Mint.

Estou ansioso para saber sobre essas opções. Se eu soubesse exatamente o que faz, seria capaz de usar meu touchpad em todas as distribuições linux, pois essa opção funciona apenas com o Ubuntu.

Suyash Mohan
fonte

Respostas:

29

Esta é uma opção arcana, necessária apenas em alguns dispositivos raros (um dos quais você possui). A única documentação é uma linha na lista de parâmetros do kernel .

O controlador i8042 controla teclados e mouses PS / 2 em PCs. Parece que no seu laptop, o teclado e o touchpad estão conectados através desse chip.

Pelo que entendi pelo nome da opção e uma breve descrição do código-fonte (não confie nisso para escrever um driver i8042!), Alguns chips i8042 são capazes de multiplexar dados provenientes de vários dispositivos apontadores. A interface tradicional PS / 2 fornece apenas um teclado e um mouse; os laptops modernos costumam ter dois ou mais touchpad, um tracktick e um plugue PS / 2 externo. Alguns controladores seguem a especificação de multiplexação PS / 2 ativa , que permite até 4 dispositivos; os dados enviados por cada dispositivo contêm uma indicação de qual dispositivo ele é originário.

O driver do Linux tenta descobrir se o controlador i8042 suporta multiplexação, mas às vezes está incorreto. Com o i8042.nomux=1parâmetro, o driver não tenta detectar se o controlador suporta multiplexação e assume que não. Com o i8042.resetparâmetro, o driver redefine o controlador ao iniciar, o que pode ser útil para desativar o modo de multiplexação se o controlador o suportar, mas de maneira incorreta.

Gilles 'SO- parar de ser mau'
fonte
1
Como este é um comando do kernel, posso usar esse comando em todas as distros do linux durante a inicialização?
Suyash Mohan
2
@ZealKaiser Sim, esse parâmetro faz parte do kernel padrão, ele existe em todas as distribuições.
Gilles 'SO- stop be evil'
Existe alguma maneira de descobrir se meu kernel em execução está com a multiplexação ativada ou desativada?
André Puel
2
@ AndréPuel Verifique se /proc/cmdlinecontém i8042.nomux=1(se o driver estiver no kernel) ou o valor de /sys/module/i8042/parameters/nomux(se o driver estiver em um módulo). Se você encontrar um valor diferente de zero nomux, a multiplexação está desativada, caso contrário, está ativada.
Gilles 'SO- stop be evil'