
大家好,這是小弟的第一次正式發文
曾經跟garyhg大提過想寫一篇linux下觸控螢幕的軟體安裝教學,但是一直遲遲沒有進展,其實文字部份早已寫好,只是一直沒有時間整理,不過這篇同時也是寫給自己留存,以後若要版本更新也才記得那些煩瑣的步驟.有關觸控螢幕硬體安裝與介紹,請參考熱心的garyhg大的解說,而今天這篇則專注在linux下軟體的部份.

圖:這隻NDS觸控筆筆觸似乎是我買過的幾隻中較好用的,黑色搭配外殼也不錯看
在開始前先說明一下,這些心得是靠經年累月的挫折與K技術文件才換來的,我看過許多人被linux桌面吸引一頭栽進來,卻因為挫折感太重而對linux敬而遠之,甚至從此以後對 linux產生恐懼,其實真的很可惜,所以我寧願要入門者,先不要急著把windows砍掉重練,先試著用桌機安裝ubuntu,或 opensuse,等你確定你的使用習慣真得可以適應,或是不會很依賴window下的軟體(如遊戲),再來談要不要使用linux,也請原諒小弟無法回覆任何系統安裝與設定的問題,因為這些都咕狗得到,也有很多中文的文件,更有很多版上的前輩跟高手已經發表過許多相關的文章,小弟不敢班門弄斧.硬體方面也可能要請如garyhg大等高手來解說,小弟不是很熟,唯有觸控螢幕軟體的安裝與編譯是網路上比較缺乏的,資訊也都很分散,且大多是原文,所以以下要正式解說如何在Eeepc900+Ubuntu下安裝觸控面板的驅動程式,基本上這個方法適用Asus Linux,應該也適用其他linux(如OpenSuSE,Mandrake..等),在開始之前,請先俱備基本的編輯文字檔能力(如vi,gedit 等),稍候我們可能會用到Kernel-source來編譯觸控螢幕的模組(modules),並要把內建的模組取代,如果您看到最後覺得有快昏倒的感覺,先關掉這個頁面,去到處晃一下玩一下其他東西,過一兩天再回來試試..

圖:有了觸控螢幕的搭配,再加上ubuntu inside,樸實的外表下卻有超越想像的內涵,這就是獨一無二不會撞機的eeepc900TL,貼紙質感還蠻不錯的。

