Raspberry Pi 使用 USB 電視棒收看數位電視頻道

這裡介紹如何在 Raspberry Pi 上面使用電視棒,直接收看免費的數位電視頻道。

Raspberry Pi 使用電視棒收看數位電視頻道

目前市面上有許多千元以內的 USB 數位電視棒,只要接上天線再插上電腦,就可以直接使用電腦收看免費的數位電視節目,例如常見的民視、中視、台視與華視都可以直接收看。

而我們也可以在樹莓派(Raspberry Pi)上面插上一隻 USB 數位電視棒,直接在樹莓派上面看電視,就好像數位電視機上盒一樣,以下是我拿 ASUS My Cinema U3000 Mini DVBT Tuner 這隻數位電視棒來測試的過程。

由於我也是第一次嘗試在 Linux 下使用數位電視棒,我也沒有把握一定可以成功,所以我在拍賣網站選購電視棒的時候,是挑價格比較低的二手品(若是失敗的話損失比較小),另外再參考一下 DVB-T USB Devices,找一隻比較確定沒有問題的型號,最後找到一隻二手的 ASUS My Cinema U3000 Mini DVBT Tuner,在 Linux 下可以使用,而且含運費只要兩百多塊。

ASUS My Cinema U3000 Mini DVBT Tuner 數位電視棒

這是電視棒的背面。

ASUS My Cinema U3000 Mini DVBT Tuner 數位電視棒

這是接天線的插座。

ASUS My Cinema U3000 Mini DVBT Tuner 數位電視棒

蓋子打開後,是 USB 的插頭。

ASUS My Cinema U3000 Mini DVBT Tuner 數位電視棒

這隻 USB 電視棒有附贈天線,不過通常這樣的天線收訊都不太理想。

數位電視棒附贈的天線

接下來我們要先下載電視棒的韌體,安裝至 /lib/firmware/ 中:
cd /lib/firmware/
sudo wget http://linuxtv.org/downloads/firmware/dvb-usb-dib0700-1.20.fw

安裝好韌體之後,就可以把它插上樹莓派了,這裏我是使用 Raspberry Pi B+。

將數位電視棒插上 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
本站已經搬家了,欲查看最新的文章,請至 G. T. Wang 新網站