跳轉至內容

MythTV/安裝

來自 華夏公益教科書
MythTV
簡介 | 入門 | 安裝 | 附加 | 疑難解答 | 結論


安裝 MythTV 最簡單的方法是按照教程操作。以下教程面向 Mandrake 10.1 正式版(下載),但大多數步驟對其他 Linux 發行版都類似。一些檔案的路徑可能略有不同,並且您將需要使用不同的工具來安裝更新,而不是使用 urpmi,具體取決於您的發行版。因此,您應該首先確定您的 Linux 發行版使用的打包工具,並在遇到涉及 urpmi 的命令時,使用該工具代替。其他命令列工具中使用的工具示例包括 apt-get 和 emerge(用於 Gentoo)。還有一些圖形工具,例如 grpmi(urpmi 的圖形版本)、rpmdrake(用於 Mandrake)、Synaptic 等。

如果您使用的是其他發行版並且需要找到特定檔案,您始終可以使用 find 命令。例如

# find / -name "file*"

將找到以 "file" 開頭的所有內容。(注意,從根級別 "/" 開始搜尋會花費很長時間,因此您應該儘可能限制搜尋範圍。)這可以很好地確定檔案在您的發行版中放置的位置。您也可以使用

$ which command_name

找出給定命令或指令碼的位置。("whereis" 命令也很有用。)如果該命令在任何定義的路徑中都不存在,它將通知您(以便您可以安裝所需的軟體或適當地將其新增到路徑中)。這在教程要求您執行看似不存在的命令時很有用。此外,在執行任何命令之前,您可能應該執行

$ man command_name

以獲取有關命令功能和使用方法的資訊。很多時候,您問題的答案隱藏在手冊頁中。

示例安裝:Mandrake 10.1 上的 MythTV 0.17,帶有 Hauppauge PVR-350

[編輯 | 編輯原始碼]

下載並安裝 Mandrake

[編輯 | 編輯原始碼]

您可以從 官方下載頁面 或眾多映象中下載最新的 Mandrake ISO 映象。然後將這些 ISO 映象刻錄到 CD 中,並透過從 CD 啟動來執行安裝。當然,還有許多其他方法可以安裝 Linux。您安裝的內容自然取決於您的需求。您應該安裝所有多媒體選項和開發工具(以便您以後能夠編譯內容)。安裝網路客戶端功能可能是一個好主意,如果您想遠端訪問您的 MythTV,您應該安裝一些伺服器包(特別是 Web 伺服器和 SSH 伺服器)。讓您的 MythTV 執行 SSH 伺服器非常方便,如果您有另一臺計算機可用,因為這樣您就可以將您的 MythTV 連線到您的電視,但可以透過另一臺計算機的命令列進行配置(這樣做很好,因為您的 MythTV 連線到電視時,解析度不太好,用它作為計算機很煩人)。您需要安裝某種視窗管理器。如果您沒有其他偏好,KDE 是一個不錯的選擇。

在分割槽磁碟方面,將您的 Linux 作業系統放在一個分割槽上,並將另一個分割槽保留用於儲存您的 MythTV 資料是一個好主意。這樣,您就可以重新安裝 Linux 而不會刪除您的影片。Linux 不需要太多空間(5 或 10 Gb 足夠)。請務必建立交換分割槽(512 Mb 非常典型,但如果您願意,可以使其更大)。當然,您的大部分空間(希望是 100 Gb 以上)用於 mythTV。您可以將此分割槽的掛載點設定為 "/data/" 或 "/home/mythtv/data/" 或 "/home/" 或您喜歡的任何其他位置。

在安裝過程中,您也可以建立一個名為 "mythtv" 的帳戶。安裝完成後,建立您將儲存 MythTV 資料的目錄(確保它位於您的大型分割槽中!)。因此,例如,如果您想建立 /data,則可以鍵入 "su" 成為 root 使用者,並

# cd /
# mkdir /data
# chown mythtv:mythtv /data
# mkdir /data/mythtv

您還需要安裝核心原始碼(用於以後編譯驅動程式)。要在 Mandrake 上安裝軟體,我們使用一個名為 "urpmi" 的便捷工具,該工具可以自動下載、安裝和配置。通常,您只需鍵入

# urpmi kernel-source

您的原始碼就會安裝。但是,這並不總是會安裝正確的核心原始碼。您必須確保您的核心原始碼版本與您使用的核心版本匹配。要確定當前核心版本,請鍵入

$ uname -r
2.6.8.1-12mdk

