2009年1月29日 星期四

新年快樂之YouTube影片大作戰

兒子的過年禮物是 MP4,可以聽 mp3(支援檔案 *.mp3 *.wma)
看影片(支援 *.avi *.wmv)
mp3 我用 CD 轉了不少
影片...沒有
想從 YouTube 上抓一些卡通給他看...

要將 YouTube 影片檔抓下來,google 一下就有很多的教學與網站提供這樣的服務
我找到 http://kej.tw/flvretriever/ 這個網站
將 YouTube 影片網址貼上,就會出現影片真實位址的連結(*.flv格式)
下載後自行改名,並加上 flv 的副檔名,就可以用您的媒體播放軟體播了
(我有裝 codecs: http://opensuse-community.org/Restricted_Formats )

要轉成 avi 格式,我找到 http://www.linux.com/articles/56642 提供的
flv2avi.sh (感謝 Manolis Tzanidakis) 轉貼在此:
#!/bin/sh
if [ -z "$1" ]; then
echo "Usage: $0 {-divx|-xvid} list_of_flv_files"
exit 1
fi

# video encoding bit rate
V_BITRATE=1000

while [ "$1" ]; do
case "$1" in
-divx)
MENC_OPTS="-ovc lavc -lavcopts \
vcodec=mpeg4:vbitrate=$V_BITRATE:mbd=2:v4mv:autoaspect"
;;
-xvid)
MENC_OPTS="-ovc xvid -xvidencopts bitrate=$V_BITRATE:autoaspect"
;;
*)
if file "$1" | grep -q "Macromedia Flash Video"; then
mencoder "$1" $MENC_OPTS -vf pp=lb -oac mp3lame \
-lameopts fast:preset=standard -o \
"`basename $1 .flv`.avi"
else
echo "$1 is not Flash Video. Skipping"
fi
;;
esac
shift
done

將上面的文字檔存成 flv2avi.sh
記得加上執行權限(chmod +x flv2avi.sh)
放在 ~/bin (或 /usr/local/bin)
$ flv2avi.sh -divx VIDEO_FILE.flv

就會將 VIDEO_FILE.flv 轉成 VIDEO_FILE.avi
我花了很長的時間(因為跟程式不熟),從到處的 bash script 範例中抄來抄去(主要是鳥哥的網站)
拼湊出下面的 script
希望將以上步驟簡化,看可不可以教會我兒子自己動手做...
(事實證明他還是只會叫老爸幫他...)
好像是可以用啦,但寫得很難看,希望路過的大哥幫忙提供意見
get_youtube2avi.sh
#!/bin/bash
#抓取 YouTube 影片並利用 flv2avi.sh[1] 轉存為 avi 檔案
if [ -z "$1" ]; then
echo "使用方法: $0 YouTube影片網址"
echo "例如: $0 http://tw.youtube.com/watch?v=yOUR8hlBCOs"
exit 1
fi
#設定參數
#影片預設存檔目錄
VIDEO_DIR=~/影片
#預設暫存目錄
TEMP_DIR="/tmp/get_youtube2avi"
#刪除 flv 檔案
DELETE_FLV="yes"
#flv2avi 參數
FLV2AVI_OPT="-divx"

