這裡介紹如何在 Raspberry Pi 上面使用電視棒,直接收看免費的數位電視頻道。
目前市面上有許多千元以內的 USB 數位電視棒,只要接上天線再插上電腦,就可以直接使用電腦收看免費的數位電視節目,例如常見的民視、中視、台視與華視都可以直接收看。
由於我也是第一次嘗試在 Linux 下使用數位電視棒,我也沒有把握一定可以成功,所以我在拍賣網站選購電視棒的時候,是挑價格比較低的二手品(若是失敗的話損失比較小),另外再參考一下 DVB-T USB Devices,找一隻比較確定沒有問題的型號,最後找到一隻二手的 ASUS My Cinema U3000 Mini DVBT Tuner,在 Linux 下可以使用,而且含運費只要兩百多塊。
這是電視棒的背面。
這是接天線的插座。
蓋子打開後,是 USB 的插頭。
這隻 USB 電視棒有附贈天線,不過通常這樣的天線收訊都不太理想。
接下來我們要先下載電視棒的韌體,安裝至 /lib/firmware/
中:
cd /lib/firmware/ sudo wget http://linuxtv.org/downloads/firmware/dvb-usb-dib0700-1.20.fw
安裝好韌體之後,就可以把它插上樹莓派了,這裏我是使用 Raspberry Pi B+。
這時候我們可以執行一下 dmesg
確認一下系統是否有抓到這隻電視棒
dmesg
正常來說應該會有下面這樣的訊息:
[ 71.051920] usb 1-1.4: new high-speed USB device number 6 using dwc_otg
[ 71.153060] usb 1-1.4: New USB device found, idVendor=0b05, idProduct=171f
[ 71.153095] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 71.153110] usb 1-1.4: Product: STK7700
[ 71.153124] usb 1-1.4: Manufacturer: DIBCOM
[ 71.153138] usb 1-1.4: SerialNumber: 7414000129
[ 71.313659] dvb-usb: found a ‘ASUS My Cinema U3000 Mini DVBT Tuner’ in cold state, will try to load a firmware
[ 71.318286] dvb-usb: downloading firmware from file ‘dvb-usb-dib0700-1.20.fw’
[ 71.457741] dib0700: firmware started successfully.
[ 71.961986] dvb-usb: found a ‘ASUS My Cinema U3000 Mini DVBT Tuner’ in warm state.
[ 71.964876] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[ 71.965191] DVB: registering new adapter (ASUS My Cinema U3000 Mini DVBT Tuner)
[ 72.212227] usb 1-1.4: DVB: registering adapter 0 frontend 0 (DiBcom 7000PC)…
[ 72.244344] MT2266: successfully identified
[ 72.451863] Registered IR keymap rc-dib0700-rc5
[ 72.456634] input: IR-receiver inside an USB DVB receiver as /devices/platform/bcm2708_usb/usb1/1-1/1-1.4/rc/rc0/input3
[ 72.457415] rc0: IR-receiver inside an USB DVB receiver as /devices/platform/bcm2708_usb/usb1/1-1/1-1.4/rc/rc0
[ 72.463154] dvb-usb: schedule remote query interval to 50 msecs.
[ 72.463194] dvb-usb: ASUS My Cinema U3000 Mini DVBT Tuner successfully initialized and connected.
[ 72.463718] usbcore: registered new interface driver dvb_usb_dib0700
另一個檢查方式是直接使用 lsusb 來看:
lsusb
正常來說應該會看到我們剛剛插上去的 USB 電視棒:
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 005: ID 1c4f:0002 SiGma Micro Keyboard TRACER Gamma Ivory
Bus 001 Device 006: ID 0b05:171f ASUSTek Computer, Inc. My Cinema U3000 Mini [DiBcom DiB7700P]
Bus 001 Device 004: ID 046d:c018 Logitech, Inc. Optical Wheel Mouse
安裝好硬體與韌體之後,要安裝一下 DVB 的工具套件:
sudo apt-get install dvb-apps
使用 scan
掃描頻道:
scan /usr/share/dvb/dvb-t/tw-Taipei > channels.conf
或是
scan /usr/share/dvb/dvb-t/tw-Kaohsiung > channels.conf
掃描時所使用的初始掃描檔會因為每個地區不同,大家要依照自己所屬的區域來選擇。另外我發現在 Ubuntu Linux 中系統只有提供一個 tw-All 的初始掃描檔,內容如下:
T 533000000 6MHz 2/3 NONE QAM16 8k 1/4 NONE
T 539000000 6MHz 2/3 NONE QAM16 8k 1/4 NONE
T 545000000 6MHz 2/3 NONE QAM16 8k 1/4 NONE
T 551000000 6MHz 2/3 NONE QAM16 8k 1/4 NONE
T 557000000 6MHz 2/3 NONE QAM16 8k 1/4 NONE
T 563000000 6MHz 2/3 NONE QAM16 8k 1/4 NONE
T 569000000 6MHz 2/3 NONE QAM64 8k 1/4 NONE
T 575000000 6MHz 2/3 NONE QAM16 8k 1/4 NONE
T 581000000 6MHz 2/3 NONE QAM16 8k 1/4 NONE
T 587000000 6MHz 2/3 NONE QAM16 8k 1/4 NONE
T 593000000 6MHz 2/3 NONE QAM16 8k 1/4 NONE
我目前也不確定哪一個比較好。
掃描出來的頻道列表會類似這樣:
中視數位台:533000000:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:1001:1002:100
中視新聞台:533000000:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:1011:1012:101
中視綜藝台:533000000:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:1021:1022:102
中視HD台:533000000:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:1031:1032:103
公共電視 PTS:545000000:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:2011:2012:201
公視2台 PTS2:545000000:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:2021:2022:202
客家電視 HTV:545000000:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:2031:2032:203
民視綜合台:557000000:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:3001:3002:300
民視交通台:557000000:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:3011:3012:301
民視新聞台:557000000:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:3021:3022:302
民視資料廣播:557000000:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:0:303
民視HD台:557000000:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:3041:3042:304
公視 HD:569000000:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:2001:2002:200
台灣電視台:581000000:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:4001:4002:400
台視財經台:581000000:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:4011:4012:401
台視綜合台:581000000:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:4021:4022:402
台視 HD台:581000000:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:4031:4032:403
華視CTS:593000000:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:5011:5012:501
華視教育台:593000000:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:5021:5022:502
華視新聞資訊台:593000000:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:5031:5032:503
華視HD:593000000:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:5041:5042:504
這個檔案內容的格式是以冒號分格的表格,第一個欄位是頻道的名稱。
使用 tzap
依據頻道名稱選擇要收看的頻道:
tzap -r -c channels.conf "CHANNEL NAME"
使用 mplayer
播放節目:
mplayer /dev/dvb/adapter0/dvr0
正常來說這樣就可以收看了,不過我發現樹莓派的處理速度不夠快,這樣播的話會跑不動,後來我將解析度降低才能順利播放:
mplayer /dev/dvb/adapter0/dvr0 -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all
這是在樹莓派上面播放公視節目的畫面:
由於我是第一次嘗試在 Linux 中使用電視棒,目前遇到許多問題,首先因為天線是使用附贈的天線,收訊不良,只能收到少數幾個頻道,我目前正在想辦法改善天線的收訊品質,另外 Raspberry Pi 的處理速度有點慢,就算 CPU 超頻到 1GHz,還是沒辦法讓 MPlayer 以正常的解析度播放,只能用比較低的解析度來播放,不過看新聞是堪用了。
如果您對於樹莓派的應用有興趣,建議您可以繼續閱讀物聯網的相關文章。
參考資料:Linux TV