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

1 則留言:

swyear 提到...

http://linuxtv.org/hg/~anttip/af9015/ 中的驅動程式已加入了 1b80:e39b 的 ID,預計進入 2.6.29 核心,感謝 Antti