跳轉到內容

MythTV/故障排除

來自 Wikibooks,開放世界中的開放書籍
MythTV
簡介 | 入門 | 安裝 | 附加功能 | 故障排除 | 結論

在 Mandrake 上安裝 MythTV RPM 遇到問題

[編輯 | 編輯原始碼]

您在嘗試“urpmi mythtv-suite”後可能會遇到錯誤。如果在 MythTV 軟體包安裝期間收到“簽名錯誤”之類的錯誤,請嘗試輸入“y”繼續,並檢視軟體包是否正常工作。如果您收到“安裝失敗”之類的錯誤,可能是因為您正在執行 Mandrake 10.1 社群版。要確定您的 Mandrake 版本

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

這顯然與不同軟體包中的衝突檔案有關。讓安裝嘗試完成,然後再次執行“urpmi mythtv-suite”並檢視會發生什麼。您可以檢視錯誤訊息以隔離哪些軟體包存在問題。嘗試分別安裝這些軟體包(urpmi package_name),然後再次安裝 MythTV(urpmi mythtv-suite)。您也可以嘗試強制安裝完成

# urpmi --allow-force mythtv-suite

但是,不能保證這能奏效。

ivtv 編譯期間出錯

[編輯 | 編輯原始碼]

ivtv 編譯失敗有很多原因。您可以嘗試不同版本的驅動程式。如果您收到缺少目錄的錯誤,則可能缺少符號連結。檢查它是否正確

$ 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/

如果符號連結丟失或指向錯誤的位置,請修復它

# 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

在許多情況下,make 錯誤是由於您的核心原始碼版本錯誤造成的。顯然,已安裝的版本必須與您正在使用的核心匹配。如果這是問題所在,在嘗試編譯 ivtv 時,您可能會看到類似以下的錯誤