#檢查(或建立)工作目錄
ls ${VIDEO_DIR} || mkdir -p ${VIDEO_DIR}
ls ${TEMP_DIR} || mkdir -p ${TEMP_DIR}
echo "取得網站原始碼存入暫存目錄..."
rm ${TEMP_DIR}/*
wget -P ${TEMP_DIR} $1
#找尋影片ID及名稱
TempYouTubeFile=`echo $1 | cut -d '/' -f 4 `
TempString=`grep fullscreenUrl ${TEMP_DIR}/${TempYouTubeFile}`
Tempstring=`echo ${TempString} | sed -n 's/ //gp'`
AVI_ID_1=`echo ${TempString#*video_id=} | cut -d \& -f 1`
echo "取得ID_1:"${AVI_ID_1}
AVI_ID_2=`echo ${TempString#*&t=} | cut -d \& -f 1`
echo "取得ID_2:"${AVI_ID_2}
echo "影片ID:"${AVI_ID_1}"&t="${AVI_ID_2}
AVI_NAME=`grep \<title\>YouTube ${TEMP_DIR}/${TempYouTubeFile} | cut -d \> -f 2 | cut -d \< -f 1`
AVI_NAME=`echo ${AVI_NAME} | sed -n 's/ //gp'`
echo "影片名稱:"${AVI_NAME}
#下載flv檔案
echo "開始下載影片..."
wget -P ${TEMP_DIR} http://www.youtube.com/get_video.php?video_id=${AVI_ID_1}"&t="${AVI_ID_2}
echo "影片下載完成!準備進行轉檔..."

rm ${TEMP_DIR}/${TempYouTubeFile}
cp ${TEMP_DIR}/* ${VIDEO_DIR}/${AVI_NAME}.flv

cd ${VIDEO_DIR}
flv2avi.sh ${FLV2AVI_OPT} ${AVI_NAME}.flv
if [ "$?" == 0 ]; then
echo "轉檔完成!"
echo "已經將"${AVI_NAME}".avi 存入"${VIDEO_DIR}"/資料夾中。"
if [ "${DELETE_FLV}" == yes ]; then
rm ${AVI_NAME}.flv
fi
else
echo "吼~出問題了!"
fi

#[1]Thanks Manolis Tzanidakis for flv2avi.sh
#You can get the script flv2avi.sh from http://www.linux.com/articles/56642
#or contact Author : manolis_AT_tzanidakis_DOT_gr


將上面的文字檔存成 get_youtube2avi.sh
一樣 chmod +x get_youtube2avi.sh
放在 ~/bin 或 /usr/local/bin 中
記得 flv2avi.sh 要先裝好
執行
$ get_youtube2avi [YouTube影片網址]

預設使用 YouTube title 相同的名稱,存放在 ~/影片 資料夾中
有興趣可以試試看
下面是執行的過程:
$ get_youtube2avi.sh http://tw.youtube.com/watch?v=p_SsakPOVoQ
get_video?origin=ash-v76.ash.youtube.com&video_id=p_SsakPOVoQ&ip=218.170.117.149&region=0&signature=B833E3D077C03F3AE115752BA7AEE248A21EA86E.97687192CC6EC27EA365600F5C7CECF241AB3C7F&sver=2&expire=1233187369&key=yt1&ipbits=0&redirect_counter=1
watch?v=p_SsakPOVoQ
取得網站原始碼存入暫存目錄...
--2009-01-29 02:03:51-- http://tw.youtube.com/watch?v=p_SsakPOVoQ
正在查找主機 tw.youtube.com... 208.117.236.74
正在連接 tw.youtube.com|208.117.236.74|:80... 連上了。
已送出 HTTP 要求,正在等候回應... 200 OK
長度: 76528 (75K) [text/html]
Saving to: `/tmp/get_youtube2avi/watch?v=p_SsakPOVoQ'

100%[======================================>] 76,528 18.0K/s in 4.2s

2009-01-29 02:03:56 (18.0 KB/s) -- 已儲存 ‘/tmp/get_youtube2avi/watch?v=p_SsakPOVoQ’ [76528/76528])

取得ID_1:p_SsakPOVoQ
取得ID_2:OEgsToPDskLDLU-EfuSXjNomTpo1TLz7
影片ID:p_SsakPOVoQ&t=OEgsToPDskLDLU-EfuSXjNomTpo1TLz7
影片名稱:YouTube-MrBean豆豆先生~卡通版
開始下載影片...
--2009-01-29 02:03:56-- http://www.youtube.com/get_video.php?video_id=p_SsakPOVoQ&t=OEgsToPDskLDLU-EfuSXjNomTpo1TLz7
正在查找主機 www.youtube.com... 208.65.153.238
正在連接 www.youtube.com|208.65.153.238|:80... 連上了。
已送出 HTTP 要求,正在等候回應... 302 Moved Temporarily
位置: http://tw.youtube.com/get_video.php?video_id=p_SsakPOVoQ&t=OEgsToPDskLDLU-EfuSXjNomTpo1TLz7 [跟隨至新的 URL]
--2009-01-29 02:03:57-- http://tw.youtube.com/get_video.php?video_id=p_SsakPOVoQ&t=OEgsToPDskLDLU-EfuSXjNomTpo1TLz7
正在查找主機 tw.youtube.com... 208.65.153.253
正在連接 tw.youtube.com|208.65.153.253|:80... 連上了。
已送出 HTTP 要求,正在等候回應... 303 See Other
位置: http://v17.cache.googlevideo.com/get_video?origin=ash-v76.ash.youtube.com&video_id=p_SsakPOVoQ&ip=218.170.117.149&region=0&signature=1AED5FBEA7E4FCA3025A81AAFAA1836E14BFE072.5623A4985C01122656399F791152EF48F0008717&sver=2&expire=1233187422&key=yt1&ipbits=0 [跟隨至新的 URL]
--2009-01-29 02:03:58-- http://v17.cache.googlevideo.com/get_video?origin=ash-v76.ash.youtube.com&video_id=p_SsakPOVoQ&ip=218.170.117.149&region=0&signature=1AED5FBEA7E4FCA3025A81AAFAA1836E14BFE072.5623A4985C01122656399F791152EF48F0008717&sver=2&expire=1233187422&key=yt1&ipbits=0
正在查找主機 v17.cache.googlevideo.com... 67.69.246.248
正在連接 v17.cache.googlevideo.com|67.69.246.248|:80... 連上了。
已送出 HTTP 要求,正在等候回應... 302 Found
位置: http://tc.cache.googlevideo.com/get_video?origin=ash-v76.ash.youtube.com&video_id=p_SsakPOVoQ&ip=218.170.117.149&region=0&signature=1AED5FBEA7E4FCA3025A81AAFAA1836E14BFE072.5623A4985C01122656399F791152EF48F0008717&sver=2&expire=1233187422&key=yt1&ipbits=0&redirect_counter=1 [跟隨至新的 URL]
--2009-01-29 02:03:59-- http://tc.cache.googlevideo.com/get_video?origin=ash-v76.ash.youtube.com&video_id=p_SsakPOVoQ&ip=218.170.117.149&region=0&signature=1AED5FBEA7E4FCA3025A81AAFAA1836E14BFE072.5623A4985C01122656399F791152EF48F0008717&sver=2&expire=1233187422&key=yt1&ipbits=0&redirect_counter=1
正在查找主機 tc.cache.googlevideo.com... 208.117.252.23
正在連接 tc.cache.googlevideo.com|208.117.252.23|:80... 連上了。
已送出 HTTP 要求,正在等候回應... 200 OK
長度: 27052157 (26M) [video/flv]
Saving to: `/tmp/get_youtube2avi/get_video?origin=ash-v76.ash.youtube.com&video_id=p_SsakPOVoQ&ip=218.170.117.149&region=0&signature=1AED5FBEA7E4FCA3025A81AAFAA1836E14BFE072.5623A4985C01122656399F791152EF48F0008717&sver=2&expire=1233187422&key=yt1&ipbits=0&redirect_counter=1'

100%[======================================>] 27,052,157 84.1K/s in 7m 37s

2009-01-29 02:11:36 (57.8 KB/s) -- 已儲存 ‘/tmp/get_youtube2avi/get_video?origin=ash-v76.ash.youtube.com&video_id=p_SsakPOVoQ&ip=218.170.117.149&region=0&signature=1AED5FBEA7E4FCA3025A81AAFAA1836E14BFE072.5623A4985C01122656399F791152EF48F0008717&sver=2&expire=1233187422&key=yt1&ipbits=0&redirect_counter=1’ [27052157/27052157])

影片下載完成!準備進行轉檔...
MEncoder 1.0rc2-SUSE Linux 11.0 (i686)-Packman-4.3 (C) 2000-2007 MPlayer Team
CPU: Intel(R) Pentium(R) M processor 1.10GHz (Family: 6, Model: 13, Stepping: 8)
CPUflags: Type: 6 MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled with runtime CPU detection.
success: format: 0 data: 0x0 - 0x19cc87d
libavformat file format detected.
[lavf] Video stream found, -vid 0
[lavf] Audio stream found, -aid 1
VIDEO: [FLV1] 320x239 0bpp 29.970 fps 0.0 kbps ( 0.0 kbyte/s)
[V] filefmt:44 fourcc:0x31564C46 size:320x239 fps:29.97 ftime:=0.0334
==========================================================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
AUDIO: 22050 Hz, 2 ch, s16le, 8.0 kbit/1.13% (ratio: 1000->88200)
Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
==========================================================================
Opening video filter: [expand osd=1]
Expand: -1 x -1, -1 ; -1, osd: 1, aspect: 0.000000, round: 1
Opening video filter: [pp=lb]
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffflv] vfm: ffmpeg (FFmpeg Flash video)
==========================================================================
MP3 audio selected.
VDec: vo config request - 320 x 239 (preferred colorspace: Planar YV12)
[PP] Using external postprocessing filter, max q = 6.
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is undefined - no prescaling applied.
videocodec: libavcodec (320x239 fourcc=34504d46 [FMP4])
[VE_LAVC] High quality encoding selected (non-realtime)!
New_Face failed. Maybe the font path is wrong.
Please supply the text font file (~/.mplayer/subfont.ttf).
subtitle font: load_sub_face failed.
Writing header...
ODML: vprp aspect is 16384:12236.
Writing header...
ODML: vprp aspect is 16384:12236.
Pos: 0.7s 22f ( 0%) 0.00fps Trem: 5min 25mb A-V:0.070 [0:74]
Skipping frame!
Pos: 1.0s 32f ( 0%) 29.74fps Trem: 4min 27mb A-V:0.070 [660:75]
Skipping frame!
Pos: 1.3s 42f ( 0%) 29.21fps Trem: 6min 37mb A-V:0.070 [724:76]
Skipping frame!
Pos: 1.6s 52f ( 0%) 29.80fps Trem: 7min 44mb A-V:0.068 [708:76]
Skipping frame!
Pos: 2.1s 68f ( 0%) 31.75fps Trem: 7min 40mb A-V:0.070 [654:77]
Skipping frame!
Pos: 577.5s 17312f (87%) 63.72fps Trem: 0min 57mb A-V:0.067 [653:79]
Skipping frame!
Pos: 577.9s 17326f (87%) 63.72fps Trem: 0min 57mb A-V:0.067 [654:79]
Skipping frame!
Pos: 651.5s 19533f (99%) 65.25fps Trem: 0min 58mb A-V:-0.032 [671:79]]
Flushing video frames.
Writing index...
Writing header...
ODML: vprp aspect is 16384:12236.

Video stream: 671.059 kbit/s (83882 B/s) size: 54650829 bytes 651.518 secs 19533 frames

Audio stream: 79.470 kbit/s (9933 B/s) size: 6474642 bytes 651.781 secs
轉檔完成!
已經將YouTube-MrBean豆豆先生~卡通版.avi 存入/home/ray/影片/資料夾中。

$ cd 影片/
$ ls
YouTube-MrBean豆豆先生~卡通版.avi

用 smplayer 播放
寄件者 openSUSE 11.1

2009年1月24日 星期六

藍芽滑鼠

如果您有藍芽裝置的話
在 opensuse 11.1 搭載的 KDE 4.1.3 中藍芽裝置是無法啟動的
參考:
http://forums.opensuse.org/hardware/402244-bluetooth-solution-opensuse-11-1-a.html
還好隨著 KDE 4.2 的即將發佈
許多功能漸漸完備
我用消費券買的藍芽滑鼠終於順利啟動了

加入 http://download.opensuse.org/repositories/KDE:/KDE4:/STABLE:/Desktop/openSUSE_11.1 套件庫,安裝 kdebluetooth4 套件(3.0 以上版本)
# zypper ar http://download.opensuse.org/repositories/KDE:/KDE4:/STABLE:/Desktop/openSUSE_11.1 kde4:stable:desktop
# zypper in kdebluetooth4

您可以設定 kbluetooth4 這個程式在登入 KDE 時自動啟動
(由 系統設定 -> 進階(標籤) -> 自動啟動,輸入 kbluetooth4)
啟動時就會出現一個藍芽圖示
寄件者 openSUSE 11.1

按右鍵會出現設定選單
寄件者 openSUSE 11.1

如果設成 Always trust 則會在偵測到這裝置時直接連結
我不知道要怎麼做事比較正確的作法
但您可以用上面連結中的 test-device
切換到 test-device 所在目錄
# ./test-device trusted 00:12:5A:6C:D3:47 yes

就完成了
你可以用
# hcitool con
Connections:
> ACL 00:12:5A:6C:D3:47 handle 42 state 1 lm MASTER

察看連結的裝置,知道位址之後,用
# hcitool info 00:12:5A:6C:D3:47
Requesting information ...
BD Address: 00:12:5A:6C:D3:47
Device Name: Microsoft Bluetooth Notebook Mouse 5000
LMP Version: 2.0 (0x3) LMP Subversion: 0x5cb2
Manufacturer: Infineon Technologies AG (9)
Features: 0xbc 0x02 0x04 0x38 0x18 0x00 0x00 0x00
<encryption> <slot offset> <timing accuracy> <role switch>
<sniff mode> <RSSI> <power control> <enhanced iscan>
<interlaced iscan> <interlaced pscan> <AFH cap. slave>
<AFH class. slave>

查詢該位址硬體的詳細資訊

2009年1月18日 星期日

修改 mp3tag 的好工具 python-mutagen

參考:
http://www.linuxsir.org/bbs/thread342703.html
安裝:
# zypper in python-mutagen

使用:
$ cd music/外交官的女人/
$ mid3iconv -e big5 *.mp3
Updating 01-癡狂若夢.mp3
Updating 02-讓故事回到最初.mp3
Updating 03-第一次見面,北京.mp3
Updating 04-有一天我們會住在西方,巴黎.mp3
Updating 05-珍貴的記憶是和你在一起.mp3
Updating 06-文革的紅小將們.mp3
Updating 07-於是我們再續前緣.mp3
Updating 08-唐同志,你還要什麼?.mp3
Updating 09-孩子,在那遙遠的地方.mp3
Updating 10-這是一種最好的偽裝.mp3
Updating 11-蝶戀花.mp3
Updating 12-那段和世人捉迷藏的日子.mp3
Updating 13-事發的瞬間.mp3
Updating 14-我不相信妳是男人.mp3
Updating 15-我覺得我們沒有錯.mp3
Updating 16-等妳回來,在巴黎.mp3
Updating 17-二十年後的落雨街頭,北京.mp3

開啟 Amarok
由『工具』->『重新掃描音樂集』
完成後:
寄件者 openSUSE 11.1

2009年1月17日 星期六

aMSN

寄件者 openSUSE 11.1

最近不知如何 Kopete 有時連不上
所以改裝 amsn
yast2 webpin_package_search 可以很輕鬆完成
我從 packman 裝了 amsnSVN
只有一個小問題
就是在變更為繁體中文語系(台語)時會有問題
寄件者 openSUSE 11.1

還好用 iconv 轉換一下就 OK 了
# cd /usr/share/amsn/lang/
# mv langzh-TW langzh-TW.orig
# iconv -f UTF-8 -t BIG5 langzh-TW.orig -o langzh-TW

重新開啟 amsn 即可
中文輸入及顯示都沒問題

2009年1月12日 星期一

webpin 套件搜尋

寄件者 openSUSE 11.1

主流 Linux 的安裝軟體哲學大多都是建立龐大的套件庫
只要加入適當的套件庫,就可以順利安裝專為該發行版打包的套件
從 10.3 開始,openSUSE 加入了單鍵安裝(1 Click Install)的功能
只要到 http://software.opensuse.org/search
(官方套件庫加 OBS 套件庫為主)和
http://packages.opensuse-community.org/
(官方套件庫加 OBS 套件庫加其他第3方套件庫,例如 packman)
去搜尋套件
就可以找到那個可愛的小按鈕
加入套件庫加安裝相依套件一次完成
所以上面兩個搜尋網站我一定收在書籤中
現在,快要不必了
請參考: Webpin Search in YaST for openSUSE 11.1
作者之一部落格的介紹:
http://kobliha-suse.blogspot.com/2008/07/package-search-and-one-click-install-in.html
執行
# yast2 webpin_package_search

就會呼叫出圖形介面的搜尋與安裝套件工具
輸入您要搜尋的軟體,可以用名稱、描述或內容來搜尋
注意:輸入完搜尋字串要先用滑鼠按『搜尋』
(因為現在預設 Enter 會直接安裝已勾選的軟體(但您還沒選))
寄件者 openSUSE 11.1

接著就像 1-Click Install 一樣加入套件庫,從網路下載安裝
寄件者 openSUSE 11.1

寄件者 openSUSE 11.1

注意:目前一次搜尋勾選後就要立刻安裝
不像套件管理,可以在勾選完後再搜尋別的關鍵字選其他軟體
簡單來說,就是只有最後一次搜尋勾選的才會安裝
這個功能還在開發中,應該可以在 11.2 出現在 YaST 管理員中
最上面那個 YaST 圖中的 "Webpin 套件搜尋" 圖示是我自己加上去的
用 yast2 sw_single 改的(圖示也是沿用套件管理的圖示)

webpin_package_search.desktop
[Desktop Entry]
X-SuSE-translate=true
X-SuSE-DocTeamID=ycc_webpin_package_search
Type=Application
Categories=Settings;System;Qt;X-SuSE-YaST;X-SuSE-YaST-Software;

X-KDE-ModuleType=Library
X-KDE-RootOnly=true
X-KDE-HasReadOnlyMode=true
X-KDE-Library=yast2
X-SuSE-YaST-Call=webpin_package_search

X-SuSE-YaST-Group=Software
X-SuSE-YaST-Argument=
X-SuSE-YaST-RootOnly=true
X-SuSE-YaST-AutoInst=
X-SuSE-YaST-Geometry=
X-SuSE-YaST-SortKey=20
X-SuSE-YaST-AutoInstResource=

Icon=yast-sw_single
Exec=/sbin/yast2 webpin_package_search

Name=Webpin Package Search
GenericName=Search software packages then install them
X-KDE-SubstituteUID=true
StartupNotify=true
Name[zh_TW]=Webpin 套件搜尋
GenericName[zh_TW]=由網路搜尋軟體套件並安裝

將上面的檔案存在 /usr/share/applications/YaST2/ 底下
就可以了
指令就忘了吧!

2009年1月9日 星期五

A gift from openSUSE

收到了 openSUSE 寄來的禮物
從德國寄來的
寄件者 openSUSE 11.1

裏面是 openSUSE 11.1 零售版(盒裝版)和T恤
寄件者 openSUSE 11.1

正面是可愛的綠色變色龍
寄件者 openSUSE 11.1

後面有 iContribute openSUSE 11.1 字樣
(聽說和店裡買的不同,這是貢獻者特別版)
寄件者 openSUSE 11.1

零售版本的 openSUSE 11.1 打開,裏面有 DVD, 手冊(Start-up,英文版),
Linux 雜誌廣告,手電筒,電池(好像是德國版才有送),加上兩張貼紙
寄件者 openSUSE 11.1

手電筒近照(9 Led)
寄件者 openSUSE 11.1

CD 盒中有 DVD,是雙層DVD,雙架構(32-bit+64-bit)
寄件者 openSUSE 11.1

還有一片商業軟體 CD (Commercial Software, openSUSE-Addon-NonOss)
寄件者 openSUSE 11.1

裏面有 acroread, antivir, cg, flash-player, gst-fluendo-mp3, iscan, ivtv-firmware,
java-1_5_0-sun, java-1_6_0-sun, moneyplex, netbeans, opera, sesam_srv, xv,
AdobeICCProfiles, javamail 等
報告完畢,單純炫燿文,敬請包涵

2009年1月6日 星期二

看數位電視

寄件者 openSUSE 11.1

在便利商店看到數位電視棒,長這個樣子:

中文名稱叫作"廣寰數位電視棒 全民搶鮮版"型號是 DVB-T 395U
心中不知道在想些什麼,竟然就買了下來
(openSUSE 盒裝版如果也在便利商店賣應該也會賣得不錯)
果然不出意料,插上 usb 之後完全沒反應(後悔已經來不及了)
先看看偵測到了什麼
# lsusb
Bus 006 Device 002: ID 0b05:1712 ASUSTek Computer, Inc. BT-183 Bluetooth 2.0+EDR adapter
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 006: ID 0bda:0158 Realtek Semiconductor Corp. Mass Stroage Device
Bus 007 Device 003: ID 04f2:b029 Chicony Electronics Co., Ltd USB 2.0 1.3M UVC Webcam
Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 004: ID 08ff:1600 AuthenTec, Inc. AES1600
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 003: ID 04fc:0003 Sunplus Technology Co., Ltd CM1092 Optical Scroller Mouse
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 1b80:e39b
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

其中 1b80:e39b 這個裝置是插上 DVB-T 395U 後才發現的
通常我們可以 google 1b80:e39b 來察看相關訊息
卻沒發現什麼東西
改用 kworld DVB-T 395U linux 查詢,收穫可豐富了
您可以連到(連來連去)下面這些地方
http://www.mail-archive.com/linuxtv-commits@linuxtv.org/msg01795.html
http://video4linux.org/browser/linux/drivers/media/dvb/dvb-usb?rev=9785%3A6a9d064fe0ee
http://linuxtv.org/hg/v4l-dvb
http://linuxtv.org/hg/v4l-dvb/rev/14ca056ed533dae6147aeb83a9334cc38f93d7ba
http://www.mail-archive.com/linuxtv-commits@linuxtv.org/msg01799.html
http://linuxtv.org/hg/v4l-dvb/rev/e82287af6e1d1549f523299099799158ce0cc375
http://linuxtv.org/hg/~anttip/af9015
從上面的連結中,您可以知道我們所需的核心模組是 af9015
由 v4l-dvb 計劃維護
您仔細看 patch 還會看見
usb ID 被誤為 1b80:e396
還有我們的目標是 linux/drivers/media/dvb/dvb-usb
而在您的 kernel source 目錄中並沒有 af9015 的東東
$ cd /usr/src/linux/drivers/media/dvb/dvb-usb/
$ ls
a800.c dib0700_core.c dtt200u.h gl861.c ttusb2.h
af9005.c dib0700_devices.c dvb-usb-common.h gl861.h umt-010.c
af9005-fe.c dib0700.h dvb-usb-dvb.c gp8psk.c usb-urb.c
af9005.h dib07x0.h dvb-usb-firmware.c gp8psk-fe.c vp702x.c
af9005-remote.c dibusb-common.c dvb-usb.h gp8psk.h vp702x-fe.c
af9005-script.h dibusb.h dvb-usb-i2c.c Kconfig vp702x.h
anysee.c dibusb-mb.c dvb-usb-ids.h m920x.c vp7045.c
anysee.h dibusb-mc.c dvb-usb-init.c m920x.h vp7045-fe.c
au6610.c digitv.c dvb-usb-remote.c Makefile vp7045.h
au6610.h digitv.h dvb-usb-urb.c nova-t-usb2.c
cxusb.c dtt200u.c dw2102.c opera1.c
cxusb.h dtt200u-fe.c dw2102.h ttusb2.c

表示還沒進入 2.6.27 核心中

您可以這樣做
http://linuxtv.org/hg/~anttip/af9015 上方的 bz2 或 gz 點下去
可以下載 af9015-* 的壓縮檔
解壓縮後,到 af9015-* 目錄中,看看 README 和 INSTALL 就會看見安裝指引
我們得知只要在該目錄中 make 然後 make install 就 OK 了
(記得您要有 kernel-source, gcc, make 等套件)
先別急著裝,請先修改 af9015-*/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h
將錯誤的 ID 由 e396 改為 e39b,然後存檔
再開始安裝
$ make
make -C /home/ray/Documents/af9015-57423d241699/v4l
make[1]: Entering directory `/home/ray/Documents/af9015-57423d241699/v4l'
creating symbolic links...
Kernel build directory is /lib/modules/2.6.27.7-9-pae/build
make -C /lib/modules/2.6.27.7-9-pae/build SUBDIRS=/home/ray/Documents/af9015-57423d241699/v4l modules
make[2]: Entering directory `/usr/src/linux-2.6.27.7-9-obj/i386/pae'
make -C ../../../linux-2.6.27.7-9 O=/usr/src/linux-2.6.27.7-9-obj/i386/pae/. modules
Building modules, stage 2.
MODPOST 290 modules
make[2]: Leaving directory `/usr/src/linux-2.6.27.7-9-obj/i386/pae'
./scripts/rmmod.pl check
found 290 modules
make[1]: Leaving directory `/home/ray/Documents/af9015-57423d241699/v4l'
$ su
# make install