在此示例中,執行的是 2.6 核心。要安裝正確的 2.6 原始碼

# urpmi kernel-source-2.6-2.6.8.1-12mdk

當然,請根據您要查詢的原始碼修改此命令。您也可以使用 "urpmq" 查詢您的 urpmi 原始碼,並找出哪些不同的核心原始碼可用,以及它們被稱為什麼包名(注意:像 "kernel-source-2.6" 這樣的包可能不是您擁有的確切核心版本,因此請查詢完全匹配的包)。如果您找不到正確的原始碼,您可以嘗試配置一些 urpmi 原始碼(請參考下一節),然後再次使用 "urpmq" 查詢與您的核心匹配的原始碼。

安裝核心原始碼後,最好再次檢查它是否正確

$ cd /usr/src
$ ls -lF
lrwxrwxrwx   1 root root   19 May 28 20:50 linux -> linux-2.6.8.1-12mdk/
drwxr-xr-x  21 root root 4096 May 28 20:50 linux-2.6.8.1-12mdk/
drwxr-xr-x   3 root root 4096 May 21 13:09 RPM/

因此,請確保 "linux-*" 目錄與 uname 返回的內容匹配。如果不是,您應該解除安裝當前核心原始碼(透過鍵入類似 "# urpme kernel-source" 的內容),然後安裝正確的原始碼。此外,請確保您具有上述符號連結。如果您沒有,請建立它

# ln -s /usr/src/linux-2.6.8.1-12mdk /usr/src/linux

另一個經常丟失的符號連結,如果您沒有,應該建立它。檢視

$ cd /lib/modules/2.6.8.1-12mdk
$ ls -lF
lrwxrwxrwx   1 root root     15 May 28 20:07 build -> /usr/src/linux/
...

如果它丟失,請建立它

# ln -s /usr/src/linux /lib/modules/2.6.8.1-12mdk/build

獲取 urpmi 原始碼

[編輯 | 編輯原始碼]

Mandrake 使用 urpmi 來下載和安裝各種軟體。從 CD 安裝 Mandrake 後,您可能在 urpmi 中列出了三個 CD 作為原始碼。當您告訴 urpmi 安裝某些內容時,它會檢查所有原始碼,找到您想要的包並安裝它。出於我們的目的,最好將一些 Mandrake 包的線上儲存庫新增到 urpmi。這樣,所有依賴項都會根據需要自動下載和安裝。為了始終獲取最新的包,我們可以刪除當前原始碼(即安裝 CD)

# urpmi.removemedia -a

現在我們需要找到一些可靠、可信和快速的線上包源。有一個很棒的線上工具名為 Easy Urpmi。您可以選擇您的發行版,選擇一個可靠的本地包源,它會打印出您必須輸入以正確新增指定原始碼的命令。再簡單不過了!Easy Urpmi 擁有眾多映象

請務必選擇正確的 Mandrake 版本和架構。如果您不確定使用的是什麼,請嘗試執行以下操作

$ cat /etc/mandrake-release
Mandrakelinux release 10.1 (Official) for i586

Easy Urpmi 輸出的示例,您隨後在控制檯中以 root 使用者身份鍵入

# urpmi.addmedia main ftp://ftp.rutgers.edu/pub/Mandrakelinux/official/10.1/i586/media/main with media_info/hdlist.cz
# urpmi.addmedia contrib ftp://ftp.rutgers.edu/pub/Mandrakelinux/official/10.1/i586/media/contrib with media_info/hdlist.cz
# urpmi.addmedia jpackage ftp://ftp.rutgers.edu/pub/Mandrakelinux/official/10.1/i586/media/jpackage with media_info/hdlist.cz
# urpmi.addmedia plf-free ftp://ftp.free.fr/pub/Distributions_Linux/plf/mandrake/free/10.1 with hdlist.cz
# urpmi.addmedia plf-nonfree ftp://ftp.free.fr/pub/Distributions_Linux/plf/mandrake/non-free/10.1 with hdlist.cz
# urpmi.addmedia --update updates ftp://ftp.rutgers.edu/pub/Mandrakelinux/official/updates/10.1/main_updates/ with media_info/hdlist.cz

下載所有包資訊需要一段時間(取決於您的網際網路連線速度)。最後,我們必須新增 Mandrake MythTV RPM 的原始碼。幸運的是,Thac 的 RPM 包含我們所需的內容

# urpmi.addmedia thacs.rpms http://rpm.nyvalls.se/10.1/RPMS with hdlist.cz

