Finalmente Livre…

Deixando meu ThinkPad X200 Tablet com Debian Squeeze

Realmente não há nada que um pouco de tempo não lhe permita fazer em cima de Debian. Esse é um dos motivos para eu usar e recomendar essa maravilhosa distribuição para todos que conheço. A um tempo atrás, vocês devem se lembrar da minha matéria desistindo de usar Debian no meu notebook devido a algumas questões pendentes. Como explicado, estava sem tempo e sem paciência para fazer o que precisava.

Nesta última semana fiquei boa parte do tempo em casa, trabalhando em meu notebook com a intensão de torná-lo livre. Nessa jornada, muita navegação e muita pesquisa foi necessária, mas trabalho manual foi muito pouco. Decidi, então, colaborar com outros detentores deste equipamento incrível a terem seu sistema livre e com todas as funções importantes funcionando.

É verdade, nem tudo foi flores… O dispositivo de autenticação por impressão digital (AuthenTec, Inc. AES2810) não tem driver para Linux e não deve ter um driver tão cedo. No entanto, em minhas pesquisas encontrei alguns textos falando da falsa sensação de segurança que esses dispositivos dão aos usuários, quando, na verdade, tornam a autenticação mais fácil de ser burlada. Deixei de lado esse dispositivo.

Após a instalação do Debian Squeeze, a maioria dos dispositivos já funcionava perfeitamente (Webcam, auto configuração de vídeo, algumas teclas ACPI, WiFi, Bluetooth, etc)  outros nem tanto (proteção contra choques do HD, outras teclas ACPI, o minimodem 3G, etc). Parti então para as pesquisas e localizei grandes avanços.

O que segue agora pode ser tido como um passo a passo para quem quer usar qualquer distro, precisando apenas algumas poucas adaptações. Vale lembrar que todas as edições de arquivos devem ser feitas usando um terminal autenticado como usuário “root”.

Teclado

Grande parte do que fiz com o teclado tirei do Wiki dos usuário de ThinkPad, o ThinkWiki. Vale uma visita para entender melhor…

O teclado que mais se adequou ao sistema no Xorg foi a disposição “IBM ThinkPad R60/T60/R61/T61″. Apenas não se conseguia, nesse ponto, que o botão de MUTE fosse executado tanto para ativar como desativar o modo silencioso. Para corrigir isso foi uma coisa bem simples: Editando o arquivo de configuração do GRUB2 (/etc/default/grub), incluí na parte GRUB_CMDLINE_LINUX_DEFAULT a inscrição acpi_osi=”Linux”, como mostrado abaixo:

# vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet acpi_osi="Linux""

Para terminar a configuração, executa-se o comando para que o grub re-construa o arquivo de configuração:

# update-grub2

Na reinicialização seguinte o botão MUTE deve funcionar como esperado.

Já as teclas de Tablet são um pouco mais complicadas. Isso porque tive que identificá-las junto ao ACPI e ainda fazer alterações nas teclas de atalho do GNOME. Para isso é preciso ser um pouco mais “rutz”, como se diz aqui no sul, pelo menos da maneira que fiz, pois quis também aproveitar e deixar as teclas mais “do meu jeito”. No entanto tem formas mais simples, como a instalação do pacote tbp do repositório Debian, o qual instalei também.

Nas minhas configurações alterei um script do ACPI chamado rotatescreen.sh como mostrado abaixo:

$ cat /etc/acpi/rotatescreen.sh

#!/bin/sh
#
# This script rotates the display in TabletPCs when screen is changed from
# laptop to tablet mode, or when rotation button is pressed

test -f /usr/share/acpi-support/key-constants || exit 0

. /usr/share/acpi-support/power-funcs

if [ -f /var/lib/acpi-support/screen-rotation ] ; then
 ROTATION=`cat /var/lib/acpi-support/screen-rotation`
fi

case "$ROTATION" in
 right)
 NEW_ROTATION="inverted"
 WACOM="half"
 ;;
 normal)
 NEW_ROTATION="right"
 WACOM="cw"
 ;;
 left)
 NEW_ROTATION="normal"
 WACOM="none"
 ;;
 inverted)
 NEW_ROTATION="left"
 WACOM="ccw"
 ;;
 *)
 NEW_ROTATION="normal"
 ;;
esac

