Multilaser M11W (e outros modelos) com touch no Linux

INTRO

Os M11W vêm com touch screen da Silead. Portanto, é necessário baixar o respectivo firmware.

O Linux possui suporte para esse hardware, mas não de todos os equipamentos. Existe um projeto que tenta organizar todos os firmwares em um só lugar. O link é

Infelizmente, o M11W não está lá.

Outro problema é que o suporte padrão das distribuições Linux para estes drivers possui codificação no próprio kernel. Mesmo que tivéssemos o firmware da Silead para o M11W, precisaríamos inserir algumas informações diretamente no kernel e recompilá-lo.

Para contornar esse problema, existe um outro driver para este hardware. Este driver alternativo espera que algumas informações (tais como, as dimensões da tela do touch, a orientação dos eixos x e y, entre outras) estejam inseridas dentro do próprio firmware (e não no kernel). O driver pode ser baixado em

Em suma, existem dois drivers open-source para o Silead. A figura a seguir ilustra algumas diferenças entre eles.

O driver que queremos utilizar está no segundo git e precisa ser compilado. Basta um comando make (assumindo que as dependências estão instaladas, tais como ‘make’ e ‘gcc’).

HACKEANDO O FIRMWARE

Agora só precisamos do firmware no formato exigido para o 'gslx680_ts_acpi.ko’. Assim, não precisaremos nos preocupar em alterar e compilar o kernel. Quando tivermos esse firmware em mãos, só precisaremos renomeá-lo para ‘silead_ts.fw’ e copiá-lo para o folder ‘/lib/firmware’ tal como ilustrado na figura.

O problema é que esses firmwares não estão “por aí”. Só encontraremos com facilidade o driver pro Windows.
Se tivéssemos ferramentas para converter o firmware fornecido no Windows para o formato que desejamos, seria uma mão na roda.

A boa notícia é que o git que forneci no primeiro link contém um folder chamado “tools” que possui todas as ferramentas necessárias para a conversão.

De posse do driver para o Windows do modelo M11W (precisa ser do mesmo modelo. Se você tiver um M8W, procure o driver do Windows para M8W. Se tiver um modelo XXXQQC, procure o driver para esse modelo) localize o arquivo do firmware. Ele se chama ‘SileadTouch.fw’.

As ferramentas que utilizaremos são o ‘unscramble’ e o ‘fwtool’. A primeira
converte o firmware do Windows para um formato reconhecido pelo Linux, sem agregar algumas informações importantes.

Já o ‘fwtool’ converte o firmware gerado para o formato que queremos. A figura a seguir ilustra o papel de cada ‘tool’, assumindo que você se localiza na pasta raiz do primeiro git.

Para facilitar, os comandos estão aqui para o copy/paste

./tools/unscramble SileadTouch.fw silead.fw

./tools/fwtool -c silead.fw -m 1680 -w 1920 -h 1270 silead_ts.fw

O X

Um passo adicional é instalar o ‘evdev’. Você pode se inteirar melhor pesquisando sobre esse produto na net. Instruiremos o X para que use o ‘evdev’ como ‘driver’. A instalação do ‘evdev’ é muito simples. basta o comando

# apt install xserver-xorg-input-evdev

Para informar o X sobre o novo dispositivo crie o arquivo ‘/usr/share/X11/xorg.conf.d/99-calibration.conf’ com o seguinte conteúdo.

Section "InputClass"
Identifier "calibration"
MathProduct "Silead GSLx680 Touchscreen"
Option "Calibration" "5 1916 6 1269"
Option "SwapAxes" "0"
Driver "evdev"
EndSection

Se você ainda não copiou o firmware convertido para o lugar certo, está na hora de fazê-lo. O driver que utilizaremos procura especificamente pelo arquivo ‘/lib/firmware/silead_ts.fw’, conforme vimos na primeira figura.

TOUCHEANDO

Está tudo pronto. Podemos carregar o driver. Se você está na pasta raiz do segundo git, basta o comando.

# insmod ./gslx360_ts_acpi.ko

O driver vai carregar e o touch estará funcionando.

Caso deseje contribuir, você pode fazer um 'fine-tuning’ nos parâmetros que utilizamos. Falando por mim, estou satisfeito com esse resultado.

Se quiser contribuir ainda mais e possuir o 'skill’ necessário, você pode fazer as alterações no kernel e sugerir um path.