下載 MythTV

[編輯 | 編輯原始碼]

定義好原始碼後,一個命令就可以下載、安裝和配置 MythTV,包括所有缺少的依賴項(MySQL、QT 等)

# urpmi mythtv-suite

安裝程式將提示您選擇哪個包。您可能會注意到三個選項,一個名稱中帶有 "nvidia",一個帶有 "via",還有一個是通用的。如果您有特定的 nvidia 或 via 硬體,可以選擇相應的選項,但在大多數情況下,通用包應該可以正常工作。在顯示(長長的)要安裝的包列表時,說 "yes" 並等待它完成(可能需要 30 分鐘到幾個小時)。

安裝 ivtv

[編輯 | 編輯原始碼]

現在我們需要安裝 ivtv 驅動程式,這是一個開源驅動程式,用於使 Linux 與 Hauppauge WinTV PVR 捕獲卡相容。以下示例適用於 PVR-150、250、350 和 500。只要稍加改動,您就可以將這些說明應用於您自己的捕獲卡。首先,讓我們透過刪除大多數 Mandrake 安裝中提供的預設 ivtv 驅動程式來避免任何硬體衝突

# find /lib -name "*ivtv*"
/lib/modules/2.6.8.1-12mdk/kernel/3rdparty/ivtv
/lib/modules/2.6.8.1-12mdk/kernel/3rdparty/ivtv/ivtv-fb.ko.gz
/lib/modules/2.6.8.1-12mdk/kernel/3rdparty/ivtv/ivtv.ko.gz
# rm -rf /lib/modules/2.6.8.1-12mdk/kernel/3rdparty/ivtv

msp3400 模組也將被替換

# find /lib -name "msp3400*"
/lib/modules/2.6.8.1-12mdk/kernel/drivers/media/video/msp3400.ko.gz
# rm /lib/modules/2.6.8.1-12mdk/kernel/drivers/media/video/msp3400.ko.gz

如果你對所有這些感到緊張,你可以將涉及的檔案移動到其他地方以確保安全。只要確保你將它們放在模組目錄之外,這樣它們就不會被載入(使用“mv”命令並將它們放在 /home/mythtv/tmp 中,例如)。現在下載 ivtv 的原始碼。訪問 ivtv 專案頁面 並選擇下載。然後,你將可以選擇 下載 不同的版本。截至撰寫本文時,0.2 驅動程式是穩定的,而 0.3 是測試版且不穩定。一個安全的做法是選擇最新的 0.2 版本(截至撰寫本文時為 ivtv-0.2.0-rc3j)。如果你在驅動程式方面遇到問題,你可以嘗試不同的版本(甚至可以嘗試 0.1.9 或 0.3 驅動程式)。

$ cd /home/mythtv
$ lynx http://www.ivtv.tv/releases/ivtv-0.2/ivtv-0.2.0-rc3j.tgz
$ tar -zxvf ivtv-0.2.0-rc3a.tgz
$ cd ivtv-0.2.0-rc3j/driver
$ make
# make install

最後兩個命令將編譯驅動程式並將所有必需的檔案放在正確的位置。許多使用者在 make 操作期間遇到錯誤。如果你遇到許可權錯誤,請嘗試切換到 root 並再次執行 make。有時,透過嘗試不同的驅動程式版本可以解決問題。通常,問題僅僅是你的核心原始碼版本與你正在執行的核心不匹配(請參閱本文件中的其他地方)。在極端情況下,你可能需要更改為不同的核心。嘗試在網際網路上(以及本文件中的其他地方)搜尋你看到的錯誤訊息。其他人可能已經找到了解決你問題的方法。

下一步是提取捕獲卡的韌體。這是我們與捕獲卡進行正確通訊所需的二進位制驅動程式資訊。要使下一步工作,必須安裝 g++,因此讓我們檢查一下

$ which g++
/usr/bin/g++

如果你的系統上沒有它,請使用 urpmi 安裝它

# urpmi gcc-g++

現在讓我們編譯韌體提取工具

$ pwd
/home/mythtv/ivtv-0.2.0-rc3j/driver
$ cd ../utils
$ make
# make install