for x in /tmp/.X11-unix/*; do
 displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`
 getXconsole;
 if [ x"$XAUTHORITY" != x"" ]; then
 #export DISPLAY=":$displaynum"          
 if [ -f "$XAUTHORITY" ]; then
 export XAUTHORITY
 export DISPLAY=:0
 user=$_user
 home=$_home
 fi
 /usr/bin/xrandr -o $NEW_ROTATION && echo $NEW_ROTATION > /var/lib/acpi-support/screen-rotation
 xsetwacom set "stylus" Rotate $WACOM
 xsetwacom set "eraser" Rotate $WACOM
 xsetwacom set "touch"  Rotate $WACOM
 fi
done

Também criei um arquivo chamado /var/lib/acpi-support/screen-rotation com permissões de leitura e escrita por todos.

Em seguida, abri o software de edição de teclas de atalho do GNOME e acrescentei uma ação (Screen Rotation), direcionando para esse script e acionado pelo botão com uma flecha circular (que fazia as funções de Ctrl+Alt+Del no Windows). Para mim é uma função legal, cada vez que aperto o botão a tela gira em sentido horário (como a flecha).

Outra coisa interessante é o botão Preview e Next, que ficam junto às teclas direcionais. essas teclas não estavam funcionando, mas com uma configuração simples é possível colocá-las para funcionar. Isso é configurado por usuário, mas como estamos falando de um notebook, não vejo problemas. Veja abaixo:

$ cat ~/.Xmodmap
! Botão com dois retangulos girando:
keycode 161 = XF86LaunchA
! Botão com a seta circular:
keycode 162 = XF86LaunchB
! Botão com o símbolo retangulo e a fecha
keycode 149 = XF86LaunchC
! Botão de Preview
keycode 233 = XF86Back
! Botão de Next
keycode 234 = XF86Forward

Faz parte da inicialização do X a execução do xmodmap em cima deste arquivo, mas para ativá-las imediatamente, basta executar o comando abaixo:

$ xmodmap ~/.Xmodmap

Pronto, tanto as teclas de função como as teclas de atalhos estão configuradas e funcionando perfeitamente.

Minimodem 3G

Bom, essa parte depende muito mais de qual modem 3G você tem do que qual distro você pretende usar. Na maioria das distros, a maioria dos minimodems são detectados prontamente, infelizmente não é o meu caso, pois possuo um minimodem da Nokia, modelo CS-11. Um dispositivo muito bom, mas com um driver proprietário. Felizmente, existe uma versão para Linux, mas o arquivo .deb tem uma falha que faz com que não seja possível instalá-lo. Usando de outro blog (agora não me lembro, pois isso fiz a um bom tempo atrás), criei um pacote corrigido, que guardo comigo. Não é x64, mas funciona perfeitamente.

Portanto, basta baixar o arquivo nokia-zerocd_0.2-10_all.deb e usar o comando abaixo:

# dpkg -i nokia-zerocd_0.2-10_all.deb

Pronto, seu minimodem será reconhecido, agora basta seguir o tutorial para conectar.

Proteção do HD (HDAPS)

Essa é uma das funções mais legais na minha opinião, o que a Lenovo do Brasil traduziu como “Air Bag” do disco rígido. Trata-se na verdade de um pequeno acelerômetro que informa ao computador quando está ocorrendo uma movimentação. Um software monitora isso e desativa o HD temporariamente, evitando que ocorram danos às cabeças de leitura. Essa função não está no HD, mas sim na placa mãe (ou na controladora de disco, não estou bem certo), e a prova é que troquei o HD do meu notebook para preservar as informações que estavam nele e a função continua funcionando.

Na verdade, o dispositivo, teoricamente, já está funcionando, pois o driver para ele já está disponível no próprio kernel do Debian Squeeze. No entanto, nada está sendo feito com as informações, pois não está instalado o software de monitoramento. Execute o comando abaixo:

# aptitude install hdapsd

Esse sisteminha vai fazer exatamente o que o software da Lenovo faz: interromper a leitura e escrita do HD caso o notebook se movimente bruscamente. No entanto você não vê isso acontecendo… Quer ver? É possível sim… Existem dois applets para isso. Um deles fica no painel do GNOME, outro é um pequeno software que abre uma janela com o desenho do notebook se movimentando junto com o acelerômetro.

No site da SourceForge referente ao Projeto HDAPS é possível baixar ambos os códigos fonte. Aí vem a parte meio “rutz”. Primeiro baixe os arquivos hdapsgl-applet e o hdaps-gl em suas últimas versões. Em seguida, você precisará dos pacotes de desenvolvimento do Python-GTK e do Glut. Para isso execute:

# aptitude install glutg3-dev python-gnome2-extras-dev python-gnome2-desktop-dev 
                   python-gnome2-dev python-gnomeapplet python-gtk2-dev

Em seguida desempacote o primeiro deles: hdapsgl-applet.

# tar xvzf hdapsgl-applet-XXXX.tar.gz

Onde XXXX é a versão do applet. Entre no diretório e siga o padrão “./configure && make install”

Pronto, já tem um dos applets instalado.

Agora desempacote o hdaps-gl:

# tar xvzf hdaps-gl-XXXX.tar.gz

Esse não precisa nem usar o ./configure. Apenas entre no diretório e rode o comando make. Terás um executável que pode ser copiado para o /usr/local/bin. Ao executá-lo uma janela será aberta com o desenho do notebook se mexendo conforme o notebook real mexer. Bem legal!

Synaptics e TrackPoint

O ThinkPad X200 Tablet não tem Synaptics, também conhecido como TouchPad, no entanto tem o inconfundível TrackPoint exclusivo dos computadores da linha ThinkPad. Esse dispositivo lembra muito os TrackBalls, no entanto não é uma bolinha, mas um botão que pode ser direcionado em qualquer posição. Esse dispositivo funciona relativamente bem, no entanto o botão do meio, por padrão, é “emulado”, o que não permite a emulação da roda do mause no botão central, como ocorre com o driver do Windows.

Para corrigir isso é mais simples do que parece. Basta instalar o pacote gpointing-device-settings, e usar a interface de configuração do GNOME para configurá-lo como quiser. No meu caso, ficou assim:

Configuração pelo GPointing
Como está configurado o TrackPoint

Desta forma o “Scroll” funciona tanto na vertical como na horizontal.

Até aqui a função de precionar o botão do TrackPoint e funcionar como um click com o botão esquerdo ainda não funciona, mas isso tambem é simples. Como root, edite o arquivo /etc/gdm3/Init/Default e vá até a última linha. Na linha logo antes desta (exit 0), inclua a linha abaixo:

echo -n 1 > /sys/devices/platform/i8042/serio1/press_to_select

Pronto, a função tap está ativa na inicialização do GDM. Para a ativação imediata, simplesmente execute a linha como root. Veja também essa página do ThinkWiki para mais informações.

Caneta de toque de tela

Esse dispositivo não é novo, e provavelmente já estará funcionando, no entanto o botão da caneta não funcionará como esperado (como botão direito), para isso é necessário configurar com os seguintes comandos:

   xsetwacom set stylus Button1 1
   xsetwacom set stylus Button2 3
   xsetwacom set stylus Button3 3

Para automatizar isso, você pode colocar 3 linhas a mais no arquivo padrão do Debian /usr/share/X11/xorg.conf.d/20-wacom.conf, como segue:

$ cat /usr/share/X11/xorg.conf.d/20-wacom.conf
Section "InputClass"
	Identifier "Wacom class"
# WALTOP needs a patched kernel driver, that isn't in mainline lk yet,
# so for now just let it fall through and be picked up by evdev instead.
#	MatchProduct "Wacom|WALTOP|WACOM"
	MatchProduct "Wacom|WACOM"
	MatchDevicePath "/dev/input/event*"
	Driver "wacom"
	Option "Button2" "3"
	Option "Button3" "2"
EndSection

Section "InputClass"
	Identifier "Wacom serial class"
	MatchProduct "Serial Wacom Tablet"
	Driver "wacom"
	Option "ForceDevice" "ISDV4"
EndSection

# N-Trig Duosense Electromagnetic Digitizer
Section "InputClass"
	Identifier "Wacom N-Trig class"
	MatchProduct "HID 1b96:0001"
	MatchDevicePath "/dev/input/event*"
	Driver "wacom"
EndSection

Na verdade, as únicas 2 linhas inseridas foram:

	Option "Button2" "3"
	Option "Button3" "2"

Dessa forma os botões já serão configurados como esperado.

   xsetwacom set stylus Button1 1
   xsetwacom set stylus Button2 3
   xsetwacom set stylus Button3 3

Continua…