eeepc900 linux下安裝EETI touchscreen及一些tips

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

eeepc900 linux下安裝EETI touchscreen及一些tips
圖:這隻NDS觸控筆筆觸似乎是我買過的幾隻中較好用的,黑色搭配外殼也不錯看

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

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

eeepc900 linux下安裝EETI touchscreen及一些tips
圖:想要貼紙的網友,我這裡還有一些,不過因為沒有印很多,加上還有親朋好友也要,所以只能中壢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的所有功能也都可以用,萬歲啦~~~

eeepc900 linux下安裝EETI touchscreen及一些tips
用觸控代替滑鼠,很難形容那種順暢的感覺,就是認為滑鼠早該淘汰才去敗觸控面板

eeepc900 linux下安裝EETI touchscreen及一些tips
用手也可以,只能說使用近一個月來滿意得不得了,穩定性也高,感謝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系統,筆者也要找時間多去充電一下知識了才不會知識落伍..如有錯誤的地方也請各位大大指正,以上

(很奇怪,從正常首頁進去似乎到不了這個頁面)


在禾瑞亞科技EETI的公司網站,要找EETI有關觸控產品的Driver或AP,請在首頁(www.eeti.com)左邊按下ENTER進入網站。

上方選項SUPPORT,滑鼠滑進停住,下拉選項就會出現Video IC以及Touch Solution,往下滑到Touch Solution停住,右邊會再出現一些選項,第一個Drivers點進去就是Drivers主頁,找到Linux點進去即相關的TouchKit下載。

http://home.eeti.com.tw/web20/TouchKitDriver/linuxDriver.htm


原本EEEPC上的網路Video IC元件也是EETI的產品,可惜在最後關頭錯過訂單~
感謝大大指正,應該是我眼花沒有看到這個聯結,原文中已修正,也修改一些錯字,ubuntu 8.10快出現了,聽說開機速度更快...真是發展神速的作業系統...希望禾瑞亞能繼續開發新產品及持續維護驅動程式,造福使用者群
感謝OASYS大大 詳細的說明

但是我下載完kernel 開始跑 make oldconfig 就出現一堆錯誤訊息

之後的動作就無法進行了

這跟我使用的是 ubuntu-eee 8.04.1 的版本有關嗎??

malego wrote:
感謝OASYS大大 ...(恕刪)


下載完要照著這幾個步驟
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

您的版本我確定可以編譯,不過有可能是您少了gcc相關的編譯器,您可以po出錯誤訊息看看..基本上這段編譯模組也是小弟卡最久的一段...而且應該有更好的方法(光是等modpost.o跑出來就很不直接)

不過既然您是使用ubuntu eee8.0.4.1
小弟已經有編譯好的tkusb.ko,原文有提供下載(連結點掛了請告知小弟)
所以中間編譯的那段您可以直接跳過,直接跳到mknod tkpanel0 c 180 180這個步驟往下執行即可..可以省下大半工時,有tkusb.ko這個檔案,大概就成功80%了

把您下載好的tkusb.ko放到/lib/modules之類的目錄,其餘就照著接下來的步驟試試看,linux裡的硬體驅動程式是以模組的型式 (module)存在,所以在/lib/modules下您可以看到各式各樣的驅動模組,載入模組的方法是insmod,而移除模組的方法是rmmod

以上就是後半部安裝的一些解釋,抱歉小弟廢話多了點,如果知道這些安裝步驟的用意,即使是新手也可以做些變通...期望早日聽到您安裝成功的好消息喔!!
哇啊啊啊啊啊啊!我辛苦了一個早上…花了不知道多少時間…
還是失敗…我用的是hp tx1000:Bus 001 Device 007: ID 0eef:0001 D-WAV Scientific Co., Ltd eGalax TouchScreen

照著版大的步驟用,卻不成功!主要是卡在make modules那裡...已經編到/ubuntu了還看不到modpost.o的蹤影
索性拿了linux-headers-2.6.31-16-generic頂替…make install失敗

下載了tkusb.ko,其他步驟乾脆硬上!(用sudo -i)

不過lsmod之後,tkusb沒有出來!快瘋掉了!

以上,有哪位先進能替愚昧的小弟解惑?
ASUS T91MT 是用華矽 (MosArt) 觸控晶片, 其 firmware 是 ASUS 與 MosArt 共同開發.
已經有量產經驗, 禾瑞亞尚有 Bug, 遲遲無法導入量產.