到目前為止一切順利。現在我們需要獲取捕獲卡驅動程式二進位制檔案並提取我們需要的部分。根據你是否擁有新的或舊的 Hauppauge 卡,這些檔案將位於你隨卡附帶的安裝 CD-ROM 上的略微不同的位置。 ivtv wiki 提供了許多有用的資訊。對於舊卡,預計有一個名為“pvr48wdm_1.8.22035.exe”(或類似名稱)的檔案,但對於新卡,它將是“pvr_1.18.21.22301_inf.zip”或“hcwPVRP2.sys”。你也可以簡單地從 ivtv 韌體 頁面下載相應的檔案。例如

$ cd /home/mythtv
$ lynx ftp://ftp.shspvr.com/download/wintv-pvr_250-350/inf/pvr_1.18.21.22301_inf.zip

然後提取韌體

# cd /home/mythtv/ivtv-0.2.0-rc3j/utils
# ./ivtvfwextract.pl /home/mythtv/pvr_1.18.21.22301_inf.zip

這應該會在“/lib/modules”目錄中放置兩個新檔案,“ivtv-fw-dec.bin”和“ivtv-fw-enc.bin”。你可以去檢查一下

$ cd /lib/modules
$ ls -lF
drwxr-xr-x  4 root root   4096 May 29 12:14 2.6.8.1-12mdk/
drwxr-xr-x  3 root root   4096 May 28 21:14 2.6.8.1-12mdkcustom/
-rw-r--r--  1 root root 262144 May 28 20:09 ivtv-fw-dec.bin
-rw-r--r--  1 root root 262144 May 28 20:09 ivtv-fw-enc.bin

安裝程式還將我們新的模組放在“/lib/modules/2.6.8.1-12mdkcustom/extra”中,但我們的核心無法看到這些模組。相反,讓我們將它們放到正確的位置

# cp /lib/modules/2.6.8.1-12mdkcustom/extra/*.ko /lib/modules/2.6.8.1-12mdk/misc

現在讓我們重新載入模組列表。你也可以重新啟動,以確保所有內容都被載入

# /sbin/depmod -a
# /sbin/reboot

重新啟動後,我們可以嘗試載入新的 ivtv 模組並檢視它是否真的有效。一些模組必須按正確的順序載入

# /sbin/modprobe i2c-core
# /sbin/modprobe i2c-algo-bit
# /sbin/modprobe tuner type=2
# /sbin/modprobe msp3400
# /sbin/modprobe videodev
# /sbin/modprobe saa7115
# /sbin/modprobe ivtv

請注意,“tuner type=2”會因你的捕獲卡的調諧器型別而異。你可以在 ivtv 驅動程式目錄中的“tuner.h”檔案中找到調諧器型別的列表

$ cd /home/mythtv/ivtv-0.2.0-rc3j/driver
$ emacs tuner.h

(注意:要退出 emacs,請使用“Ctrl-x Ctrl-c”。)對於北美使用者,"tuner type=2"(Philips NTSC)可能有效。如果模組載入正確,我們可以進行快速測試。將影片輸入連線到你的卡,並鍵入

# /bin/cat /dev/video > test.mpg

讓它執行一段時間(也許 10 秒),然後按 Ctrl-C 停止它。這應該會捕獲一段影片並將其儲存到“test.mpg”檔案中。嘗試播放該檔案

# /usr/bin/mplayer test.mpg

如果一切正常,你應該會看到一些影片。如果你看到雪花甚至黑色,實際上這是一個好兆頭。這意味著驅動程式可能正在工作,但你需要玩弄設定才能讓它在正確的頻道上捕獲。如果你反而收到錯誤訊息並且沒有捕獲到影片,那麼你應該開始尋找解決方案。也許你的調諧器型別錯了。也許你忘記刪除衝突的 ivtv 模組。也許不同的驅動程式版本會有用。玩弄一下,尋找答案。

如果一切正常,那麼你可以建立一個指令碼來載入這些模組。讓我們將其命名為“/usr/local/bin/start-ivtv”。開啟一個文字編輯器(emacs、vi、kwrite 等)並將此內容放到其中

 #!/bin/bash
 # a script to load modules for MythTV
 /sbin/modprobe i2c-core
 /sbin/modprobe i2c-algo-bit
 /sbin/modprobe tuner type=2
 /sbin/modprobe msp3400
 /sbin/modprobe videodev
 /sbin/modprobe saa7115
 /sbin/modprobe ivtv