圖:想要貼紙的網友,我這裡還有一些,不過因為沒有印很多,加上還有親朋好友也要,所以只能中壢nova自取..(免費送給前10名朋友,當作推廣ubuntu跟linux,送光就沒囉~,需要的人請PM,貼紙可以去搜尋網路店家,我是在ubuntu論壇搜尋到Cute家客製貼紙,服務跟品質都很不錯喔!大力推薦!)
我們以ubuntu eee為範例,同時儘量囊括國外論壇所紀錄過的問題,其他linux程序應該相去不遠
我們待會要做的是:
1.先直接安裝觸控面板的程式
2.執行矯正程式OK,但有些功能呈暗灰無法修改
3.下載Kernel Source準備重新編譯觸控面板的usb driver
4.編譯成功後安裝新的usb模組,並把原來的內建模組disable
5.重新開機再執行一次矯正程式,所有功能都出現了..
6.進入google圖片,搜尋ubuntu logo或linux logo,下載後去印成自己的專屬貼紙,貼在eeePC上
7.從此快樂使用,不怕自己的Eeepc跟別人撞機了~
詳細說明(終端機下指令前,請愛用sudo -s 或su -,之後不再特別說明)
0.確定自己的linux kernel版本,目前應該都是2.6.x
%uname -r
及Xorg版本,以ubuntu eee為例,為1.4
%X -version
1.安裝完觸控套件硬體後,開機,試試看游標可不可以觸控,會動,但是位置不對,恩!已經成功了1/3,不會動則下指令lsusb,看看有沒有一個裝置是eGalax usb touchscreen的裝置,類似下面
Bus 004 Device 002: ID 0eef:0001 D-WAV Scientific Co., Ltd eGalax TouchScreen
有, 恭喜你,觸控的控制器部份應該是安裝正確,沒有,可能要重新檢查安裝過程,網路上搜尋到的7吋,8.9吋控制器,大多是使用EETI這家公司的,所以請去該公司的隱藏頁面下載官方驅動程式..喔..不..是驅動模組,選擇對應的kernel版本跟Xorg版本,注意,選錯版本是驅動不了的喔:
http://210.64.17.162/web20/TouchKitDriver/linuxDriver.htm (感謝bm2fhc大大的資訊,應該是小弟看錯,從首頁進得去這個頁面)
X -version 查詢Xorg版本
uname -r 查詢kernel版本
2. 以ubuntu eee為例(kernal 2.6;Xorg1.4),他有內建的touchscreen模組,但是這個模組不是給eGalax用的,也因此有很多功能沒有支援,回到EETI的驅動模組,解壓縮後裏面有個setup.sh 的script檔,有興趣的人可以看一下裏面的內容,因為等會我們也要做類似的設定,在這裡我們先直接執行安裝
sh setup.sh
選擇3.USB
安裝程式會把TouchKit這個校準程式copy到bin,並修改Xorg內容,還有安裝egalax.so這個程式庫,執行
TouchKit 進入校準程式,注意到下面他抓到的device是/dev/input/eventX,這個"X"是數字),回到/dev/input下察看,除了 mouse0外會多出一個mouse1,這個mouse1對應到eventX,而在Xorg.conf裡您可以設定egalax對應到/dev /input/eventX,這個方法是國外一位玩家的作法,雖然速成但有很多副作用
1.觸控功能執行不完全
2.插入新的USB裝置,eventX會跑掉...造成不可預期的現象
所以我們先停一下,去產生一個真正的usb modules,等會再回來處理這些設定
uname -r確定kernel版本
因為編譯模組需要kernel-Source裡的modpost.o,所以我們先下載Kernel-Source
1.apt-get install gcc linux-source-2.6.xx make
xx為剛剛uname -r所查到的編號
2.cd /usr/src
3.tar -xjvf linux-source-2.6.xx.tar.bz2
4.ln -s linux-source-2.6.xx /usr/src/linux
5.cd /usr/src/linux
準備開始編譯
1.make oldconfig
2.make prepare
3.make modules
眼睛盯著螢幕看,只要出現modpost.o後應該就可以中斷(ctrl^c),因為我們只要modpost.o這個檔案,然後回到剛剛解壓縮的TouchKit_X14,把裏面的TouchKit_X14.zip再解壓,進入USBsrc這個目錄
進入Makefile,尋找這行script
KDIR := /lib/modules/$(shell uname -r)/build
直接改成
KDIR := /usr/src/linux
,試著make install看看...恩...如果出現錯誤訊息,如
"struct usb_device_id is not terminated with a NULL entry!"
看起來好像是語法有問題(Bug?),進到tkusb.c裡,找到
static struct usb_device_id tk_table[] = {
{ USB_DEVICE( 0x1234, 0x0001 )},
{ USB_DEVICE( 0x1234, 0x0002 )},
{ USB_DEVICE( 0x0EEF, 0x0001 )},
{ USB_DEVICE( 0x0EEF, 0x0002 )},
{ USB_DEVICE( 0x3823, 0x0001 )},
{ USB_DEVICE( 0x3823, 0x0002 )}
};
這段,新增{}如下
static struct usb_device_id tk_table[] = {
{ USB_DEVICE( 0x1234, 0x0001 )},
{ USB_DEVICE( 0x1234, 0x0002 )},
{ USB_DEVICE( 0x0EEF, 0x0001 )},
{ USB_DEVICE( 0x0EEF, 0x0002 )},
{ USB_DEVICE( 0x3823, 0x0001 )},
{ USB_DEVICE( 0x3823, 0x0002 )},
{ }
};
(不熟C的人要注意逗號..)
儲存後make install一次...這次應該OK了~萬歲!!
出現tkusb.ko這個檔案..
mknod tkpanel0 c 180 180
depmod -a
後, 看看/dev/下有沒有tkpanel0這個裝置,試著insmod tkusb.ko看看會不會有錯誤訊息,如果沒有,恭喜啦!!網路上可以找到一些事先編譯好的tkusb.ko,但是試過沒有一個可以在ubuntu上用的,所以如果您是其他linux的使用者,用同樣的方法應該就可以產生專用的模組了..
為了造福Ubuntu使用者,大家可以直接下載小弟編譯好的tkusb.ko
接下來我們要把內建touchscreen block掉,先確定其名字是什麼,以ubuntu eee為例,是在/lib/modules/eeepc.../input/下的usbtouchscreen.ko(位置不一定,反正不是在usb就是在input) ,所以在/etc/modprobe.d/blacklist新增一行
blacklist usbtouchscreen
然後在/etc/rc.local內新增如下
rmmod usbtouchscreen (手動移除內建模組,比較安心)
insmod /你的tkusb,ko的位置/tkusb.ko
重新開機,如果沒啥大問題,觸控面板應該可以正常使用了..
看看模組有沒有載入成功
lsmod後出現tkusb就是成功了,如下
usbcore 91928 7 tkusb,usb_storage,libusual,ehci_hcd,uhci_hcd,usbhid
不放心的話
cat /proc/bus/usb/devices
看看有沒有出現eGalax裝置,例如
T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 4 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0eef ProdID=0001 Rev= 1.00
S: Manufacturer=eGalax Inc.
S: Product=USB TouchController
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=ff Driver=TouchKit
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=5ms
一切順利的話
TouchKit的所有功能也都可以用,萬歲啦~~~

用觸控代替滑鼠,很難形容那種順暢的感覺,就是認為滑鼠早該淘汰才去敗觸控面板

用手也可以,只能說使用近一個月來滿意得不得了,穩定性也高,感謝garyhg大大...
目前eeepc有幾個問題,但不確定是ubuntu造成的,例如:
1.當使用EFI磁區來加速開機(Boot booster),只能在插電下使用,使用電池似乎會造成當機並使BIOS回復預設值(Boot booster disable)
更新:把BIOS更新到0906好像就沒有當機過了..原因不詳..總之現在開機大概40秒可以進入登入畫面

2.Wifi燈在ubuntu eee下關不掉,但似乎不影響正常關閉無線網路,還有就是,似乎把WLan disable,整個機器會涼快許多...XD
3.SmartPad只能用兩指捲動和三指右鍵,無奈地詢問smartpad廠商是否有無linux driver,就是無回音...(嗚..不重視linux市場)
最後,老話一句,只要改機就有失去保固的風險,請大家不管是軟體方面或硬體方面,下手前都要慎重思考!關於eeepc在ubuntu下的應用幾乎可以寫成一本書了,從分割磁區到到客製化開機畫面,佈景主題,從系統服務設定到compiz應用,還有自由軟體的介紹,都足以另開一個專欄講述之,尤其是加上觸控螢幕後,整體的操作提升度更高,繼而不會想再回去用滑鼠,有機會在跟大家分享一些心得!!
ubuntu算是進步很快的linux系統,筆者也要找時間多去充電一下知識了才不會知識落伍..如有錯誤的地方也請各位大大指正,以上
真是發展神速的作業系統...希望禾瑞亞能繼續開發新產品及持續維護驅動程式,造福使用者群

























































