然後重新開機
插上數位電視棒之後,用 dmesg 察看訊息
# dmesg
.....
usb 3-3: new high speed USB device using ehci_hcd and address 2
usb 3-3: configuration #1 chosen from 1 choice
usb 3-3: New USB device found, idVendor=1b80, idProduct=e39b
usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 3-3: Product: DVB-T 2
usb 3-3: Manufacturer: Afatech
dvb-usb: found a 'KWorld USB DVB-T TV Stick II (VS-DVB-T 395U)' in cold state, willtry to load a firmware
firmware: requesting dvb-usb-af9015.fw
dvb-usb: did not find the firmware file. (dvb-usb-af9015.fw) Please see linux/Documentation/dvb/ for more details on firmware-problems. (-2)
dvb_usb_af9015: probe of 3-3:1.0 failed with error -2
usbcore: registered new interface driver dvb_usb_af9015
.....

發現沒有 firmware 韌體,
請搜索 dvb-usb-af9015.fw
找到後放在 /lib/firmware/
再重新插入 usb
# dmesg
.....
usb 3-3: USB disconnect, address 2
usb 3-3: new high speed USB device using ehci_hcd and address 3
usb 3-3: configuration #1 chosen from 1 choice
dvb-usb: found a 'KWorld USB DVB-T TV Stick II (VS-DVB-T 395U)' in cold state, willtry to load a firmware
firmware: requesting dvb-usb-af9015.fw
dvb-usb: downloading firmware from file 'dvb-usb-af9015.fw'
dvb-usb: found a 'KWorld USB DVB-T TV Stick II (VS-DVB-T 395U)' in warm state.
dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
DVB: registering new adapter (KWorld USB DVB-T TV Stick II (VS-DVB-T 395U))
af9013: firmware version:4.95.0
DVB: registering adapter 0 frontend 0 (Afatech AF9013 DVB-T)...
Quantek QT1010 successfully identified.
dvb-usb: KWorld USB DVB-T TV Stick II (VS-DVB-T 395U) successfully initialized and connected.
usb 3-3: New USB device found, idVendor=1b80, idProduct=e39b
usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 3-3: Product: DVB-T 2
usb 3-3: Manufacturer: Afatech