儲存並退出(在 emacs 中,“Ctrl-x Ctrl-s”可以做到這一點,在 vi 中使用“ESC,:x”。記住使指令碼可執行

# chmod u+x /usr/local/bin/start-ivtv

現在,如果你鍵入“start-ivtv”(以 root 身份),所有內容都將被載入。稍後,你可以修改此指令碼,以便在計算機啟動時自動啟動 MythTV。

配置 MySQL

[edit | edit source]

首先將 MySQL 服務設定為在啟動時自動載入,並現在手動啟動它

# /sbin/chkconfig mysql on
# /etc/init.d/mysql start

現在更改資料庫許可權,以便 MySQL 可以執行它需要做的操作。請注意,你應該將“root_password”替換為你的 root 密碼。

# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('root_password') WHERE user='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

現在更新資料庫

$ mysql -u root -p < /usr/share/doc/mythtv-0.16/database/mc.sql

MySQL 應該已準備好使用。

配置 MythTV

[edit | edit source]

在配置 MythTV 之前,請使用提供 XMLTV 列表的服務設定一個帳戶。在北美,這意味著要設定與 zap2it DataDirect 的帳戶。現在我們可以使用圖形配置工具來設定 MythTV

$ mythtvsetup

該程式中的選項非常容易理解。根據你的硬體和偏好設定所有內容。

1. 常規
對於“本地主機 IP 地址”和“主伺服器 IP 地址”,你可以輸入你的 IP 地址,或者如果你在同一臺計算機上執行前端和後端,則保留預設設定。
對於“錄製”和“直播電視緩衝區”目錄,請輸入你選擇的目錄。例如,“/home/mythtv/data”或“/data/mythtv”或其他任何內容。
對於“電視格式”,請選擇“NTSC”(或你的本地設定)。
對於“VBI 格式”,你可能想要“NTSC 閉路字幕”。根據你的驅動程式,閉路字幕可能不受支援。
對於“頻道頻率表”,大多數北美使用者應該選擇“us-cable”。
2. 捕獲卡
建立一個新的捕獲卡,將“卡型別”設定為“MPEG-2 編碼器卡”,並將“預設輸入”設定為你正在使用的任何內容(調諧器、S 影片等)。
3. 影片源
建立一個新的影片源。
將“XMLTV 列表抓取器”設定為“北美(DataDirect)”。
輸入你的 zap2it 使用者 ID 和密碼。
選擇“檢索線路”。
檢查“DataDirect 線路”是否與你的 zap2it 訂閱一致。
4. 輸入連線
將“S-video0”(或你正在使用的任何內容)“影片源”設定為已定義影片源的名稱。

現在你可以用你的電影片道列表填充 MythTV 資料庫

$ mythfilldatabase

此操作將花費一些時間,因為 MythTV 會下載所有節目資料(接下來的幾周)。完成後,啟動 MythTV

# /etc/init.d/mythbackend start
$ mythfrontend

使用鍵盤移動並檢視一切是否正常。如果一切順利,那麼你可以更新你的“start-ivtv”指令碼,以包含“/etc/init.d/mythbackend start”

 #!/bin/bash
 # a script to start MythTV
 /sbin/modprobe i2c-core
 /sbin/modprobe i2c-algo-bit
 /sbin/modprobe tuner type=2
 /sbin/modprobe msp3400
 /sbin/modprobe videodev
 /sbin/modprobe saa7115
 /sbin/modprobe ivtv
 /etc/init.d/mythbackend start

如果一切正常,那麼你也可以設定你的“start-ivtv”指令碼,以便在啟動時自動啟動。為此,請編輯你的“/etc/rc.d/rc.local”檔案,透過將“/usr/local/bin/start-ivtv”新增到末尾

# echo "/usr/local/bin/start-ivtv" >> /etc/rc.d/rc.local

配置遙控器

[edit | edit source]

我們將使用 LIRC 來讀取來自 Hauppauge 遙控器的訊號。在搜尋問題的答案時,請參考 郵件列表存檔。首先,刪除 MythTV 可能已安裝的任何其他版本的 LIRC

# rpm -e --nodeps liblirc0
# rpm -e --nodeps liblirc0-devel

訪問 LIRC 頁面並下載最新版本,然後解壓縮它並啟動配置指令碼

$ cd /home/mythtv
$ lynx http://prdownloads.sourceforge.net/lirc/lirc-0.7.1.tar.gz
$ tar -zxvf lirc-0.7.1.tar.gz
$ cd lirc-0.7.1
$ ./setup.sh

該怎麼做很明顯。選擇專案 1,然後選擇專案 5 “電視卡”,然後選擇“Hauppauge 電視卡”。然後選擇“儲存配置並執行配置”。現在製作並安裝所有內容,並將其連結起來

$ make
# make install
# ln -s /usr/local/lib/liblirc_client.so.0 /usr/lib/liblirc_client.so.0

開啟“/etc/ld.so.conf”檔案並將“/usr/local/lib”新增到末尾。或者,只需鍵入

# echo "/usr/local/lib" >> /etc/ld.so.conf

然後執行 ldconfig(它會更新執行時連結庫)

# ldconfig

將配置從 MythTV 文件複製到你的 lircrc 目錄,並新增一個符號連結

$ cd /usr/share/doc/mythtv-0.17/configfiles
$ cp hauppauge-lircrc-nativelirc /home/mythtv/.mythtv/lircrc
$ ln -s /home/mythtv/.mythtv/lircrc /home/mythtv/.lircrc

複製相應的遙控器配置檔案

$ cd /home/mythtv/lirc-0.7.0/remotes/hauppauge
# cp ./lircd.conf.hauppauge /etc/lircd.conf

你現在可以更新你的“start-ivtv”指令碼以載入遙控器(lirc_i2c)模組

 #!/bin/bash
 # a script to start MythTV
 /sbin/modprobe i2c-core
 /sbin/modprobe i2c-algo-bit
 /sbin/modprobe tuner type=2
 /sbin/modprobe msp3400
 /sbin/modprobe videodev
 /sbin/modprobe saa7115
 /sbin/modprobe ivtv
 /sbin/modprobe lirc_i2c
 /usr/local/sbin/lircd -d /dev/lirc0 --permission=666
 /etc/init.d/mythbackend start

現在你應該重新啟動所有內容

# /etc/init.d/mythbackend stop
# /usr/local/bin/start-ivtv
$ mythtvfrontend

檢視遙控器是否有效。現在可能是重新啟動的好時機,看看一切是否啟動

# /sbin/reboot

啟動後,你應該能夠執行“mythfrontend”並使用你的 MythTV。你可以開啟“/home/mythtv/.lircrc”檔案並編輯它以正確對映你的遙控器(稍後會詳細介紹)。目前,如果你使用的是 Hauppauge 銀色遙控器,那麼你應該將“Rew”更改為“Rewind”,將“FFW”更改為“Forward”。

配置電視輸出

[edit | edit source]

電視輸出的配置取決於你的硬體。如果你使用帶有電視輸出的顯示卡,那麼你可能只需要在啟動時將電視連線到該輸出,顯示卡就會將所有內容(控制檯、GUI 和 MythTV)輸出到電視。這是一個簡單的解決方案。對於其他顯示卡,你可能需要編輯 X 伺服器配置檔案。在舊版本的 Linux 中,該檔案為 “/etc/X11/XFree86Config” (它可能位於許多類似的位置)。在現代的 Mandrake 發行版中,使用的檔案是 “/etc/X11/xorg.conf” (它可能只是指向另一個配置檔案的符號連結)。在進行任何操作之前,請備份你的舊 xorg.conf 檔案,然後你可以嘗試編輯它,看看是否有幫助。在修改 xorg.conf 檔案後,你可以使用 Ctrl+Alt+Backspace 退出並重啟 X 伺服器 (以及你的視窗管理器 KDE)。如果你的新設定生效,你可能會看到電視輸出。如果沒有,你可以使用 Ctrl+Alt+Backspace 返回控制檯,然後切換回你的舊 xorg.conf 檔案,或者嘗試其他方法。一些額外的幫助可以在這裡找到 這裡這裡.

特別是使用 Hauppauge 350 的電視輸出是一個好主意,因為 350 具有硬體 MPEG 解碼功能,這意味著它將承擔解碼影片流的工作,從而減輕處理器的負擔。要啟用它,在 MythTV 中有一個選項叫 "使用硬體 MPEG 解碼器",它將使用 350 輸出電視。雖然這會將錄製的回放輸出到 350 的電視輸出,但你的 MythTV 選單不會出現在同一個圖形輸出上。為了使一切順利執行,我們需要將整個 X 環境 (包括桌面和 MythTV 前端) 的輸出設定到 350 的電視輸出。以下是你需要做的:

首先,修改你的 “/usr/local/bin/start-ivtv” 指令碼,以便也載入 "ivtv-fb",方法是在其中新增一行 “/sbin/modprobe ivtv-fb”。

 #!/bin/bash
 # a script to start MythTV
 /sbin/modprobe i2c-core
 /sbin/modprobe i2c-algo-bit
 /sbin/modprobe tuner type=2
 /sbin/modprobe msp3400
 /sbin/modprobe videodev
 /sbin/modprobe saa7115
 /sbin/modprobe ivtv
 /sbin/modprobe ivtv-fb
 /sbin/modprobe lirc_i2c
 /usr/local/sbin/lircd -d /dev/lirc0 --permission=666
 /etc/init.d/mythbackend start

現在讓我們正確地配置 ivtv 驅動。本質上,X 需要一個驅動來使用 350 的電視輸出。你想要的是 "ivtvdev_drv.o" 驅動最終位於 “/usr/X11R6/lib/modules/drivers” 中。和往常一樣,有兩種選擇。你可以使用你擁有的 ivtv 原始碼構建合適的驅動。原始碼在這裡

$ find /home/mythtv -name "ivtvdev*"
/home/mythtv/ivtv-0.2.0-rc3j/utils/ivtvdev_drv_o
cd /home/mythtv/ivtv-0.2.0-rc3j/utils

安裝說明在 “/home/mythtv/ivtv-0.2.0-rc3j/utils/README.X11” 中。因此,本質上你應該能夠執行安裝程式,它會完成所有操作。第二種方法 (可能更容易) 是從 某個地方 下載二進位制版本,然後直接複製它。

$ cd /home/mythtv
$ lynx http://membres.lycos.fr/badzzzz/ivtvdev_drv.o.gz
$ tar -xvzf ivtvdev_drv.o.gz
$ cp ivtvdev_drv.o /usr/X11R6/lib/modules/drivers

現在我們需要確定你的顯示卡的 PCI 設定。有三種不同的方法可以獲取此資訊:

# /usr/X11R6/bin/Xorg -scanpci

# lspci

# scanpci

你將獲得有關裝置 PCI 地址的資訊。找到與你的目標電視輸出相對應的地址 (在我們的示例中是 Hauppauge 350 顯示卡)。該地址通常以 "匯流排"、"卡號"、"功能" 的順序給出。注意數字是十進位制還是十六進位制 (以 0x 開頭)。lspci 和 scanpci 工具以十六進位制顯示,而 Xorg 以十進位制顯示。請記住,xorg.conf 檔案期望數字為十進位制,雖然你可以透過在值前面加上 "0x" (或直接將其轉換為十進位制) 來明確表示十六進位制。

lspci 的輸出將類似於

 00:00.0 Host bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 03)
 00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)
 00:04.0 ISA bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 02)
 00:04.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01)
 00:04.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB (rev 01)
 00:04.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 02)
 00:09.0 Ethernet controller: Lite-On Communications Inc LNE100TX [Linksys EtherFast 10/100] (rev 25)
 00:0b.0 Multimedia video controller: Internext Compression Inc iTVC15 MPEG-2 Encoder (rev 01)
 00:0e.0 Multimedia audio controller: C-Media Electronics Inc CM8738 (rev 10)
 01:00.0 VGA compatible controller: STMicroelectronics STG4000 [3D Prophet Kyro Series] (rev 07)

