Configurando o monitor ST2220T Touch Screen da Dell no linux

Recebemos o desafio de desenvolver a parte técnica de uma cabine de cinema, nessa cabine você escolhe uma cena clássica do cinema e assiste dentro, sentado em uma confortável poltrona de cinema.

Para selecionar o filme é usada uma tela touchscreen, o modelo escolhido foi o ST2220T da Dell, principalmente por possuir um touch sensível (lembra muito o do ipad), e ter uma tela maravilhosa fullHD.  O lado ruim é que apesar de ter vários meses de estrada a Dell nunca liberou nenhum driver para o monitor, deixando a cargo da comunidade.

Ao ligar o monitor no PC o touchscreen ele pode até funcionar, mas é necessário usar os dois dedos para movimentar o cursor. Isso acontece pois o a tela é dual-touch, ou seja, reconhece até dois toques simultâneos.

O driver que corrige esse problema foi recentemente incluído no kernel 3.4 do linux, mas boa parte das distros ainda usam a versão 3.0, então segue um breve tutorial de como instalar os drivers no Ubuntu 12.04 (Funciona no Debian testing!).

Existem três formas de se obter os drivers, uma é aplicando este patch no fonte do kernel, compilando e instalando apropriadamente.

Outra forma, bem simples é baixando e instalando um kernel com o patch citado acima pré-aplicado, ou seja, pronto para usar. Nesse caso, basta baixar o kernel desse site:

http://people.canonical.com/~bradf/lp791833/

Instale com o comando:

dpkg -i linux-image-3.2.0-20-generic_3.2.0-20.33~lp791833_i386.deb
update-grub2

Após o reboot, o touch funcionará normalmente.

Uma outra forma mais genérica, é compilar o driver para o kernel que você já possui instatalado, para isso, faça:

apt-get install build-essential
git clone git://git.lii-enac.fr/linux-input/ubuntu-multitouch
cd ubuntu-multitouch

Use o comando git branch -a
, para listar os branchs disponíveis, escolha um e digite:

git checkout hid-multitouch-ubuntu-12.04
make
sudo make install
sudo depmode -a

Após esses passos, basta rebootar.

Para melhor funcionamento da tela, vale a pena instalar alguns pacotes com:

apt-get install xinput evtest xserver-xorg-input-evtouch

Existem vários outros detalhes técnicos dessa cabine que quero mostrar em breve 🙂

fontes: enac, launchpad, redhat

Instalando e usando multiplas distros ao mesmo tempo

O problema :

Antigamente ter um hardware apple rodando linux era trivial, tirando o modem todo o resto subia sem qualquer dificuldade. Com a troca de arquitetura de PPC para i386 é provavel que os developers tenham abandonado o linux pois apesar do hardware do mac ser muito parecido com o dos PCs, quase nada vem funcionando “de graça” …

O Fedora que tinha um suporte fantástico aos macs PPC não presta para macs-intel e fiquei na mão … Depois de perder um tempão com o Archlinux , não quis arriscar com o gentoo, apelei e coloquei opensuse … wow, funcionou quase tudo de primeira, e decidi manter a distro pelo seu ótimo suporte ao meu hardware.

Mas como o mundo é injusto , tive que instalar programas e bibliotecas exotéricas , que exigem versões velhas de outras bibliotecas mais extravagantes ainda, e como essas coisas são desenvolvidas em debian e para debian, naturalmente sequer compilavam no opensuse. Quando quase estava instalando debian na máquina meu debianita favorito @kov reforçou uma idéia que eu já tinha descartado, a do chroot.

Chroot significa change root , ou seja ele altera o diretório “/” de uma instância do shell, isso permite que eu mude meu shell de distribuição sem ter que rebootar a máquina. Melhor que isso, em paralelo, e quantas forem necessárias… O comando é simples :


chroot /dir /bin/bash

Onde “/dir” é o diretório onde eu tenho minha distro alternativa …

Para resolver meu problema, precisava de um debian no meu opensuse, fiz o seguinte …

A solução :

Primeiro precisei instalar uma distro, como não uso debian (ou demais variantes) não tenho acesso ao debootstrap, ferramenta usada para criar subdistros debian … Pra não ter que instalar a distro em uma partição física da máquina, peguei um template de distro desses usados em máquinas virtuais , no caso os do openvz, clicando aqui . Baixei um tar do debian lenny i386 com uns 200 mb mais ou menos.

Feito isso, criei um diretório chamado /opt/debian, e descompactei a mini distro debian lá dentro usando tar -xzvpf , note que o “p” nesse comando é importante para criar os links, sockets,  e manter as permissões.