2010 3 月 將 release 的 Moblin SDK v2.2 上, Intel 與 ASUS 會共同推出 Multi-Touch (MT) Driver,
Gesture Engine, 來結合 Clutter, 變成一套 Multi-Touch API.

目前這套 Multi-Touch Develop Kit (USB 外接式 8.9' MT Panel + Moblin MT API source)
Intel 在 2009 Linux Plummer 研討會上, 已經灑給幾個 Open Community, 讓他們先行開發
Multi-Touch Awareness Linux Application. 已確定的是, FireFox 會改出 MT 版,
而被 Intel 買下來的 OpenHand, 也會在 Clutter 上寫出幾個 3D + MT 的 application.

2009 3 月, Intel 將會同步公開 MooresTown chip 跟 Moblin SDK v2.2.
屆時 Moblin Linux 平台會有一套標準的 Multi-Touch API. 讓上層的 application
能跟下層的 MT Hardware 有標準介面來銜接.

消失了一陣子...今天上來才發現有人遇到安裝的問題

目前我已經將eeepc900的系統更新到easy peasy1.5(ubuntu eee的最新版本,重新編譯的ubuntu9.04,kernel為2.6.30),禾瑞亞的Touch Screen Driver也更新了,新的kernel跟新的driver也撞出新的火花...阿..不是..是新的問題,不過好在還是順利解決了...

如果大家遇到問題,歡迎將任何錯誤訊息po出來,既然我都裝成功了,應該沒有什麼解決不了的問題。

改裝觸控螢幕超過一年半了,即使過保小E仍然運作順暢,陪我上天下海,希望他能陪我念完學位...
看起來真的好贊. 手上 的epc 701 也過了保固. 請問觸控套件哪裡可以購得? 謝謝!!
那我就貼了Orz......謝謝
進入USBsrc後make all得到以下訊息
make -C /usr/src/linux SUBDIRS=/home/flycr/test/eGalaxTouch32/USBSrc modules
make[1]: Entering directory `/usr/src/linux-source-2.6.32'

WARNING: Symbol version dump /usr/src/linux-source-2.6.32/Module.symvers
is missing; modules will have no dependencies and modversions.

CC [M] /home/flycr/test/eGalaxTouch32/USBSrc/tkusb.o
In file included from /home/flycr/test/eGalaxTouch32/USBSrc/tkusb.c:15:
/home/flycr/test/eGalaxTouch32/USBSrc/tkusb.h:25:27: error: asm/semaphore.h: 沒有此一檔案或目錄
/home/flycr/test/eGalaxTouch32/USBSrc/tkusb.c: In function ‘DoSendData’:
/home/flycr/test/eGalaxTouch32/USBSrc/tkusb.c:47: warning: passing argument 7 of ‘usb_fill_control_urb’ from incompatible pointer type
include/linux/usb.h:1246: note: expected ‘usb_complete_t’ but argument is of type ‘void (struct urb *, struct pt_regs *)’
/home/flycr/test/eGalaxTouch32/USBSrc/tkusb.c: In function ‘irq_tscreen’:
/home/flycr/test/eGalaxTouch32/USBSrc/tkusb.c:146: warning: passing argument 6 of ‘usb_fill_int_urb’ from incompatible pointer type
include/linux/usb.h:1311: note: expected ‘usb_complete_t’ but argument is of type ‘void (struct urb *, struct pt_regs *)’
/home/flycr/test/eGalaxTouch32/USBSrc/tkusb.c: In function ‘lauch_int_read’:
/home/flycr/test/eGalaxTouch32/USBSrc/tkusb.c:180: warning: passing argument 6 of ‘usb_fill_int_urb’ from incompatible pointer type
include/linux/usb.h:1311: note: expected ‘usb_complete_t’ but argument is of type ‘void (struct urb *, struct pt_regs *)’
make[2]: *** [/home/flycr/test/eGalaxTouch32/USBSrc/tkusb.o] Error 1
make[1]: *** [_module_/home/flycr/test/eGalaxTouch32/USBSrc] Error 2
make[1]: Leaving directory `/usr/src/linux-source-2.6.32'
make: *** [all] Error 2
關閉廣告
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!