"iTVC15 MPEG-2 編碼器" 是捕獲卡,我們將使用它進行電視輸出。因此,該卡的匯流排標識為

BusID "PCI:0:11:0"

(請記住,0x0b 在十進位制中是 11)。現在我們需要知道這對映到哪個 Linux 裝置。350 本質上是一種特殊型別的幀緩衝裝置。有很多方法可以做到這一點。讓我們檢查 “/var/log/messages” 看看 "ivtv-fb.o" 對映到哪個裝置

grep fb /var/log/messages
...
Jun  6 20:42:30 localhost kernel: ivtv-osd: fb1: iTVC15 TV out frame buffer device
...

你也可以使用 "fbset" 並逐個裝置檢視 ("fbset -fb /dev/fb0" 然後 "fbset -fb /dev/fb1" 等),看看哪個裝置對應於你的目標顯示卡。在我們的示例中,我們想要的輸出是 “/dev/fb1” (對於顯示卡電視輸出,它最終可能是 /dev/fb 或 /dev/video)。

現在我們需要重新配置 xorg.conf,並使用我們的新資訊 (即我們的卡是 /dev/fb1,BusID 為 "PCI:0:11:0",使用 ivtvdev_drv.o)。和往常一樣,請注意:**錯誤地配置你的影片設定可能會損壞你的顯示卡和/或顯示器。** 這些說明僅作為示例。請**自行承擔風險**使用它們,並確保仔細檢查它們是否適用於你的硬體。現在開始,讓我們新增一個顯示器