正確找到了
您可以用 kaffeine 來觀賞數位電視
前題是你家收得到訊號
我家和辦公室(說明:我下班後才試的)都收不到(可能因為在建築物中)
馬路上倒是可以收到
但是接收到的電視台名稱都是亂碼
不知道要如何改
也可以錄影
錄下來是 m2t 的檔案,我用 smplayer 來播放
寄件者 openSUSE 11.1

2009年1月4日 星期日

nvidia, KDE4 and openSUSE 11.1

使用 nvidia 顯示卡和 kde 4 會有些效能上的問題
您可以參考 http://userbase.kde.org/GPU-Performance
目前(尤其是) NVIDIA 顯示卡驅動程式和 kwin (KDE4 的視窗管理員)
以及 plasma ( KDE4 的桌面 shell) 都不太能配合
通常您可以使用 compiz 做視窗管理員來避免使用 kwin
plasma 的部份您就逃不掉了
(在此順便一提,請使用 X11:/XGL 的套件庫,升級 compiz, emerald 等到最新套件
就不會有 emerald 視窗裝飾消失的情況發生,
勿使用 X11:/Compiz 套件庫)
上面的連結中提供了一些增進圖形效能的臨時辦法
除了升級到 beta 版的驅動程式外,其他建議似乎效果不顯著
如果您像我一樣有個桌面上的桌面資料夾
寄件者 openSUSE 11.1

