2010年9月10日 星期五

Use Broadcom crystalhd on Fedora12

945GSE因為播放高清影片會頓到不行,Linux上播HD也會稍微感覺到卡卡的,所以找了硬體加速卡想來增加影片品質。

最簡易的方式就是安裝XBMC這個Media Center,ubuntu10.04可以直接透過apt-cache search xbmc搜尋到,但是不確定是否是支援Crystalhd的版本。這次目標是Fedora12!

1. 準備會用到的環境
參考 這裡 來安裝XBMC所需的lib以及package。
~$ yum install automake libtool autoconf gstreamer-plugins-base-devel gstreamer-devel kernel-devel (這是CrystalHD會用到的packages)

2. 安裝Broadcom CrystalHD Driver
~$ cd driver/linux
~$ chmod +x bcm_70012_dev.sh
~$ chmod +x bcm_70012_run.sh
~$ autoconf
~$ ./configure
modify crystalhd_lnx.h line 92
inline struct device *chddev(void);

~$ make ; make install
~$ cd ../../linux_lib/libcrystalhd
~$ make ; make install
~$ cd ../../filters/gst/gst-plugin/
~$ ./autogen.sh
~$ make ;
make install
~$ cd ../../../firmware/fwbin/
~$ cp 70012/* 70015/* /lib/firmware/

3. 安裝 XBMC
~$ cd XBMC/
~$ sudo ln -s /usr/lib/mysql/libmysqlclient.so.16.0.0 /usr/lib/libmysqlclient.so
~$ ./bootstrap
~$ ./configure
~$ make
~$ make install

4. 假如selinux有開啟的話,執行下面指令來enable xbmc *.so
~$ chcon -t texrel_shlib_t /usr/local/lib/xbmc/system/players/dvdplayer/avutil-50-i486-linux.so
~$ chcon -t texrel_shlib_t /usr/local/lib/xbmc/system/players/dvdplayer/avcodec-52-i486-linux.so
~$ chcon -t texrel_shlib_t /usr/local/lib/xbmc/system/players/dvdplayer/avformat-52-i486-linux.so
~$ chcon -t texrel_shlib_t /usr/local/lib/xbmc/system/players/dvdplayer/swscale-0.6.1-i486-linux.so

這時候就可以開啟xbmc以及看到xbmc -> system -> video -> playback 下有 Allow hardware acceleration (CrystalHD)這個選項了。但是不幸的是,選了CrystalHD也沒作用...

原來是kernel本身有一個driver crystalhd在 drivers/staging/crystalhd下,而新的crystalhd.ko是安裝到drivers/video/broadcom/下。
而load modules的順序,會是staging/crystalhd/crystalhd.ko會先被load進去。所以只要將新的crystalhd.ko 蓋掉drivers/staging/crystalhd/crystalhd.ko即可。


************************** XBMC on ubuntu 9.04 ***************************

也需要source code重新編譯,因為ubuntu與fedora filesystem安裝的東西相差蠻多的,所以在此記錄

1. 取得xbmc repository
~$ sudo vi /etc/apt/sources.list
add two lines
deb http://ppa.launchpad.net/team-xbmc/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/team-xbmc/ppa/ubuntu jaunty main

~$ sudo apt-get update (Get Key 91E7EE5E)
~$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 91E7EE5E
~$ sudo apt-get update (Get xbmc repository)
~$ cat README.ubuntu
~$ cat README.linux

2010年9月2日 星期四

EZUSB PC/SC smartcard reader on ubuntu 9.10

這個smartcard reader module是很汎用的一個組件。之前在很多板子以及Linux Dist.下都有做過測試,都沒出現無法使用的問題 (ex: Fedora12)。但是在ubuntu 9.10上就觸礁了,因此要尋找解決方式。

參考:這裡

最後解決的方式是︰rebuild pcscd (1.5.3)

一開始我去抓了最新的pcscd (1.6.4)的source code來編譯,一直都失敗,最後有成功,但是卻因為做了很多瑣事,不能確定如何成功的。為了正確的步驟,還原後卻再也無法成功...
後來抓了同版本的pcscd (1.5.3),enable libuusb、disable libhal後就可以讓裝置正常運作 (淚)

1. Get pcscd source code
~$ sudo apt-get source pcscd

2. Rebuild pcscd source code with special parameter
~$ mv pcsc-lite-1.5.3 /usr/local/
~$ mkdir /usr/local/pcsc-lite-1.5.3/drivers/
~$ cd /usr/local/pcsc-lite-1.5.3/
~$ sudo apt-get install libusb-dev
~$ sudo ./configure --disable-libhal --enable-libusb --enable-usbdropdir=/usr/local/pcsc-lite-1.5.3/drivers/
~$ sudo make
~$ sudo make install

3. Download Castles Tech EZUSB PC/SC driver from
http://www.casauto.com.tw/en/in-download.aspx

4. Install EZUSB PC/SC smartcard reader driver
~$ tar zxf EZUSB_Linux_x86_v1.4.9.tar.gz -C /usr/local
~$ cd /usr/local/EZUSB_Linux_x86_v1.4.9/driver_ezusb_v1.4.9

Modify install to change install path "/usr/local/pcsc/" to "/usr/local/pcsc-lite-1.5.3/"
~$ sudo ./install

5. Auto start pcscd when pc start
~$ vi /etc/rc.local
add "/usr/local/sbin/pcscd"

Finish.

後記︰在Fedora 12下,~$ pcscd -version,他預設也是enable libhal,但是卻可以運作一 一
驅動裡面的Readme有寫,不支援libhal,因此ubuntu才需要rebuild pcscd。Fedora 12這點讓我不解。

ALC883 on ubuntu 10.04, 9.10

測試intel pineview + alc 883,發現聲音出不來。但是驅動是有正常運作 (可以調音量、看裝置)。

參考 這裡
這邊有verb-tabe的介紹
kernel內也有祥細文件: kernel/Documentation/sound/alsa/HD-Audio.txt

ALC883跟ALC888相同,都是HD Audio Codec,所以是snd-hda-intel。
/usr/share/doc/alsa-base/driver/ALSA-Configuration.txt.gz內可以看到Module snd-hda-intel的相關敘述。
>> Module for Intel HD Audio (ICH6, ICH6M, ESB2, ICH7, ICH8, ICH9, ICH10, PCH, SCH),

>> Each codec may have a model table for different configurations.
>> If your machine isn't listed there, the default (usually minimal)
>> configuration is set up. You can pass "model=" option to
>> specify a certain model in such a case. There are different
>> models depending on the codec chip. The list of available models
>> is found in HD-Audio-Models.txt

所以接下來去參考kernel source下的Document/sound/alsa/HD-Audio.txt以及 HD-Audio_models.txt.
>> 3stack-6ch 3-jack 6-channel
裡面有相當多的model可以指定,但是並沒有太多時間去測試那些model的差異,選擇一個普通的3-jack 6-channel即可。

在/etc/modprobe.d/alsa-base.conf下指定他的model = 3stack-6ch即可
options snd-hda-intel model=3stack-6ch

重新開機! 聲音Get!

The HD-audio codec has usually "pin" widgets, and BIOS sets the default configuration of each pin, which indicates the location, the connection type, the jack color, etc.
在板子硬體設計完成時,會將線路交給廠商看。廠商會提供verb-table給bios工程師包進bios內,而verb-table會對codec下一連串命令,由於每個板子codec的ping widgets不盡相同,所以verb-table也不會相同。

The most common problem regarding the HD-audio driver is the unsupported codec features or the mismatched device configuration. Most of codec-specific code has several preset models, either to override the BIOS setup or to provide more comprehensive features.
因此,可能是bios有問題,這邊才需要修改alsa-base.conf來手動指定model。

http://www.alsa-project.org/alsa-info.sh
好用的shell script,會去audio相關檔案抓資料。

/sys/class/sound/hwCxDx有audio driver資料.

2010年6月18日 星期五

Calibrate Touch on Android-X86

Android for X86本身有內建一隻 ts_calibrate的程式,是拿來校正touch device用的。跟一般ARM上面操作有約略不同。可以在/etc/ts.env下看到所需的環境變數。
$ export `cat /etc/ts.env | head -n -1 | tail -n -1`
依此類推,有幾個參數,head那邊的數字就慢慢遞加。

有幾個比較不一樣的地方這邊提出
1. 預設TSLIB_TSDEVICE="/dev/input/event5"。
隨著硬體不同,不一定是event5,這時請愛用cat來確認touch device node。
2. 預設有一個TSLIB_CALIBFILE="/data/system/tslib/pointercal"
但是/data/system下並沒有tslib資料夾,所以就自己手動建立巴!

環境變數用好後,就可以使用ts_calibrate,但是只會出現一個點,接下來四個點要憑感覺XD,這個問題以後再找時間解決就好。
校正好後,他會將值存入pointercal。但是並不會立刻生效,重開機後就可以正常使用了!

2010年6月11日 星期五

Linux下的msn監控軟體

以前在資策會時有玩過msn下的msn監控軟體,今天無意間google到linux下也有類似軟體,而且操作很簡單 0 . 0

$ sudo apt-get install imsniff
$ sudo imsniff eth0 (我這邊是使用ethernet來上網,所以ifconfig可以看到eth0)
會跑出很多訊息,但是感覺跑出很多不必要的訊息。
$ sudo apt-get install libpcap-dev
感覺訊息有比較少了,但是還是有一些Unknown content-type

這種東西是偶然發現XD,別亂使用阿!! 個人隱私還是很重要的!!

2010年5月12日 星期三

mplayer -- ffmpeg-mt

N270+945GSE, 在XP下可以播得動1920x800的H.264影片, 但是在Linux上就會非常卡, 連1280x720都會感覺有點頓頓的.
原因是因為ffmpeg內的H.264 codec效能比不上Windows上得codec.
Mplayer官方網站有提供幾種加速的方式~
1. 用高階的Nvidia顯卡, 可以有效的幫忙CPU處理解碼.
2. 使用ffmpeg-mt, 讓CPU可以多核心解碼.
3. 購買CoreAVC codec, 這在Windows上可以免費取得, 但是Linux就必須付費購買了.

這邊有第三種方式的安裝方式.

由於家境清寒, 沒錢用1和3的方式, 所以這邊介紹第二種的安裝方式

環境: Ubuntu 9.10
硬體: N270 + 945GSE

Use git to get ffmpeg-mt source code
$ mkdir ffmpeg-mt
$ cd ffmpeg-mt
$ sudo apt-get install git-core
$ git clone git://repo.or.cz/mplayer-build.git

Prepare tools and compile
$ cd mplayer-build
$ sudo apt-get install autoconf libtool libavutil-dev libavdread-dev vflib3-dev
$ ./enable-mt
$ ./init
$ cd mplayer
$ ./configure
$ cd ..
$ make -j2

Use new mplayer to play sample video
$ mplayer/mplayer -vfm ffmpeg -lavdopts skiploopfilter=all:threads=2 ~/Desktop/sample.mkv

最後的測試結果: 1920x800還是會LAG, 但是比起之前好上不少, 而720P則是可以很順的播放.

2010年5月10日 星期一

My VIM

vim與yahoo翻譯的結合: ydict
參考這邊,