Section "Monitor"
    Identifier "NTSC Television on Hauppauge card"
    # D: 34.563 MHz, H: 37.244 kHz, V: 73.897 Hz
    HorizSync   30-68
    VertRefresh 50-120
    Mode "720x480"
         DotClock 34.564
         HTimings 720 752 840 928
         VTimings 480 484 488 504
         Flags "-Hsync" "-Vsync"
    EndMode
EndSection

這對於 NTSC 應該可以正常工作。對於 PAL,它將類似於

Section "Monitor"
    Identifier  "PAL Television"
    HorizSync  30-68
    VertRefresh 50-120
    Mode "720x576"
    # D: 41.475 MHz, H: 44.693 kHz, V: 74.488 Hz
         DotClock 41.476
         HTimings 720 752 840 928
         VTimings 576 580 584 600
         Flags    "-HSync" "-VSync"
    EndMode
EndSection

請注意,所有 xorg.conf 部分中的識別符號都是任意的。你可以將其設定為任何你喜歡的名稱。但是,一旦你決定了名稱,請記住要堅持使用它。在你檔案的其他地方,你必須準確地透過名稱引用這些部分。任何小的拼寫錯誤都會破壞你的配置。現在新增一個裝置

Section "Device"
    Identifier "Hauppauge WinTV PVR 350"