請試試看從這桌面資料夾來啟動程式
顯示忙碌的游標跳動大概要等1秒才出現
在這桌料夾拖曳圖示看看,完全會慢半拍
我會關掉這個資料夾,然後在桌面上按右鍵
選擇"桌面設定",將"桌面活化"類型改為"資料夾檢視"
寄件者 openSUSE 11.1

就會變成以前的樣子
寄件者 openSUSE 11.1

(但效能改進有限)
(若要改回原來的樣子,在桌面活化類型選"桌面Desktop without toolbox",確定。
在桌面上按右鍵"新增元件",將"資料夾檢視"拖曳到桌面,
設定該資料夾(扳手圖示)位置為桌面)

根據 http://userbase.kde.org/GPU-Performance 文章的提示
nvidia 不斷的在改進這方面的問題,因此
雖然一般都不建議使用 beta 版本,
我還是決定來試試看...

下載 nvidia 驅動程式
穩定版 for Unix: http://www.nvidia.com.tw/object/unix_tw.html
32 位元的 Linux 作業系統請選 Linux IA32
64 位元的 Linux 作業系統請選 Linux AMD64/EM64T 版本
在 openSUSE 中單鍵安裝或
http://download.nvidia.com/opensuse/{Version} 套件庫安裝的就是這穩定的版本
請參考 http://en.opensuse.org/Nvidia 使用單鍵安裝或加入 NVIDIA 社群套件庫來安裝
(只要在社群套件庫中勾選 NVIDIA 套件庫,11.1 會在您使用 YaST 新增移除套件時,
自動幫您裝上 NVIDIA 的驅動程式)