make[2]: *** No rule to make target `modules'.  Stop.

或者,make 可能會正常工作,但是當嘗試載入模組時,您會得到

ivtv FATAL: Error inserting tuner (/lib/modules/2.6.8.1-12mdk/misc/tuner.ko): Invalid module format

所以首先檢查您的核心版本

$ uname -r
2.6.8.1-12mdk

看看您安裝了什麼

$ rpm -qa | grep kernel
kernel-source-2.6-2.6.8.1-12mdk
kernel-2.6.8.1.12mdk-1-1mdk

確保原始碼與您當前的核心版本匹配。如果不匹配,則應解除安裝舊的原始碼

# urpme kernel-source-2.4.27

顯然,用您的“不正確的原始碼”替換“2.4.27”!現在新增您真正想要的原始碼

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

同樣,修改語法以匹配您當前的核心。您可能需要使用 urpmq 查詢可用的 rpm,直到找到與之匹配的 rpm。(請參閱本文件的其他地方或參考Easy urpmi 網站)。不要簡單地使用“urpmi kernel-source”甚至“urpmi kernel-source-2.6”,因為這些不一定能為您提供您想要的精確原始碼。

再次檢查您的原始碼是否與您的核心版本匹配(否則任何內容都無法正確編譯!),現在 ivtv 應該可以編譯了。

如果 ivtv 仍然無法編譯,請嘗試其他版本或在各種ivtv 論壇郵件列表存檔上查詢錯誤訊息。

節目指南中的時間差了一個小時

[編輯 | 編輯原始碼]

這是 MythTV 中由 QT 引起的一個眾所周知的錯誤。它似乎只在一年中的半年內出現(由於夏令時)。在 MythTV 內部設定一個小時的偏移量無法解決此問題。如果這確實是您的問題,則將當前時區更改為您實際所在位置提前一個小時。然後再次執行“mythfilldatabase”(您可能還需要刪除 mythtvsetup 中的頻道列表並在填充資料庫後重新建立它)。將您的時區設定提前一個小時,MythTV 中的所有內容都應該看起來正常。

mplayer 無法輸出到我的 TV-out

[編輯 | 編輯原始碼]

如果 MythTV 可以正常輸出到電視,但 mplayer 卻不行(即:影片和 DVD 未傳送到 TV-out),則嘗試更改 mplayer 使用的驅動程式。在 MythTV 的 MythDVD 和 MythVideo 設定中,有一行允許您呼叫外部程式,可能如下所示

mplayer -fs -zoom -quiet -vo xv %s

您需要做的是找出要使用的驅動程式。“-vo xv”正在嘗試使用 xv 驅動程式,但還有許多其他驅動程式(xv、x11、fbdev、fbdev2 等)。可以透過鍵入“mplayer -vo help”獲取完整列表

       xv      X11/Xv
       x11     X11 ( XImage/Shm )
       xover   General X11 driver for overlay capable video output drivers
       xmga    Matrox G200/G4x0/G550 overlay in X11 window (using /dev/mga_vid)
       mga     Matrox G200/G4x0/G550 overlay (/dev/mga_vid)
       gl      X11 (OpenGL)
       gl2     X11 (OpenGL) - multiple textures version
       dga     DGA ( Direct Graphic Access V2.0 )
       sdl     SDL YUV/RGB/BGR renderer (SDL v1.1.7+ only!)
       ggi     General Graphics Interface (GGI) output
       fbdev   Framebuffer Device
       fbdev2  Framebuffer Device
       aa      AAlib
       caca    libcaca
       dxr3    DXR3/H+ video out
       zr      Zoran ZR360[56]7/ZR36060 Driver (DC10(+)/buz/lml33/MatroxRR)
       zr2     Zoran ZR360[56]7/ZR36060 Driver (DC10(+)/buz/lml33/MatroxRR)
       vesa    VESA VBE 2.0 video output
       xvidix  X11 (VIDIX)
       cvidix  console VIDIX
       null    Null video output
       mpegpes Mpeg-PES to DVB card
       yuv4mpeg        yuv4mpeg output for mjpegtools
       png     PNG file
       jpeg    JPEG file
       gif89a  animated GIF output
       tga     Targa output
       pnm     PPM/PGM/PGMYUV file
       md5sum  md5sum of each frame

對於 Hauppauge WinTV PVR-350,使用“-vo x11”似乎可以正常工作(儘管它是一個幀緩衝裝置,因此也許可以使 fbdev 工作)。嘗試不同的設定並檢視哪些適用於您的 TV-out。您始終可以執行“man mplayer”以獲取手冊頁的幫助。

使用 Hauppauge WinTV PVR-350 時沒有音量控制

[編輯 | 編輯原始碼]

如果您正在使用 Hauppauge 350 的 TV-out 執行 MythTV,您會很快發現音量和靜音功能不起作用。您可以聽到聲音,但無法修改它。在撰寫本文件時,ivtv 驅動程式不支援控制音量。這為您提供了兩種選擇。您可以使用不同的遙控器控制音量(例如,使用電視的遙控器)。您甚至可能能夠透過 LIRC 配置您的紅外發射器以正確控制您的電視。或者,您可以將採集卡的音訊輸出饋送到音效卡,然後將音效卡的輸出饋送到電視。這樣,音量控制(透過音效卡)就可以由作業系統控制。因此,當 MythTV 嘗試更改音量時,它確實會影響您聽到的內容。

使用 Hauppauge WinTV PVR-350 時 mplayer 沒有聲音

[編輯 | 編輯原始碼]

如果您按照上述說明使 mplayer 與採集卡上的 TV-out 一起工作,您可能會發現沒有音訊透過採集卡的 TV-out 播放。預設情況下,mplayer 會將音訊傳送到計算機的音效卡。簡單的解決方法是將採集卡的音訊輸出饋送到音效卡,並使用音效卡的輸出連線到電視。這樣,mplayer 就可以播放到電視,MythTV 在透過 Hauppauge 採集卡 TV-out 緩衝影片時也可以播放。

無法乾淨地啟動到 TV-out

[編輯 | 編輯原始碼]

如果你正在使用啟動指令碼(本指南其他地方有介紹),你可能會發現無法乾淨地啟動到你的電視輸出。也就是說,你可能能夠在視窗管理器啟動並執行後讓電視輸出工作(你可以切換圖形模式到電視輸出),但你不能簡單地啟動到電視輸出影片模式。你在 /etc/X11/xorg.conf 檔案中為電視輸出定義的 ServerLayout 工作正常,但問題似乎是當 X 嘗試使用電視輸出驅動程式時,所需的模組沒有載入。

首先,使用啟動指令碼(例如本文件其他地方建議的 /usr/local/bin/start-ivtv)不如正確使用 modprobe 好。也就是說,你應該透過向 /etc/modprobe.conf 檔案新增相應的行來載入模組。然而,一些使用者發現這不起作用,他們必須使用一個在啟動期間從 /etc/rc.d/rc.local 呼叫的指令碼。

一個解決方法是讓你的電腦啟動到一個正常的視窗會話(到 GNOME、KDE 或你正在使用的任何桌面環境),然後讓該視窗會話在你的電視輸出上啟動一個新的 X 視窗會話,並使用該新 X 會話執行 mythfrontend。要實現這一點,首先編輯你的 /etc/X11/xorg.conf 檔案,使其至少有兩個不同的“ServerLayout”部分。在嘗試使用此技巧之前,請確保這些佈局都能正常且獨立地工作。

 Section "ServerLayout"
     Identifier "layout1"
     InputDevice "Keyboard1" "CoreKeyboard"
     InputDevice "Mouse1" "CorePointer"
     Screen "screen1"
 EndSection
 Section "ServerLayout"
     Identifier "TVlayout"
     Screen "Hauppauge Screen"
     InputDevice "Keyboard1" "CoreKeyboard"
     InputDevice "Mouse1" "CorePointer"
 EndSection

Identifier 中**不能包含空格**這一點非常重要。如果識別符號名稱中包含空格,則會導致 startx 函式(我們稍後將使用)出現錯誤。因此,不要將你的佈局命名為“TV layout”,而應使用“TVlayout”。再次確保這兩個佈局都適用於各自的輸出源(顯示器或電視),然後再進行下一步。現在我們可以建立一個小的指令碼,在 KDE 啟動期間,根據情況啟動我們的新例項或啟動 mythfrontend。

 #!/bin/bash
 if [ "$DISPLAY"  = ":1" ]
 then
     # We are in the second KDE instance
     # Launch mythTV
     echo "Launching MythTV..."
     mythfrontend &
 else
     # We are in the first KDE instance
     # Launch a new KDE on the Hauppauge card
     echo "Launching new KDE instance on Hauppauge 350..."
     startx -- :1 -layout "TVlayout"
 fi

將此指令碼儲存為 /home/mythtv/.kde/Autostart/mythscript.sh(或任何其他名稱)。像往常一樣,使其可執行。

$ chmod +x mythscript.sh

如果不明確,以下是指令碼的作用:首先,它檢查當前的 $DISPLAY 環境變數(你可以使用“set”來操作環境變數)。此變數指定我們當前上下文中顯示的內容。通常,$DISPLAY 類似於“:0.0”,表示螢幕 0。但在我們的指令碼中,我們明確地在螢幕 1 上啟動電視輸出。因此,如果指令碼發現它在螢幕 1 上執行,則它會啟動 mythTV。或者,如果它沒有在螢幕 1 上啟動,則它必須在預設螢幕 0 上執行,這意味著它是 KDE 的第一個例項,它應該啟動 KDE 的一個新例項,並將其傳送到螢幕 1。

startx 命令啟動一個新的 X 會話(並執行預設的視窗管理器,在本例中為 KDE)。“:1”表示明確地在“螢幕 1”上執行它。“-layout”選項允許我們準確選擇要使用的 ServerLayout。顯然,請將其替換為你為電視輸出設定好的 ServerLayout。

將此指令碼放在 /home/mythtv/.kde/Autostart/ 目錄中,它將在新的 KDE 會話啟動時自動執行。因此,當計算機啟動時,它將啟動 KDE(在預設螢幕 0 上),並執行指令碼。此指令碼不會在螢幕 1 上,因此它將執行 startx 以在螢幕 1 上生成 KDE 的新例項,並使用“TVlayout”ServerLayout。這個新的 KDE 會話將啟動,並且它也將自動執行指令碼。這次,指令碼將看到它正在螢幕 1 上執行,因此它只會啟動 mythfrontend。

這個小解決方法應該可以使你的 MythTV 透明地(儘管有點慢)啟動到你的電視輸出。

播放期間出現藍色線條

[編輯 | 編輯原始碼]

如果你看到螢幕上出現“淡藍色線條”,你應該使用“xvattr”命令來修復它(根據Maiku 的指南)。試試這個

# urpmi xvattr
$ xvattr -a XV_COLORKEY -v 0

如果這解決了問題,那麼你應該在每次 X 啟動時都執行該命令。據報道,將該命令新增到“.xinirc”會導致與 X 衝突。相反,你可以將該命令新增到一個指令碼中,然後將該指令碼放在“/home/mythtv/.kde/Autostart/”中。

我忘記新增一個頻道到 zap2it

[編輯 | 編輯原始碼]

如果你在最初註冊 zap2it(DataDirect)帳戶時忘記新增頻道,或者想要修改你的頻道列表,請按照以下步驟操作。不幸的是,似乎唯一能夠使更改“生效”的方法是完全刪除舊的頻道列表,然後重新下載列表。首先,登入你的zap2it 帳戶,進行更改並儲存。然後,你應該執行“mythtvsetup”並記下你在“3. 影片源”和“4. 輸入連線”下輸入的資訊。

現在,退出設定並暫時關閉後端,然後重新進入設定。

# /etc/init.d/mythbackend stop
# mythtvsetup

這次,選擇“是,刪除我的頻道設定”,然後像之前一樣重新配置它。確保選擇“下載列表”以獲取新的頻道列表。然後退出 mythtvsetup 並重新填充資料庫。

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

現在你對頻道列表的修改應該已經生效了。

MythWeb無法從我的本地網路外部訪問

[編輯 | 編輯原始碼]

如果你可以透過在你的 MythTV 機器上使用“https:///mythweb/”訪問你的 MythWeb(甚至可能可以透過使用“http://internal.ip/mythweb/”訪問它),但無法從其他任何地方訪問你的 MythWeb,那麼可能是你的 ISP 阻止了 80 埠。一些 ISP 會這樣做是為了保護你免受病毒等攻擊,而另一些 ISP 則會阻止它以防止你執行 Web 伺服器。無論如何,你可以透過使用大於 1024 的埠號來解決此問題。為此,你需要編輯你的apache2 配置檔案,該檔案提供 MythWeb 檔案。因此,編輯“/etc/httpd/conf/httpd2.conf”並新增一行,例如

Listen 8050

你可以使用任何你喜歡的埠(8050 只是一個示例)。請注意,舊版本的 apache 會使用“Port 8050”之類的命令,但“Listen”是新版本(請參閱核心功能文件)。現在,你應該能夠透過使用“http://your.ip.address:8050/mythweb/”或“http://your.domain.name:8050/mythweb/”從任何地方訪問你的 MythWeb。

請記住更新你的路由器設定(如果適用)。登入你的路由器(大多數路由器在某個預定義的 IP 地址上都有一個網頁;請檢視你的文件),併為 8050 埠啟用埠轉發到你的本地網路中 MythTV 盒子的 IP 地址。

我無法再登入 KDE 了:dcopserver 錯誤!

[編輯 | 編輯原始碼]

在你在 MythTV 上進行的一些操作中,它可能會崩潰並帶走 KDE。之後,你將無法返回 KDE(更不用說執行 MythTV 了)。你可能會收到這樣的錯誤訊息

 There was an error setting up inter-process communications for KDE.
 The message returned by the system was:
 Could not read network connection list
 /home/mythtv/.DCOPserver_localhost__0
 Please check that the "dcopserver" program is running!

在嘗試從命令列執行 X 時,你可能會注意到其他錯誤

 usr/X11R6/bin/iceauth:
 timeout in locking authority file /home/mythtv/.ICEauthority
 Failed to load module "usr/X11R6/lib/modules/extensions/libglx.a
 FBIOPAN_DISPLAY: invalid argument

這個問題很容易解決。只需刪除與 ICE 和 DCOP 相關的任何檔案即可

$ cd /home/mythtv
$ rm .ICEauthority*
$ rm .DCOPserver*
# reboot

這些被刪除的檔案將在登入期間由 KDE 重新建立,之後一切應該都能正常工作。

我丟失了 MySQL 密碼

[編輯 | 編輯原始碼]

如果你丟失了(即忘記了)MySQL 資料庫系統的 root 密碼,那麼你無法找回它,但可以重置它。首先,停止正在執行的 mysql 守護程序

$ su
# service mysql stop

然後重新啟動守護程序,但這次不使用訪問控制

mysqld_safe --skip-grant-tables &

(請記住,末尾的 & 很重要:它將程序置於後臺。)現在進入“mysql”資料庫,併為 root 使用者設定一個新密碼

# mysql -uroot mysql 
> UPDATE user SET password=PASSWORD("abcdef") WHERE user="root"; 
> FLUSH PRIVILEGES;
> exit

其中(顯然)“abcdef”是要設定的密碼。現在重新啟動伺服器,以確保安全

# service mysql restart

你可以測試新密碼是否有效

$ mysql -u root -p

(然後輸入密碼),或者簡單地

$ mysql -u root -pabcdef
華夏公益教科書