#    Driver "fbdev"
    Driver "ivtvdev"
#    Option "ivtv" "/dev/fb1"
    Option "fbdev" "/dev/fb1"
    BusID "PCI:0:11:0"
EndSection

同樣,識別符號是任意的,但請記住你選擇的名稱。上面我們使用的是 "ivtvdev" 驅動和 "fbdev" 選項。註釋掉的行是你可以嘗試使用的備用選項:它們可能更適合你的特定設定 (在這種情況下,請確保註釋掉另一行以避免衝突)。請記住根據你的裝置更新 “/dev/fb1”,並將 BusID 更改為你之前確定的值。這至關重要!現在我們定義一個螢幕 (對於 PAL,這將略有不同)

Section "Screen"
        Identifier "Hauppauge Screen"
        Device "Hauppauge WinTV PVR 350"
        Monitor "NTSC Television on Hauppauge card"
        DefaultDepth 24
        DefaultFbbpp 32
        Subsection "Display"
                   Depth 24
                   FbBpp 32
                   Modes "720x480"
        EndSubsection
EndSection

最後,我們將 ServerLayout 切換到使用我們的新輸出。只需更改這個部分,你就可以控制將要使用的輸入和輸出裝置 (如上所定義)。這將讓你輕鬆地切換不同的配置。如果你願意,可以定義多個 ServerLayout。對於你的新 ServerLayout,最好複製現有 ServerLayout,並根據需要進行修改。最終它將類似於

Section "ServerLayout"
    Identifier "TVLayout"
    Screen "Hauppauge Screen"
    InputDevice "Keyboard1" "CoreKeyboard"
    InputDevice "Mouse1" "CorePointer"
EndSection

儲存檔案,重啟 X (如果你在 GUI 中,可以使用 Ctrl+Alt+Backspace),希望它將開始輸出到你的目標電視輸出。請注意,對於某些顯示卡來說,除非在 X 啟動時有一個裝置連線到該輸出,否則這將無法正常工作。因此,請確保在嘗試切換到/啟動到你的新 X 設定之前,將電視連線並開啟。如果它不起作用,你可以返回到舊的設定,或者嘗試其他方法。

測試所有內容

[編輯 | 編輯原始碼]

現在一切應該都能正常工作了。在啟動時,驅動程式應該載入,"mythbackend" 應該已經啟動。如果你使用 "pgrep",你應該會獲得該程序的程序 ID 號 (PID)

$ pgrep mythbackend
5166

當你呼叫時,MythTV 應該會啟動

$ mythfrontend

一旦 MythTV 執行起來,你應該能夠選擇 "直播電視" 並觀看電視。使用鍵盤,你可以暫停 ('p' 鍵)、倒帶和快進 (箭頭鍵) 等等。你應該能夠進入節目指南並選擇一個特定節目,然後選擇 "錄製",然後等待它錄製該節目。有很多選項可以調整以符合你的偏好。你可能想要增加字型大小,甚至選擇一個完全不同的主題。如果 MythTV 的基本功能都能正常工作,你就可以開始使用它了,並且在接下來的時間裡,你可以繼續對其進行自定義,並使其他功能和外掛正常工作。

華夏公益教科書