Beta 版本的 nvidia 驅動程式可由 http://www.nvidia.com.tw/Download/Find.aspx?lang=tw 取得
我是直接由 ftp://download.nvidia.com/XFree86/Linux-x86/180.18/ 取得 180.18 的版本(這是 32 位元版本)
注意:使用 beta 版的驅動程式可能會付出系統不穩定的代價
pkg# 後面的號碼是代表預先編譯的環境(如果我們確定是要自行編譯,應該是沒差的,
您可以選擇檔案較小的)
安裝步驟參考 http://en.opensuse.org/Nvidia#The_hard_way (已經告訴您有點難了喔)
先安裝好 kernel-source gcc make 等套件
# zypper in kernel-source gcc make

看原本裝了哪些 nvidia 驅動程式(您使用的核心和驅動程式可能會不同)
沒錯的話將之刪除
# rpm -qa | grep nvidia
x11-video-nvidiaG02-177.82-1.1
nvidia-gfxG02-kmp-pae-177.82_2.6.27.7_9.1-1.1
# rpm -e `rpm -qa | grep nvidia`
WARNING: /lib/modules/2.6.27.7-9-pae/kernel/sound/i2c/other/snd-tea575x-tuner.ko needs unknown symbol video_exclusive_open
WARNING: /lib/modules/2.6.27.7-9-pae/kernel/sound/i2c/other/snd-tea575x-tuner.ko needs unknown symbol video_exclusive_release
22861 blocks
------------------------------------------------------------------------
Switching the use of "nvidia" driver of NVIDIA to "nv" driver of X.Org
------------------------------------------------------------------------

