跳转到内容

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://127.0.0.1/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
华夏公益教科书