Assim basta usar o comando chroot /opt/debian /bin/bash para entrar em sua sub-distro, pronto né ? Não ! Tem uns pequenos detalhes pra resolver.

Internet e rede

Para que seu sistema alternativo tenha acesso à rede e internet você deve criar/editar o arquivo (dentro do ambiente chrooted) /etc/resolv.conf , por exemplo :


nameserver 4.2.2.1
nameserver 4.2.2.2

Com isso você já pode fazer um apt-get update/upgrade 🙂

Suporte ao hardware

Até aqui, a distro alternativa não tem acesso aos devices do sistema principal, como partições , cameras , pendrives etc… Para habilitar esses recursos saia do ambiente chrooted (Control + d) e use esses dois comandos simples :


mount -o bind /proc /opt/debian/proc
mount -o bind /dev /opt/debian/dev

Com isso o debian alternativo terá acesso ao hardware da mesma forma que a distro principal, inclusive com poder de formatar e destruir tudo 😛

Suporte ao X

Suporte ao X não se faz apenas com /dev e o /proc habilitados, tem que liberar o acesso ao Xserver à partir do cliente X (ou seja de um terminal qualquer do seu usuário normal) com o comando xhost + . Como root (da distro principal) você deve “montar” a partição /tmp dentro do ambiente chroot :

mount -o bind /tmp /opt/debian/tmp


Agora o debian alternativo tem acesso ao soquete do X . Falta só dentro do chroot executar export DISPLAY=:0.0 agora tudo que vc abrir à partir do chroot vai abrir no X normal da sua distro principal =)

Para facilitar minha vida , criei 2 scripts que automatizam esse processo para mim, com apenas dois comando entro no meu chroot e começo a usar como num terminal comum. Se alguém quiser eu disponibilizo.

Arch Linux, os bons tempos voltaram ?

Minha história com o linux sempre foi meio conturbada mas durante muito tempo foi uma relação estável e saudável. Nunca fui fiel a uma única distribuição, sempre migrei para as versões mais novas conforme o release, naquela época não era possível baixar uma ISO da internet em um dia , dois ou uma semana 😛

Eu comprava minhas distros na livraria temporeal , custava 10 reais cada CD… Minha primeira distro foi o Debian Potato, lixo completo, não reconhecia vídeo, áudio ou o meu modem… Depois comprei o Conectiva 5, ainda tenho o box, funcionou o vídeo mas nada de áudio ou modem. Então migrei pro mandrake, funcionou vídeo com aceleração 3d , som mas não o modem.

O slackware foi uma revolução, pois com ele aprendi a compilar o kernel, o que me abriu um mundo novo de possibilidades… Com ele deixei de ser refém do linux e tomei o controle, fiz aceleração 3D, som e após 6 meses o meu modem… Com isso aposentei o Windows 2000 que tinha na minha máquina e nunca mais usei sistemas da Microsoft pra algo além de jogar.

É claro que depois conheci, gentoo, redhat, LFS, fiz minhas próprias distros , fiz as pazes com o debian, odiei o ubuntu, mandei o debian pra PQP, conheci o fedora , abandonei o fedora , voltei pro gentoo …. Mas quero me ater ao Slackware pois ele me lembra muito o ArchLinux.

O slackware fez minha alegria pois todo o sistema deve ser configurado na mão, não existem configuradores automáticos ou scripts que ninguém sabe pra que serve. Um ótimo ambiente para aprendizado, ideal para quem tem máquina velha. Deixei de usar o slack por mais de 2 / 3 do meu sistema era composto de pacotes que eu mesmo fazia, o número de pacotes era tão grande que enchia 2 cds com pacotes TGZ, e olha que na época cabia o KDE e o GNOME inteiros em um único CD-ROM de 650 Mb. Junto com Roberto Parra, hospedamos boa parte desses pacotes no seu servidor e doamos para o site linuxpackages , naquela época não conhecia o coletivo Saravá , que possuem um dos maiores e melhores repositórios de pacotes slackware .

O que me incomodava no slack era o sistema de pacotes, que não tinha resolução de dependências ou upgrades, e levando em conta que gastava boa parte do meu tempo recompilando pacotes minha migração para o Gentoo foi natural . Nessa época o gentoo bombava, a politica era a de pacotes novos sempre… Mas esse espirito se foi com a saída de Daniel Robins a distro ficou abandonada e hoje está sem rumo.