Patching /etc/X11/xorg.conf ... done

為了避免 NVIDIA 自動安裝,我們要停用 NVIDIA 套件庫
# zypper lr
# | 別名 | 名稱 | 已啟用 | 重新整理
---+-------------------------------+-------------------------------+-----------+---------
1 | Libdvdcss repository | Libdvdcss repository | 是 | 否
2 | Packman Repository | Packman Repository | 是 | 否
3 | X11:XGL | X11:XGL | 是 | 否
4 | openSUSE 11.1-0 | openSUSE 11.1-0 | 否 | 否
5 | repo | NVIDIA Repository | 是 | 否
6 | repo-debug | openSUSE-11.1-Debug | 否 | 否
7 | repo-non-oss | openSUSE-11.1-Non-Oss | 是 | 否
8 | repo-oss | openSUSE-11.1-Oss | 是 | 否
9 | repo-source | openSUSE-11.1-Source | 否 | 否
10 | repo-update | openSUSE-11.1-Update | 是 | 是
11 | swyear | swyear | 是 | 否

Nvidia 套件庫在第5個
# zypper mr -d 5
套件庫 'repo' 已成功停用。

接下來我們要關閉 X,在文字模式下安裝
按 Ctrl-Alt+F1(F1~F6均可)
用 root 登入
# cd {您的NVIDIA-Linux-*.run所在位置}
# init 3 (跑完後按個 Enter才會出現提示符號#)
# sh NVIDIA-Linux-*.run (可用 Tab 自動補滿)