Olá, alguém teria o driver para Windows mesmo e poderia compartilhá-lo comigo? Tive que formatar a partição que tinha Windows para instalar o Ubuntu, depois tentei voltar para o Windows, mas o touch nunca mais voltou a ser como antes. a tela parece estar dividida e o touch se move na direção contrária ao toque. Usei o Multisync para restaurar o Windows inclusive segui alguns tutoriais de como retaurar esse driver usando o Ubuntu para colá-lo na pasta do Windows, porém tudo sem sucesso e contatando o suporte da Multilaser eles só me deram a opção de mandar para o reparo.

Adorei a ideia de touchscreen no Ubuntu, contudo, achei o artigo um pouco confuso. Não ficou claro se precisaria do driver para Windows ou é que é baixado no segundo repositório.
Agora que expandi o armazenamento dele eu só queria os dois sistemas operacionais funcionando nele e o touch pelo menos no Windows, pois foi uma das principais funcionalidades que me levou a comprá-lo, fora os preços exorbitantes e a necessidade que tive de um reserva quando meu principal deu problema.

Qual driver?

https://arquivos.multilaser.com.br/suporte/a234kUlkp1mAtvdVYv4nb6Ydf8QR2AjWIWNXzbS2.zip

https://drive.google.com/file/d/1DF4iXx_dIKXU669zYTTmmP81dOtqsv5o/view
http://dados.mirage.com.br/sac/Infograficos/Tablet/Como%20instalar%20os%20drivers%20M11W.pdf
http://186.215.235.83:8080/drivers/15/multilaser_m11w.zip

Tente esses, imagino que um deles deva dar certo.

Cara, né esse não. Eu consegui restaurar o touch no Windows pela ferramenta que eles disponibilizam mesmo, parece que eles atualizaram. Porém, não tem esse arquivo com a extensão .fw. Eu usei esse do drive na tentativa de fazer o touch funcionar em um pendrive persistente e uma instalação que eu tinha aqui e agora não consigo mais fazer login na tela inicial. Alguma ideia de como reverter isso? E sobre o driver que aparece no Windows há 4 arquivos 3 com extensão .sys e outro .inf, sabe dizer qual deles é o firmware? Vou fazer uma última tentativa, só não quero ferrar meu boot ou login de novo.

O Windows não dá boot? Você pode tentar restaurar o Windows para um estado anterior ou usar um pendrive com iso do Windows para restaurar o boot. Infelizmente, esses foram os únicos arquivos que encontrei. Esse equipamento é um white label, se soubéssemos qual o fabricante original e o respectivo modelo seria fácil encontrar os drivers.

Não não, após reinstalar o Windows pelo Multisync ele tá funcionando like a charm, mas depois de seguir esse tutorial pra instalar o drive de touch no Linux o Ubuntu parou de funcionar, ainda dá boot e tal, mas fica em loop no login. Desativei o quite splash e vejo uma mensagem que diz algo como carregando Silead touch, mas aí na tela de login quando volta pra mesma tela e o mouse volta pra posição inicial. Ainda consigo bootar por uma live não persistente, sabe como desfazer esse processo, desinstalar esse driver ou desativar o carregamento dele no boot?

Tenho um AlldoCube Knote 5 Pro que usa os mesmos drivers Silead, poderia me ajudar? Consegui fazer funcionar mas a calibragem da tela não fica correta, como conseguiu a resolução correta do touchscreen?

Oi, bom dia!
Então, já tentei usar este firmware, mas dá o seguinte erro:

gslx680_ts_acpi.ko: Invalid module format

Já procurei a respeito disso e não encontrei nada que pudesse ajudar, tentei diversas coisas e nada.

Tente o que foi feito nesse tópico:

Deve dar certo.

Infelizmente não funcionou e pior, com as outras distros deu problema (travamento, tablet esquentando muito), só o Debian está funcionando tranquilamente.
Mas assim, sem touch em todas as distros e, esse drivers não funciona aqui, não sei porquê, mas não haveria outra opção?

Infelizmente, acho que só por esses métodos com firmware.

Pessoal, como vcs conseguiram dar boot com linux neste note? estou tentando e não consigo de forma alguma.

não funcionou de primeira, dei uma olhada em dmesg e vi que houve uma falha ao carregar o firmware por que um dos parametros estava como zero, então eu refiz o silead_ts.fw com o comando
./tools/fwtool -c silead.fw -m 1680 -w 1920 -h 1270 -t 10 silead_ts.fw
agora está funcionando.