O Arch linux ocupou esse espaço deixado pelo gentoo, com as vantagens do slack e do fedora, saca a política dos caras :

  • Pacotes recentes, custe o que custar, bem no estilo fedora
  • Sistema simples, com scripts de inicialização estilo BSD, como no Slackware
  • Pacotes binários com foco em desempenho apenas para i686 e x86_64, desempenho bom como no gentoo
  • Facilidade de criação de pacotes, como no slack
  • Instalação em TXT, com dialogos, muito simples, como no slack
  • Detecção automática de hardware de c* é r**a !!!
  • Gerenciamento de pacotes rápido e eficiente, resolvendo conflitos sem precisar de apt-get -f install , viva o Pacman !
  • Distro muito bem documentada como o Gentoo, e com ótimos cérebros nas listas… Diferente das listas do Ubuntu e Fedora que só tem n00b

A distro é muito legal, e é a distro geek que mais cresce atualmente ! Por incrivel que pareça ela tem foco em usabilidade, não estressa os nerds de plantão, acaba com os aborrecimentos tipicos de uma configuração/manutenção do slack . E não é recomendada para n00bs, vai usar Ubuntu seu lerdo !

Senti uma certa nostalgia ao usar o arch, e me lembrei dos bons tempos de quando usar o linux era uma experiência gratificantes ,educativa e divertida. Arch vem com muitos drivers proprietários nos repositórios e no CDROM, oque elimina a parte chata de usar uma distro tão simples.

Nas minhas próximas máquinas vou instalar Arch com certeza, e agora passa a ser minha recomendação de distro para o ano de 2008 😉

Acessando o VirtualBox de fora

VirtualBox é um emulador de PCs,e assim como o VMware é capaz de criar máquinas virtuais que permitem rodar N sistemas operacionais ao mesmo tempo. A diferença entre os dois é que o VirtualBox é livre (possui versão paga) , e o vmware é totalmente fechado e caro. Ok, podem me chamar de traidor do movimento, mas o VMware comanda, em todos os sentidos ele é melhor que o VirtualBox, por isso sou beta tester e não pago por ele 😛

O grande problema do VirtualBox é a dificuldade de se fazer coisas simples, como configurar uma Bridge entre o sistema real e o virtual, enquanto no vmware ou parallels tudo é ridiculamente simples, no virtualbox chega quase a ser um parto, duvida ?

O sistema usado para os testes foi o debian lenny , segue a instalação dos pacotes de bridge, estou assumindo que o seu virtualbox já está rolando :


apt-get install bridge-utils iproute iptables

Use os seguintes comando no terminal para ativar o bridge :


# Configurando a interface virtual Tap1
tunctl -t tap1 -u
ip link set up dev tap1

No campo coloque o nome do usuário que vai fazer a ponte.


# Criando a ponte
brctl addbr br0
brctl addif br0 tap1

Finalmente arrumando os IPs:


# set the IP address and routing
ip link set up dev br0
ip addr add 10.1.1.1/24 dev br0
ip route add 10.1.1.0/24 dev br0

O IP 10.1.1.1 é o ip do Host que a máquina virtual vai usar como gateway, ou seja, sua máquina virtual vai ter que usar um ip da mesma rede do gateway.

Agora o mais divertido, configurando o iptables para rotear uma porta da máquina virtual para a máquina real :

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -i eth0 -p tcp -d xxx.xxx.xxx.xxx --dport 8080 -j DNAT --to 10.1.1.2:8080
iptables -A FORWARD -i eth0 -p tcp -d xxx.xxx.xxx.xxx --dport 8080 -j ACCEPT

No lugar de xxx.xxx.xx.xxx.xxx use o IP da sua máquina real. Agora a porta 8080 da máquina virtual é acessível de fora, ou seja da porta 8080 máquina real

Pra finalizar, você deve configurar o seu VirtualBox para usar uma Host Interface nas configurações de rede, o Device a ser usado deve ser a tap1, e mais uma coxisse que deve ser corrigida, as permissões dos devices que o VirtualBox usa :


chmod 666 /dev/vboxdrv /dev/net/tun

Sem isso nada vai funcionar, alias o programa vai dar um erro -3100, mensagem nada intuitiva.

Na boa, VirtualBox é um programa muito mal acabado, sua interface aparentemente simples esconde verdadeiras armadilhas para um usuário comum ou alguém com pouco tempo livre para pesquisar em fóruns por soluções. Eu gastei umas duas horas lendo a documentação oficial em PDF e só perdi meu tempo. Apesar de tudo ele tem um desempenho decente, mas como disse, não é um software pronto, e com concorrentes como vmware e parallels sua viabilidade economica está correndo perigo.

E viva o qemu !!!