wtorek, 11 sierpnia 2009

HP tx2650ew, jego ekran dotykowy i przygoda z Ubuntu 9.04 (64 bit)

Wpadł w moje ręce ostatnio notebook HP tx2650ew. Ma bardzo wygodny ekran dotykowy wraz z rysikiem i obrotowy ekran. Oczywiście pod Windowsa HP wypuszcza oficjalne sterowniki - a my biedni linuksiarze musimy kombinować ;) Podzieliłem dysk na kilka partycji, z czego jedna dla Win, a druga dla Ubuntu 9.04(wersja 64 bit). Opiszę, jak mi się udało uruchomić działający sprawnie ekran dotykowy(kwestia obrotu ekranu będzie poruszona w przyszłości). Znalazłem w sieci masę różnych sposobów - oto mój i wydaje mi się, że najprostszy.

1. Będziemy potrzebowali najnowszej wersji sterowników Wacom do samodzielnej kompilacji. Jak zawsze zaczynamy od uruchomienia konsoli i najpierw pobieramy źródła z oficjalnego serwera na SourceForge poleceniem
wget http://downloads.sourceforge.net/project/linuxwacom/linuxwacom/0.8.4/linuxwacom-0.8.4.tar.bz2
W katalogu domowym po chwili mamy już nasze źródła. Rozpakujmy je
tar xjvf linuxwacom-0.8.4.tar.bz2
i przejdźmy do odpowiedniego katalogu
cd linuxwacom-0.8.4/

2. Zainstalujmy teraz wszystkie potrzebne pakiety do kompilacji
sudo apt-get update
sudo apt-get install libxtst-dev libxi-dev linux-headers-generic wacom-tools xserver-xorg-input-wacom build-essential libx11-dev x11proto-input-dev xserver-xorg-dev tk8.5-dev tcl8.5-dev libncurses5-dev
sudo apt-get purge wacom-tools
Wacom-tools instalowaliśmy po to, żeby spełnić ewentualne zależności - nie będziemy tego na razie potrzebować(bo kompilujemy swój moduł), więc to usuwamy.

3. Teraz sam proces kompilacji. Konfigurujemy nasze źródła poleceniem
./configure --enable-wacom --prefix=/usr
i rozpoczynamy kompilację
make
Na koniec gotowy moduł kopiujemy do folderu /lib/modules naszego kernela
sudo cp ./src/2.6.28/wacom.ko /lib/modules/2.6.28-15-generic/kernel/drivers/input/tablet/wacom.ko

4. Teraz tworzymy plik konfiguracyjny dla naszego tabletu. W tym celu stworzymy nowy plik
sudo gedit /usr/share/hal/fdi/policy/20thirdparty/10-wacom.fdi
i wklejamy do niego poniższą zawartość:
<?xml version="1.0" encoding="UTF-8"?><!-- -*- SGML -*- -->

<deviceinfo version="0.2">
<device>
<match key="input.originating_device" contains="/org/freedesktop/Hal/devices/usb_device_56a_93_noserial_if0">
<merge key="input.x11_driver" type="string">wacom</merge>
<merge key="input.x11_options.Type" type="string">stylus</merge>
<append key="info.callouts.add" type="strlist">hal-setup-wacom</append>
<append key="wacom.types" type="strlist">eraser</append>
</match>
</device>
<device>
<match key="input.originating_device" contains="/org/freedesktop/Hal/devices/usb_device_56a_93_noserial_if1">
<merge key="input.x11_driver" type="string">wacom</merge>
<merge key="input.x11_options.Type" type="string">touch</merge>
<append key="info.callouts.add" type="strlist">hal-setup-wacom</append>
</match>
</device>
</deviceinfo>
Zapisujemy plik i przechodzimy do ostatniego etapu.

5. Ostatnim krokiem jest utworzenie skryptu poleceniem
sudo gedit /etc/init.d/wacomtohal
wklejamy tam:
#! /bin/sh
## find any wacom devices
for udi in `hal-find-by-property --key input.x11_driver --string wacom`
do
type=`hal-get-property --udi $udi --key input.x11_options.Type`
## rewrite the names that the Xserver will use
hal-set-property --udi $udi --key info.product --string $type
done
teraz nadajemy skryptowi prawo wykonywania:
sudo chmod +x /etc/init.d/wacomtohal
i dodajemy go do skryptów startowych
sudo update-rc.d wacomtohal defaults 27
Po restarcie ekran powinien reagować na rysik czy palec.

6. W razie gdyby ekran był nieprecyzyjny - możemy go skalibrować. Do tego będziemy potrzebowali wcześniej usunięty pakiet
sudo apt-get install wacom-tools
Potem polecenie
wacomcpl
uruchomi nam graficzny program do kalibracji, który nas przeprowadzi przez jej tajniki. Wynik kalibracji zostanie zapisany do pliku ~/.xinitrc. Otwieramy go w dowolnym edytorze, lub wyświetlamy jego zawartość w konsoli poleceniem
cat ~/.xinitrc
Musimy z niego pobrać nasze wyniki(liczby z odpowiednich pól) i wkleić je do odpowiednich pól w pliku, który otwieramy poleceniem
sudo gedit /usr/share/hal/fdi/policy/20thirdparty/10-wacom.fdi
Wymazujemy jego zawartość i wklejamy poniższą, oczywiście wpisując w odpowiednich polach liczby wyświetlone wcześniej.
<?xml version="1.0" encoding="UTF-8"?><!-- -*- SGML -*- -->

<deviceinfo version="0.2">
<device>
<match key="input.originating_device" contains="/org/freedesktop/Hal/devices/usb_device_56a_93_noserial_if0">
<merge key="input.x11_driver" type="string">wacom</merge>
<merge key="input.x11_options.Type" type="string">stylus</merge>
<append key="info.callouts.add" type="strlist">hal-setup-wacom</append>
<append key="wacom.types" type="strlist">eraser</append>
<merge key="input.x11_options.BottomY" type="string">0</merge>
<merge key="input.x11_options.BottomX" type="string">0</merge>
<merge key="input.x11_options.TopY" type="string">0</merge>
<merge key="input.x11_options.TopX" type="string">0</merge>
</match>
</device>
<device>
<match key="input.originating_device" contains="/org/freedesktop/Hal/devices/usb_device_56a_93_noserial_if1">
<merge key="input.x11_driver" type="string">wacom</merge>
<merge key="input.x11_options.Type" type="string">touch</merge>
<append key="info.callouts.add" type="strlist">hal-setup-wacom</append>
<merge key="input.x11_options.BottomY" type="string">0</merge>
<merge key="input.x11_options.BottomX" type="string">0</merge>
<merge key="input.x11_options.TopY" type="string">0</merge>
<merge key="input.x11_options.TopX" type="string">0</merge>
</match>
</device>
</deviceinfo>

I to wszystko - restart i mamy dobrze działający i skalibrowany tablet.

src: tu, tu i tu

Brak komentarzy:

Prześlij komentarz