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 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
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,包括所有缺少的依赖项(MySQL、QT 等)
# urpmi mythtv-suite
安装程序将提示您选择哪个包。您可能会注意到三个选项,一个名称中带有 "nvidia",一个带有 "via",还有一个是通用的。如果您有特定的 nvidia 或 via 硬件,可以选择相应的选项,但在大多数情况下,通用包应该可以正常工作。在显示(长长的)要安装的包列表时,说 "yes" 并等待它完成(可能需要 30 分钟到几个小时)。
现在我们需要安装 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 的基本功能都能正常工作,你就可以开始使用它了,并且在接下来的时间里,你可以继续对其进行自定义,并使其他功能和插件正常工作。