接下來會請您接受授權合約(請用左右鍵將光棒移到 Accept 按 Enter)
No precompiled kernel interface was found to match your kernel; would you like the
installer to attempt to download a kernel interface for your kernel from the NVIDIA ftp site
(ftp://download.nvidia.com)?

因為沒有預先編譯好的核心介面,問您要不要下載?(通常是下載不到的...)回答:Yes 試試看吧
No matching precompiled kernel interface was found in the NVIDIA ftp site; this means
that the installer will need to compile a kernel interface for your kernel.

我就說吧...請回答 OK,讓安裝程式自行編譯核心介面
然後安裝程式會開始編譯核心模組,檢查衝突的檔案,安裝核心模組
Would you like to run the nvidia-xconfig utility to automatically update your configuration
file so that the NVIDIA X driver will be used when you restart X? Any pre-existing X configuration
file will be backed up.

問您要不要自動更新您的 X 設定檔,當然要囉
Your X configuration file has been successfully updated. Installation of NVIDIA Acceleration
Graphics Driver for Linux-x86 (version: 180.18) is now complete.

完成了
openSUSE 使用者要記得下面的命令
# sax2 -r -m 0=nvidia

指定使用 nvidia 驅動程式並調整螢幕大小及解析度
別忘了測試
完成之後
# init 5

會閃現 NVIDIA Beta driver 的 logo,再次進入 X。

根據上面桌面資料夾中啟動程式與拖曳圖示看來,情況真的有改善
魔獸世界也照常玩,但是休眠到記憶體(s2ram)失效了
可以睡著,但是醒不來,會變成重開機(然後修復硬碟...)
您可以換回原本的驅動程式,或者 s2ram 您可以不用的話...
在系統設定->進階->電源管理->編輯設定檔
將出現"暫停並儲存到記憶體"的地方都改掉,例如改成"鎖定螢幕"
寄件者 openSUSE 11.1

尤其筆記型電腦預設蓋子蓋上就會休眠到記憶體
順便一提,剛裝好時螢幕亮度不對,也是在這裡調整。

若要換回原本 NVIDIA 套件庫中的驅動程式:
Ctrl-Alt+F1
以 root 登入
# init 3
# nvidia-installer --uninstall

若您下載的 NVIDIA-Linux-*.run 還在,您也可以
# cd {NVIDIA-Linux-*.run 所在目錄}
# sh NVIDIA-Linux-*.run --uninstall

完成後,重新啟用 NVIDIA 套件庫,安裝驅動程式
# zypper mr -e 5
# yast sw_single

第二個指令會直接呼叫文字介面的 YaST 的軟體管理
11.1 中您只要按 Tab 到 Accept 按 Enter 就可以了
他就會將原有的驅動程式裝上了,最後
# init 5
# shutdown -r now

重新啟動電腦

我決定用 beta 一陣子,這樣我在 YaST 的軟體管理中點選套件時
不至於慢半拍,有不能忍受的缺點時再換回來吧

2009/01/05 更新:
http://techbase.kde.org/User:Lemma/KDE4-NVIDIA 有很多成功的案例
也包含 openSUSE
先測試
$ nvidia-settings -a InitialPixmapPlacement=2 -a GlyphCache=1

大部份 N 卡 8,9 系列的(運氣好的話),都有機會在效能上得到很大的提升
我就是運氣好的那個:)
konsole 的殘像,桌面資料夾的遲緩,YaST 軟體管理的問題都有很大的改善
正如其他人所說的
所感受到的改善是 huge (我現在的感覺也是如此)
您也可以試試看
將下面這個檔案 fix-nv.sh 放在 ~/.kde4/Autostart/
#!/bin/bash
nvidia-settings -a InitialPixmapPlacement=2 -a GlyphCache=1 &

記得賦與此檔案執行權限
$ chmod +x fix-nv.sh

我又回到正式版的 nvidia 驅動程式了