MythTV is a GPL licensed suite of programs that allow you to build the mythical home media convergence box on your own using Open Source software and operating systems. MythTV is known to work on Linux and Mac OS X (PowerPC and Intel). It does not run on Windows.
MythTV has a number of capabilities. The television portion allows you to do the following:
Custom mini-distributions are available to make it easier to install MythTV. A mini-distribution removes many of the "general purpose" workstation / server software packages that may be installed by default if you use one of the big-name OS packages.
See http://mysettopbox.tv if you'd like to install a custom version of Knoppix optimized for MythTV.
See http://www.minimyth.org if you'd like to install MythTV onto a diskless system.
See http://bit.blkbk.com if you'd like to install MythTV on a Xbox. NOTE: Site appears unmaintained.
See http://wilsonet.com/mythtv/ for instructions tailored to RedHat's Fedora Core distribution.
See http://www.mythbuntu.org if you'd like to install a customized version of Ubuntu optimized for MythTV.
There is a MythTV wiki at http://wiki.mythtv.org.
If you are installing this version for Schedules Direct support, please see the Migrating from DataDirect Labs to Schedules Direct section for additional information.
The upgrade from previous versions should be transparent. Any changes to the database structure should be applied automatically.
It is strongly recommended that you back up your database before installing a new version of MythTV.
See Saving or Restoring the database for instructions.
This HOWTO document is maintained at the primary MythTV website: http://www.mythtv.org by Robert Kulagowski mailto:rkulagow@rocketmail.com.
This document is available as a single-page HTML document at http://www.mythtv.org/docs/mythtv-HOWTO-singlehtml.html or as a PDF at http://www.mythtv.org/docs/mythtv-HOWTO.pdf.
This HOWTO is for MythTV v0.21
Release notes for this version may be found in the MythTV Wiki at http://www.mythtv.org/wiki/index.php/Release_Notes_-_0.21
If you would like to purchase a book specifically about MythTV:
The following conventions are used throughout this document.
boldface - used for program names.
typewriter
- used for program paths.
emphasis - Pay attention here.
It's recommended that you join the user list at http://www.mythtv.org/mailman/listinfo/mythtv-users. The developer list is at http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev. Please keep the developer list strictly for development-related issues.
Searchable archives for the lists are available at http://www.gossamer-threads.com/lists/mythtv/.
There are two IRC channels dedicated to MythTV which can be found on irc.freenode.net
The mythtv
channel is where the developers discuss code. It is
not a user-support channel. Please don't ask non-development
related questions there.
If you feel you need to contribute to a bug database, use the MythTV bug ticketing system at http://svn.mythtv.org/trac.
Good entries will contain the following:
See the instructions on how to debug in Section 22.
The bug database is not a chat room, so restrict your entries to what is relevant. It's also not a repository of feature requests; a feature request without an accompanying patch file to implement that feature will be quickly closed. There is a feature wishlist on the wiki at http://www.mythtv.org/wiki/index.php/Feature_Wishlist. There is no guarantee that anything on the wishlist will ever get code written to implement it.
If a developer closes out your bug, it's likely you didn't provide enough information. Don't re-open a bug without providing additional information.
Contributions to the HOWTO are welcome, especially if you find a grammatical or spelling error, or if the wording of something is just plain confusing.
If you'd like to make a new contribution, create a ticket at http://svn.mythtv.org/trac and click "New Ticket". The type should be set to "patch" and the owner set to "rkulagow" to ensure that I see your contribution.
Please send it as either SGML or as plain text. NO HTML. The
source used to create the HOWTO is in SGML / Linuxdoc. Do not be afraid of
SGML! A quick look at the source of this HOWTO will show that it is not
difficult, because there aren't that many tags to worry about, so at least
try to submit as SGML. See the Linuxdoc HOWTO at
http://www.tldp.org/HOWTO/Howtos-with-LinuxDoc.html for information
on the linuxdoc format itself, or look at the mythtv-HOWTO.sgml
file as an example.
To create the actual patch, run diff -u origfilename newfile > doc.patch and attach your contribution to the trac ticket.
This HOWTO document will focus on manually building MythTV in a North American environment. If you have installation instructions for a different region or Linux distribution, please send them to the author so that it can be included in other versions of this document.
You must ensure that any firewalls (either hardware, or a software firewall installed by your distribution) will not block access to the ports that will be used by the MythTV clients and servers on the "inside" LAN. The ports for MySQL (TCP port 3306) and mythbackend (TCP ports 6543 and 6544) must be open. It is strongly recommended that you do not expose the MythTV and MySQL ports to the Internet or your "Outside" LAN.
Hardware selection is a complex topic, one this HOWTO will only discuss briefly and in general terms. The following subsections offer some general guidance but stop short of offering specific recommendations.
For a good MythTV experience, you must understand that MythTV exercises your hardware more than a typical desktop. Encoder cards generate DMA across the PCI bus. The CPU is busy encoding / decoding video. Hard drives are constantly reading and writing data. Building a MythTV system on older / "spare" hardware may be an exercise in frustration and can waste many hours of valuable time.
For more detail about actual configurations that others have used, Mark Cooper has setup a hardware database at http://pvrhw.goldfish.org/. The website will let you browse what other users have reported as their hardware configuration, and how happy they are with the results.
If you have specific questions about the suitability of specific hardware choices, you can consult the archives of the mythtv-users mailing list at http://www.gossamer-threads.com/lists/mythtv/ or post a question to the list.
Selection of CPU type and speed is one of the trickiest elements of hardware selection, mainly because there are so many tradeoffs which can be made. For example, if you have plenty of CPU, you can use higher bitrates or capture sizes, etc.
MythTV has two modes of operation. First, it can function as a software video encoder, which means that it uses a fairly generic "dumb" video capture card to get frames of video, encodes them using the CPU on your motherboard and writes them to disk. High-end video capture cards and devices like the TiVo and ReplayTV have dedicated encoder chips which use specialized hardware to convert the video stream to the MPEG-2 format without using the motherboard CPU. The main CPU has the responsibility of running the Operating System and reading and writing the encoded frames to the disk. These tasks have fairly low CPU requirements compared to encoding video, which is why a device like a Series 1 TiVo can run with only 16MB of RAM and a 54MHz CPU.
There are many variables that go into the question: "How fast a CPU do I need to run MythTV"? Obviously, the faster your CPU, the better your experience will be with MythTV. If you are using the software MPEG-4 encoder and performing the "Watch TV" function, where the CPU is both encoding and decoding video simultaneously to allow Pause, Fast Forward and Rewind functions for live TV requires more CPU then just encoding or decoding. MythTV also supports multiple encoder cards in a single PC, thereby increasing the CPU requirements if you plan on simultaneously encoding multiple programs. As a general guideline, plan on 1GHz per encoder if you are doing software-based encoding, less if you are using a hardware-based encoder.
Here are a few data points:
The second mode of operation is where MythTV is paired with a hardware-based video encoder, such as a Matrox G200 or a Hauppauge WinTV-PVR-150/250/350/500. In this mode, because the video encoding is being done by a dedicated video processor, the host CPU requirements are quite low. See the Video Capture Device section for details.
The price differential between a frame grabber and a card that implements hardware MPEG-2 encoding, such as the Hauppauge PVR-x50 series, is now less than $30 US. Primary development in MythTV has transitioned to supporting MPEG-2 capture devices and HDTV, so if given the option, go with the hardware MPEG-2 encoder.
If you have a Via M10000 series or a Hauppauge PVR-350, MythTV can use the hardware-based video decoder for playback, which further reduces CPU requirements.
A MythTV host that is both a backend and a frontend and using software encoding with a single capture card should run adequately in 256MB of RAM. Additional RAM above 256MB will not necessarily increase performance, but may be useful if you are running multiple encoders.
Encoded video takes up a lot of hard disk space. The exact amount depends on the encoding scheme, the size of the raw images and the frames per second, but typical values for MythTV range from 700 megabytes/hour for MPEG-4, 2 GB/hour for MPEG-2 and RTjpeg and 7 GB/hour for ATSC HDTV.
Writing video to disk is sensitive to timing issues; RTjpeg requires less CPU with the tradeoff being larger files and needing to write to the disk faster. MPEG-4 requires more CPU, but the files are smaller. At the default resolution, MPEG-2 creates the largest files of all with almost no CPU impact.
See the Troubleshooting section for more information.
MythTV creates large files, many in excess of 4GB. You must use a 64 or 128 bit filesystem. These will allow you to create large files. Filesystems known to have problems with large files are FAT (all versions), and ReiserFS (versions 3 and 4).
Because MythTV creates very large files, a filesystem that does well at deleting large files is important. Numerous benchmarks show that XFS and JFS do very well at this task. You are strongly encouraged to consider one of these for your MythTV filesystem. JFS is the absolute best at deletion, so you may want to try it if XFS gives you problems. MythTV .21 incorporates a "slow delete" feature, which progressively shrinks the file rather than attempting to delete it all at once, so if you're more comfortable with a filesystem such as ext3 (whose delete performance for large files isn't that good) you may use it rather than one of the known-good high-performance file systems. There are other ramifications to using XFS and JFS - neither offer the opportunity to shrink a filesystem; they may only be expanded.
Because of the size of the MythTV files, it may be useful to plan for future expansion right from the beginning. If your case and power supply have the capacity for additional hard drives, read through the LVM and Advanced Partition Formatting sections for some pointers.
In order to capture video, MythTV will need one or more video capture devices with Linux drivers. There are a number of classes of hardware available for capturing video.
This class of card is the simplest and is usually the cheapest. There is no on-board encoding of the analog video; hardware known as a Digital-Analog Converter (DAC) takes the video and presents it to the computer in an essentially raw digital form.
For a list of video capture cards known to work with Linux, please see
/usr/src/linux/Documentation/video4linux/bttv
for a partial
listing; even if your specific card is not listed, it may be that the vendor
is actually using a standard reference design and placing their own name on
it. See the video4linux mailing list (
https://listman.redhat.com/mailman/listinfo/video4linux-list) for
more information and for specific hardware questions.
The most common inexpensive cards available use the Bt848, Bt878 or CX2388x series of video capture chips; examples are the "Hauppauge WinTV Go" card and the "AverTV Desktop PVR" card, both of which use the bttv kernel module.
NOTE: The ATI TV Wonder series and the ATI All-in-Wonder series of cards are not the same. The All-in-Wonder cards will not work with MythTV.
After you have installed a suitable capture device, you can check that
the kernel sees it with lspci
. Look for an entry labeled "Multimedia
video controller". To get more detailed information about the card, use
lspci -v
or lspci -vv
. Ensure that your system is loading
the bttv modules by typing:
# lsmod |grep bttv
You want to see the bttv
module listed.
While inexpensive video-capture cards simply capture raw frames, leaving encoding to software, some higher-end cards incorporate hardware-based encoding. Using either a G200 MJPEG encoder card, or a MPEG-2 encoder card supported by the IvyTV project http://ivtvdriver.org such as the Hauppauge PVR-150/250/350/500, Avermedia M179, Hauppauge "Freestyle" or Yuan M600 cards will allow you to use dedicated hardware encoders rather than your CPU. (The PVR-350 can simultaneously be used as an output device.) Using the on-board MPEG-2 encoder greatly reduces the CPU requirements for encoding.
The ivtv driver was incorporated into the Linux kernel starting at v2.6.22.
There is a Beta driver for the HVR-1600 card at http://www.ivtvdriver.org/index.php/Cx18
NOTE: Motherboards with the Via chipset are notoriously bad with DMA and have caused numerous issues with ivtv, including hard locks. See the ivtv website http://ivtvdriver.org for the latest information on what works and what doesn't.
Here are some data points for encoding:
Here are some data points for decoding:
DVB is a video standard primarily found in Europe (where it comes in DVB-C, DVB-T and DVB-S varieties for Cable, Terrestrial and Satellite) and is also used as the programming interface for HDTV capture cards in Linux. To see if your DVB card is supported, see the list of cards in the "Supported Hardware" section of the DVB Wiki at http://www.linuxtv.org/wiki/index.php/Main_Page for more information.
In the United States, you may use a card such as the TwinHan to obtain unencrypted Free-To-Air satellite channels. See http://www.lyngsat.com/ for the types of content which is available.
There are a number of HDTV cards with Linux drivers which are known to operate in the United States; a complete list of cards with DVB drivers can be found at http://www.linuxtv.org/wiki/index.php/ATSC_Devices Some cards support capture of unencrypted digital cable TV (utilizing QAM256), others will only work with Over The Air (aka "OTA") signals captured with an antenna (with 8VSB).
Cards that have been reported to work include:
NOTE: There are no known consumer-level capture devices which will allow you to capture the HDTV output (DVI, HDMI, VGA, YPbPr / Component) from a set-top box commonly found with digital cable systems or satellite systems. None of the capture devices listed above perform any encoding; they merely allow your computer to save a copy of a HDTV stream which has already been converted to MPEG-2 at the broadcast facility.
NOTE:: All of the cards listed above (except for the HD-2000 and HDHomeRun) should be configured as DVB cards. The HD-2000 can be configured as a pcHDTV card if you use the V4L drivers from http://www.pchdtv.com and use Linux kernel 2.6.9 or earlier. With kernel 2.6.10 and higher it must be configured as a DVB card, but you lose access to the second antenna input in ATSC mode. The HDHomeRun should be configured as two HDHomeRun cards, one for each tuner.
To playback HDTV content, plan on a powerful CPU. "How powerful?" depends on a number of factors, such as the capture resolution, whether the video is progressive or interlaced, and whether your display card has hardware-assist support for Linux.
The Simple Answer: Once you are in the 3.2 Ghz P4-class of CPU you should have no issues with viewing HDTV.
The Complicated Answer:
For 720p content (1280x720), a 2.4GHz P4 should be sufficient.
For 1920x1080i->1920x1080p with the better deinterlacing methods done in real time a 2.4GHz CPU is taxed, but should work if you use "Bob and Weave" deinterlacing, or if you have an NVIDIA card with MPEG-2 hardware acceleration. If you enable the hardware acceleration, you may be able to use a 1.8GHz processor.
You may use the Firewire output of the Motorola DCT6200 or the SA3250. If your provider uses 5C encryption on a particular channel, you won't be able to get any content.
You may use the Ethernet port of an DBoxII or a similar device to capture MPEG2. Your set top box has to be running the Neutrino GUI.
The Plextor ConvertX PVR devices are supported through Linux drivers available from http://www.plextor.com/english/support/LinuxSDK.htm. MythTV uses the Plextor to capture hardware encoded MPEG-4, so the host CPU requirements are low.
Hauppauge WinTV-PVR-USB2 (driver available at http://www.isely.net/pvrusb2/) emulates a PVR-x50 card.
MPEG-2, MPEG-4 and H.264 internet TS stream recording is supported using the IPTV recorder in MythTV. This recorder expects the channels to be supplied as a m3u playlist. If your DSL/Fiber provider supplies television service, but does not provide a m3u playlist for the channels, you can construct one for your own use. You do not need to download it from the same server as the streams themselves, and can also read it from a file if this is more convenient.
NOTE: Some DSL providers only allow you to use one recorder at a time, so you may need to limit yourself to one recorder in MythTV and turn off any set top box the cable provider sold or rented to you with your service. This limitation is independent of the bandwidth you have purchased.
The system needs a sound card or an on-board equivalent on the motherboard to play back and in most cases, to record sound. Any sound card that can be operated by the ALSA (Advanced Linux Sound Architecture) kernel modules will work with MythTV. However, some cards and drivers will provide better quality or compatibility than others. In particular, many audio devices included on motherboards can be problematic.
The usual practice for capturing the audio associated with the video is to
run a cable from an audio output on the video capture card to the Line input
on a sound card. However, some video capture cards provide on-board audio
capabilities that work with the kernel btaudio
module instead,
thereby eliminating the need for a cable. This is useful if you will be
using multiple capture cards in a single chassis, since each capture card
will not need its own sound card. Note that a separate sound card is still
required for playback when using btaudio
, and that often the audio
recorded in this way will be mono only. See the
btaudio section for more information.
MythTV will work with just about any video card. However, it is highly
recommended that you use a card which supports XVideo (XV) extensions. If
your card does not support XV, color conversion and scaling will be
performed by your CPU rather than the video card. This is very CPU
and memory intensive and will often result in dropped frames and a
corresponding degradation of quality. Check the X documentation
for details if you are uncertain about your preferred card. You may
also run xvinfo
; look for your video card to be listed as one
of the adapters.
If you want to use MythTV with a standard television, you will need a physical connection from your video card to your TV set, which can either be a TV-out port on the card itself or an external adapter that converts the VGA signal to an appropriate video signal. "Appropriate" depends on a number of factors, such as video standard (NTSC vs. PAL), the type of input connection (Composite vs. SVideo), etc.
Note that with some video cards and X drivers, XVideo extensions are only supported on the VGA output, and not on the TV output.
The next section deals with a number of cards that are known to have TV-out ports. The list is unlikely to be complete, so if you know of others, please post a message to the mythtv-users mailing list so the information can be included in future versions of the HOWTO. The list is organized by manufacturer.
Reports here are based on what users of the cards have posted on the mythtv-users mailing list, so if you need configuration details, please search the archives at http://www.gossamer-threads.com/lists/mythtv/ using the card name in your search string.
ATI makes many cards with TV-out capability, but only offers Linux drivers for Radeon 8500 and above cards. See the Drivers and Software section of http://www.ati.com for the driver and additional information.
The enhanced ati.2 X driver created by the GATOS http://gatos.sourceforge.net project offers some support for TV-out on other ATI cards, but only in its "experimental" version, available through CVS. There have been reports from people who say they have made this driver work with one or another ATI card. For example, Bruce Markey mailto:bjm@lvcm.com writes (on the mythtv-users mailing list): "I got this to work. You can quote me on that. I've used TV-out on several models of ATI cards both All-In-Wonder and regular cards with TV-out." See the "Adventurous Setup" section of http://gatos.sourceforge.net/watching_tv.php for details. Also see http://www.retinalburn.net/linux/tvout.html for more information.
Some NVIDIA cards with TV-out can be run using the standard nv driver in X, combined with the userspace application nvtv to control the TV-out port. See http://sourceforge.net/projects/nv-tv-out/ for details. Recent versions of the NVIDIA driver have better support for overscan and other features useful with TV-Out, so the nvtv application may not be required.
Some NVIDIA cards can be run with a proprietary NVIDIA X driver made available by NVIDIA. See http://www.nvidia.com/object/unix.html for more information.
NOTE: It's strongly recommended that you use the proprietary NVIDIA drivers; they have excellent support for XvMC and ship with a good configuration utility. XvMC provides MPEG-2 hardware acceleration, which is important if you want to display HDTV.
MythTV supports the TV-out and MPEG-2 decoder functions in the IvyTV driver.
The PVR-350 is unique amongst the Hauppauge PVR-x50 cards in that it also supports audio output, but you need to connect that audio output to something. There are two courses of action you may take:
Some devices with on-board TV-out capability, such as Xboxes converted to Linux and some laptops can be used as MythTV frontends to display on a television screen. Please consult the mythtv-users mailing list for messages that report the details of these special arrangements.
External adapters convert standard VGA output to a form suitable for display on a television. The output format varies by region, since different countries have different TV standards. People on the mythtv-users list have mentioned these adapters:
There are a few ways of installing programs on Linux systems; you can either use a pre-compiled package, or install from a tarball after satisfying any prerequisites.
A number of people have created pre-compiled packages for MythTV that may make your installation easier.
If you use any of the pre-compiled packages you may not need to perform any additional configuration steps in this HOWTO. The next logical step is configuring MySQL, which you may or may not have to perform. See your package documentation.
The definitive documentation on installing MythTV on Red Hat Linux / Fedora Core can be found in Jarod Wilson's ( mailto:jcw@wilsonet.com) HOWTO at http://wilsonet.com/mythtv/ Just like 3rd-party packages, any 3rd-party documentation problems should be brought up with the 3rd-parties (maintainer, lists, bugzillas etc.). The installation instructions which follow should be used as a guide only; refer to Jarod's guide.
Red Hat Linux and Fedora Core packages for MythTV and all of its add-on modules and some themes have been packaged by mailto:Axel.Thimm@ATrpms.net and are available at http://ATrpms.net/topic/multimedia/. All of the prerequisites for MythTV (such as XMLTV) are available as RPM packages. If you have problems with the RPMs, please contact the ATrpms lists at http://lists.ATrpms.net/ or file a bug against http://bugzilla.ATrpms.net/.
Given the large number of dependent RPMs you are advised to use tools like apt or yum for automatic retrieval and installation of the required RPMs. ( http://ATrpms.net/install.html) In this case a special meta-package called mythtv-suite will allow you to install all of MythTV and its add-ons, plus all dependencies.
If you don't have apt or yum on your machine, download and install the atrpms-kickstart package from http://ATrpms.net/name/atrpms-kickstart/. Install the package with:
# rpm -Uvh atrpms-kickstart*
Then run:
# apt-get update
# apt-get dist-upgrade
# apt-get update
And finally:
# apt-get install mythtv-suite
These steps however, do NOT perform the installation of any drivers required
for ALSA, capture cards, lirc kernel modules, etc., nor do
they set up your MythTV database. Check
http://ATrpms.net/topic/multimedia/ for the drivers you
need.
Thac has created RPMs for MythTV for Mandriva which may be obtained from http://rpm.nyvalls.se/ If you have problems with the RPMs, please send him email directly at thac@nyvalls.se.
Debian packages for MythTV and most of its add-on modules are maintained by Christian Marillat mailto:marillat@free.fr and are available at http://www.debian-multimedia.org/. Installation instructions can be found on those pages as well. All of the prerequisites for MythTV are available as Debian packages, most of them from the official Debian archive.
If you have followed the instructions on the above page you should have added
deb-src http://www.debian-multimedia.org sid main
to your /etc/apt/sources.list
file. Running apt-get update and then
executing apt-get build-dep mythtv should install all the
pre-requisites required to compile MythTV.
The Debian packages are configured such that MythTV programs should be
run as the mythtv
user, which is automatically created during
installation. This user has access to write new recordings to disk in the
default directory, read and write the database, access the audio and video
devices, and everything else that MythTV needs to do.
See /usr/share/doc/packagename/README.Debian
for more
information, including copies of the MythTV documentation. The
mythtv-doc
package contains a copy of this HOWTO in
/usr/share/doc/mythtv-doc
.
You may use the graphical tools that come with your distribution, or you can use command-line utilities. Either system will get the job done, and it all depends on your comfort level with Linux.
In order to compile MythTV, we need to make sure that the software it needs is installed. This list includes mysql, gcc, freetype2-devel, xorg-xserver-devel, qt-devel and lame. If you're going to use a remote control with MythTV, you're going to need the cdialog package in order to compile lircd if your distribution doesn't have a pre-packaged lirc. If you are using XMLTV as a grabber, you will need perl.
NOTE: Qt v3.3 or higher is required. NOTE: MythTV DOES NOT WORK with Qt4. NOTE: If you are going to be using RPMs to install various components, you should be aware that not all packages include the necessary headers for compiling. If you're having trouble compiling, ensure that you've installed the -devel version of a prerequisite.
This section details the various methods for installing prerequisites from the command line.
NOTE: The following instructions should be considered out of date as of 2006-09-10. If updated instructions are not submitted by the release of v0.21 of MythTV they will be removed.
urpmi is the simplest tool for installation of packages from the
command line, but properly configuring it can be difficult. The
following website
http://easyurpmi.zarb.org/ will allow you to choose
a mirror site and then present the command-line configuration text for that
mirror. You will most likely need to add a "Contrib" mirror to your setup.
If you add a site from the "Penguin Liberation Front", you will be able to
load the lame
library without compiling from source.
Open a shell, and execute the following. You may get asked a number of questions regarding dependencies. It's best to answer "YES".
$ su
# urpmi mysql gcc gcc-c++ freetype2-devel cdialog alsa-utils
# urpmi XFree86-devel perl
# urpmi libqt3-devel libMesaGLU1-devel
NOTE for Mandriva 9.1+ users: execute the following command. # urpmi libqt3-mysql
everything already installed
In that case, you're ready to move to the next section. Once you have completed installing the pre-requisites, exit out of the shell and start a new one to ensure that any environment variables setup by the installation have a chance to take effect.
NOTE: MythTV does not run on Qt4.
If Qt has not been installed on your system: Edit
/etc/make.conf
and locate the "USE" variable. If the line is
commented out, remove the comment. The line should have at least:
USE="mysql alsa"
Next you need to build Qt. If you don't plan on using the ebuilds as
described in the Gentoo section then you also need to install lame.
# emerge lame mysql qt
If you have already installed Qt: you will need to rebuild because the
default installation doesn't include MySQL support, a requirement for MythTV.
To enable SQL support, add "mysql" to your USE variable in
/etc/make.conf
and rebuild Qt by running
# emerge qt
All the necessary files will be downloaded and built. Even on a fast machine this may take a lot of time if you need to do a full Qt build.
Build-dependencies for MythTV can be satisfied by adding the following to
your /etc/apt/sources.list
# Christian Marillat's packages (mplayer, lame)
deb http://www.debian-multimedia.org sid main
deb-src http://www.debian-multimedia.org sid main
and executing:
# apt-get build-dep mythtv
# apt-get source mythtv --compile
Before you compile MythTV from the current source tarball or from subversion, you may need to modify your system configuration in a few ways.
In general, if you install MythTV from pre-packaged binaries for your Linux distribution/version, you don't need to be too concerned about the issues in this section of the HOWTO - the install script for the packages should take care of them. However, this section is still recommended reading which may help if the packager skipped a step in their packaging.
MythTV is written in C++ and requires a fairly complete, but standard,
compilation environment, including a recent g++ compiler, make
, and
appropriate header files for shared libraries. Any standard Linux
distribution should be able to install a suitable compilation environment
from its packaging system. Section 3.2 of this HOWTO provides some details
of how to install the required environment for many distributions.
Subsequent sections of this chapter address the few oddities that you may have to adjust by hand before you compile MythTV.
The reference compilation system for MythTV is Ubuntu.
The runtime manager for shared libraries, /lib/ld.so, gets
information about the locations and contents of shared libraries from
/etc/ld.so.cache
, a file created by ldconfig from
information in /etc/ld.so.conf
. Because MythTV installs some
shared libraries in /usr/local/lib
, that directory needs to be
added to the list of directories for ld.so to search when doing
runtime linking of programs, if it is not already there.
You do this, as root, by editing /etc/ld.so.conf
, then
running ldconfig. There are many ways to do this; one that
works is to enter this series of commands:
$ su -
# echo /usr/local/lib >> /etc/ld.so.conf
# /sbin/ldconfig
# exit
$
The compiler needs to be able to locate QT binaries and libraries in order to compile MythTV. QTDIR needs to be set and the directory holding the QT binaries needs to be added to your PATH. Your distribution may already be making these changes as a part of the installation of the software prerequisites detailed earlier.
One way to do this is as follows:
Open a shell and execute the following:
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games:/usr/lib/qt3/bin:/home/mythtv/bin:/usr/lib/qt3/bin
$ echo $QTDIR
/usr/lib/qt3
$ which qmake
/usr/lib/qt3/bin/qmake
For Mandriva, you should see a value like /usr/lib/qt3
for
QTDIR
and /usr/lib/qt3/bin
should be in $PATH.
For Gentoo, you should see a value like /usr/qt/3
for QTDIR
and /usr/qt/3/bin
should be in $PATH.
If you don't, do not proceed past this step until you have resolved this error. You may need to manually specify the QTDIR and PATH at the shell prompt before compiling.
Also, check that there has been a link created in
/usr/lib/qt3/mkspecs
(/usr/share/qt3/mkspecs
for Debian)
called default
. If not, you'll get errors during the compile. See
the Troubleshooting Section for more information.
The following instructions work for Mandriva using
bash as the shell, and may be applicable for a distribution which
uses /etc/profile.d
.
As root, create the following file in /etc/profile.d
The example
filename is "mythtv.sh". Use what you feel is appropriate.
Open a shell, and switch to superuser mode.
$ su
# cd /etc/profile.d
cat > mythtv.sh
export QTDIR=/usr/lib/qt3
export PATH=$PATH:/usr/lib/qt3/bin
^D
# chmod a+x mythtv.sh
# exit
$ exit
The last two commands are to exit out of the shell. This way, when you next
open a shell your new commands
will take effect.
MythTV will need access to the video4linux devices on your system. By default, your distribution may restrict access to these devices to the logged-in user, so if you will be automatically starting mythbackend from a script rather than an interactive terminal session you will need to make some adjustments.
NOTE: The following instructions are accurate for Mandriva.
Check for a file called /etc/security/console.perms
. Open the file
in your favorite text editor and look for a line that has:
<console> 0600 <v4l> 0600 root.video
and replace it with
<console> 0666 <v4l> 0666 root.video
What we're doing is allowing read and write access to the files in the video4linux directory.
Get MythTV from the http://www.mythtv.org web site. There are two installation methods you may choose from. The first is to download the latest release in tarball format and compile. The tarball release of MythTV should work on a wide variety of systems and should be the preferred method for new users. If you wish to use the subversion copy of MythTV you may obtain it from http://svn.mythtv.org
If you are in North America you will use the Schedules Direct grabber which is built-in to MythTV. You do not need to install XMLTV (so you may skip XMLTV-related instructions), but you need wget version 1.9.1 or higher.
Get XMLTV from http://xmltv.sourceforge.net. Download the latest version (0.5.51).
NOTE for Mandriva users: If you have added a "PLF" mirror, you may skip the next step and type: # urpmi libmp3lame0 libmp3lame0-devel After downloading, be sure to install both: # rpm -Uvh lame*
Get lame from http://lame.sourceforge.net/. Download the source code to v3.96.1 by following the links from "Using" through "Download...".
Open a shell and switch to the directory where you saved lame.
$ tar -xzf lame-3.96.1.tar.gz
$ cd lame-3.96.1
$ ./configure
$ make
$ make test
$ su
# make install
Check that it worked:
# ls -l /usr/local/lib
-rw-r--r-- 1 root root 381706 Nov 4 14:22 libmp3lame.a
-rwxr-xr-x 1 root root 674 Nov 4 14:22 libmp3lame.la*
lrwxrwxrwx 1 root root 19 Nov 4 14:22 libmp3lame.so ->
libmp3lame.so.0.0.0*
lrwxrwxrwx 1 root root 19 Nov 4 14:22 libmp3lame.so.0 ->
libmp3lame.so.0.0.0*
-rwxr-xr-x 1 root root 360197 Nov 4 14:22
libmp3lame.so.0.0.0*
# exit
$
RPMs for XMLTV and all of its dependencies can be obtained from http://ATrpms.net/name/xmltv/. The web page has a list of all the dependent packages you must download and install.
# rpm -Uvh xmltv* perl*
If you install from this location you may skip to Manually building MythTV.
RPMs for XMLTV and all of its dependencies are located in Mandriva's "contrib". If you have added a contrib mirror, try installing XMLTV:
# urpmi xmltv xmltv-grabbers
If this does not work, it is possible that contrib for your Mandriva version
does not have XMLTV, so you may install the XMLTV prerequisites by typing:
# urpmi perl-xml-twig perl-xml-writer perl-datemanip perl-libwww-perl
and skip straight to the XMLTV compilation step.
$ tar -xjf xmltv-0.5.51.tar.bz2
Install the xmltv prerequisites. The following prerequisites are the
minimum required; when you actually start running the xmltv setup program it
may alert you to other modules that are required.:
$ su
# perl -MCPAN -e shell
cpan> install XML::Twig
cpan> install Date::Manip
Date::Manip is up to date.
cpan> install LWP
cpan> install XML::Writer
cpan> exit
Change to the XMLTV directory and compile it:
$ cd xmltv-0.5.51
$ perl Makefile.PL
You can answer "N" to the tv_check, tv_pick_cgi questions. Say "yes" to
the grabber required for your location.
You may get errors about modules not being installed. You will need to resolve any missing dependencies at this point, or your grabber may not work correctly.
$ make
$ make test
$ su
# make install
# exit
As of 2007-09-01, Tribune Media Services will no longer offer free guide data. Schedules Direct is a non-profit organization which has licensed the data to make it available to users of Freeware and Open Source applications.
If you wish to use Schedules Direct, you'll need to establish a user account. Go to http://www.schedulesdirect.org and click on the "Membership" link.
Once you've read and agreed to the Subscriber Agreement, Terms of Use and Privacy Policy proceed to the lineup choices and configure your account for your particular location and the channels that you have. This configuration will be imported into MythTV when you first run the mythtv-setup program.
If you are going to use subversion, execute the following instructions to obtain the latest version of MythTV:
$ mkdir mythtv
$ svn co http://svn.mythtv.org/svn/trunk/ mythtv
$ cd mythtv
To use a release version, you can execute:
$ mkdir mythtv-release-0.21
$ svn co http://svn.mythtv.org/svn/branches/release-0-21-fixes/ mythtv-release-0.21
$ cd mythtv-release-0.21
NOTE: Using a svn version of the code allows you to stay up-to-date with changes. So, if there's an update to the 0.21 release and you originally obtained it using svn, you could enter the mythtv-release-0.21 directory and type "svn up", which will update your copy with the fixed version from the website. You would then recompile and install the updated 0.21 code.
If you are using the tarball, then unpack it:
$ tar -xjf mythtv-0.21.tar.bz2
$ cd mythtv-0.21
$ ./configure
If you wish to change options, run ./configure --help to
see what is available and to override and automatically detected options.
See the config.log
file after running configure to see
previous runs.
To compile:
$ make -j 2
The MythTV compile can take advantage of multiple CPUs, SMP and Hyperthreading. If you want to build MythTV on a multi-CPU machine (or with distcc), specify "-j numjobs", where "numjobs" is greater than 2. In the above example, we had two concurrent jobs executing, which is recommended for a single CPU system. Do not set the number of jobs too high, or your compile will actually take longer to complete than it would if you did a "normal" build.
If you are using distcc, and you had two other host machines (red, blue) participating, you would do something like:
$ export DISTCC_HOSTS='localhost red blue'
$ make -j 6 CXX=distcc
The actual speed-up, if any, is dependant on a number of factors, such as
number of CPUs / hosts, etc. The distcc documentation recommends
using a -j
value of twice the number of CPUs available to keep all
of them busy.
Some timing information. The following should only be used for
illustration; your actual results may vary. The test involves a complete
make distclean
to the final binary.
In the above example, we see that with a single CPU, a multi-stage make does not significantly decrease compile time.
Once the compile is done, switch to superuser:
$ su
# make install
# exit
MythTV supports real-time scheduling of the video output thread. There are three ways to go about enabling this: You can use rlimits, you can use the realtime security module, or on older systems you can SUID the executable. Enabling real-time scheduling is optional, but can make the video display smoother, especially if you are decoding HDTV.
The rlimits method is the preferred method and is included in Linux
2.6.12 and above. Unfortunately, you need PAM version 0.79 or above, which
may not be supported by your distribution yet. Assuming anyone running
mythfrontend is in the audio group and rlimits are supported, all
you need to do is place this in your /etc/security/limits.conf
* - rtprio 0
* - nice 0
@audio - rtprio 50
@audio - nice 0
The second option is to use the Linux realtime kernel module. This is will be phased out over time, but is currently supported by many distributions that do not yet support rlimits. If you are not using the distribution kernel you must configure your kernel with:
Security options : [*] Enable different security models
Security options : [M] Default Linux Capabilties
You may also need to install the realtime module, using your distribution's
realtime package. Assuming the users who will be running
mythfrontend will be in the audio group you can get the GUID of a named
group like so:
$ grep audio /etc/group
If the number printed out from the grep was 18, you can now load
this module as root before starting mythfrontend:
# modprobe realtime gid=18
The final and least preferred option is to set the sticky bit on the mythfrontend executable. This opens a security hole, but is the only option on systems that do not support either rlimits or the realtime module. This does not work on modern distributions either, and is not recommended on any system connected to the Internet. This may also make it impossible to debug MythTV without running gdb as root. If you would still like to do this, you just need to run this as root:
# chmod a+s /usr/local/bin/mythfrontend /usr/local/bin/mythtv
Since MythTV uses a client/server architecture, multiple frontend computers can simultaneously access content on a Myth system. Live TV, watching and scheduling recordings, etc. are all possible from multiple frontends.
To get a better picture of what is needed to run a frontend, note the following:
Other than the exclusion of the MySQL server and XMLTV, the MythTV compilation procedure is the same as when you're setting up both a backend and a frontend. However, you will need to install the database access libraries.
Once MythTV is compiled and installed:
Installation of MythTV on Gentoo consists of simply emerging the desired ebuild because all of the packages are now part of the official Portage tree.
$ su -
# emerge --sync # make sure portage is up to date.
# vi /etc/make.conf
Add mysql to your USE variable. i.e. USE="mysql ...."
# emerge mythtv
When you install MySQL 5.x you will also want to comment
out "log-bin" in your my.cnf
configuration file. This option will
quickly fill your "/var" disk partition with many gigabytes of data,
unless you are doing database replication and deleting these files regularly.
If this is the system maintaining the database, make sure that MySQL is running and started at boot. Click on Mandriva Control Center->System->Services, find MySQL and click the "On Boot" button and the "Start" button if the MySQL status shows that it isn't running yet.
$ su
# chkconfig --level 35 mysql on
# /etc/rc.d/init.d/mysql start
# exit
If this is the system maintaining the database, make sure that MySQL is running and started at boot. Click on Redhat menu>Server Settings>Services and enter the root password when asked. Check "mysqld" and then click Start. Click Save, then close the window.
This can be done from the command line by typing:
# /sbin/chkconfig mysqld on
# /sbin/service mysqld start
After installing MySQL you need to initialize the database by running mysql_install_db as root.
This step is only required on the system maintaining the database, which
may or may not be one of your MythTV boxes. If the database is on a
non-MythTV machine you'll need to copy the database/mc.sql
file to it.
To setup the initial MySQL databases:
$ cd database
$ mysql -u root < mc.sql
$ mysql < mc.sql
$ su
# mysql < /usr/share/mythtv/database/mc.sql
If you're going to have multiple systems accessing a master database,
you must grant access to the database from remote systems. By default, the
mc.sql
script is only granting access to the local host.
To allow other hosts access to your master database, you can either set it up for no security at all, or with more granularity. Note that the "%" is the wildcard character in MySQL.
This example has no security at all, and allows access from any host.
$ mysql -u root mythconverg
mysql> grant all on mythconverg.* to mythtv@"%" identified by "mythtv";
mysql> flush privileges;
For a more secure setup, you can restrict which machines or subnets have access. If you have a complete DNS system operational, you could do the following:
$ mysql -u root mythconverg
mysql> grant all on mythconverg.* to mythtv@"%.mydomain.com" identified by "mythtv";
mysql> flush privileges;
Finally, if you just want to restrict by IP subnet (in this example, the 192.168.1. network):
$ mysql -u root mythconverg
mysql> grant all on mythconverg.* to mythtv@"192.168.1.%" identified by "mythtv";
mysql> flush privileges;
You'll also need to check that the "networking" feature of MySQL is turned
on. Check that /etc/mysql/my.cnf
does not contain
skip-networking
. If it does, remove it. Also verify that
bind-address
is set to your IP address instead of
127.0.0.1
. If you change either of these items, restart
MySQL.
NOTE: Your distribution may have a customized MySQL configuration
file; in Mandriva, check /etc/sysconfig/mysqld
for additional
configuration.
If your video doesn't appear to be in-sync with your audio and you're using an analog video capture card and a soundcard to capture audio, it could be because you are listening to the real-time audio from your video card rather than after it's been processed and synchronized to the video by MythTV. Because MythTV is a personal video recorder, "Live TV" isn't really live - to let you pause live TV, MythTV is actually encoding the video, saving to disk, and then playing it back. This procedure puts your MythTV "live" TV about 2 seconds behind real-time, so it's important that you're not listening to the live audio. However, if you're having an issue where the audio and video aren't synchronized by small but varying amount, it's most likely because the sound driver that you're using doesn't have the DSP_CAP_REALTIME capability. This was the case with ALSA (0.5), but not with newer versions. See the Troubleshooting Audio section for more information if you're having issues with sound. Also, ensure that no other programs are grabbing the audio output, like arts or esd.
What you need to do is to mute the "line-in" of your sound card and also set it as the recording source.
There are two ways to do this. Graphically, and from the command line.
Open Kmix by clicking K->Multimedia->Sound->Kmix for Mandriva, or
RedHat Menu>Sound & Video>Volume Controlon Red Hat/Fedora.
Click on Settings->Configure Make sure that "Tick Marks" and "Show labels" have "X"'s in them. This will make it easier to find the correct audio source. Click OK.
On the mixer page, look for Line-In on your sound card. You should see two LED's - a green one at the top, and a red one at the bottom. The green one at the top is for muting; you want to make sure that the green LED is a dark green, meaning that it's "off". You also want to click on the red LED so that it turns bright red, indicating that it's "ON"; this insures that the Line-in is used as the source. Click OK, and make sure that you save the settings so that this is your default.
To use ALSA, you'll need to correctly setup your
asoundrc
file. Configuring this file is beyond the scope of this
HOWTO. Once ALSA is working correctly, change the output sound device in
mythfrontend->setup->Audio from /dev/dsp
to ALSA:default
.
This field may be edited to suit your ALSA requirements.
If you have installed the alsa-utils package, then the amixer program can be used to setup the mixer. The "Master" volume setting is only required on a frontend machine to ensure that the sound channels are unmuted and configured for outputting sound. The "Line" and "Capture" controls are required for your sound card to actually capture audio from the external Line-in if it's connected to an analog frame grabber. Not all sound cards have a "Capture" control, but if yours does and you don't set it then MythTV will not capture audio.
Note the spelling in the following commands.
$ amixer set Master,0 100%,100% unmute
$ amixer set PCM,0 100%,100% unmute
$ amixer set Line,0 75%,75% mute captur
$ amixer set Capture,0 100%,100% captur
$ su
# alsactl store
# exit
$
If you have multiple sound cards, then use the -c
parameter to
specify which card to adjust. Note that the first card will be "0", the
second will be "1", etc.
That takes care of setting the volume correctly, and the ALSA startup script
will restore the volume after a reboot. If you find that your sound is
distorted, it's possible that the levels in the above examples are too high
for your particular hardware combination. Try reducing the percentages by
5-10% and checking again. Once you're satisfied, re-run the alsactl
store
command.
You may also use the alsamixer program to set the volume. If you are using an ALSA version after 1.0.6, use alsamixer -V all First, start alsamixer from the command line. You should start out on the "Master" volume control slider. Use the up and down cursor to set the master volume to around 75%. Next, use the left and right cursor keys to move around on the screen until you find the "Line" slider. Press SPACE to set it as the capture source, set the level to around 50-75% and press "M" to mute it. You can now press ESC to exit out of the alsamixer program. You can also have MythTV manage all volume and mute settings, but this will only affect the "Master" or PCM volume, not the capture volume. See the mythfrontend setup page for options.
Finally, if you've performed all of the above steps, and you still don't seem to have any sound, it's possible that your video capture device is muting the audio output.
$ v4lctl -c /dev/video0 setattr mute off
MythTV does not have native remote control receiver and decoder software
built-in. Instead, remote control functions are implemented by cooperating
with lirc, the Linux Infrared Remote Control program. lirc
handles the IR hardware and passes keystrokes to MythTV, which then acts as
if the user had pressed the keys on the keyboard. The file
keys.txt
describes the keys used to control MythTV.
Some IR devices require a kernel recompile, and some don't. However, all at least require having the kernel source available as a resource for the lirc build process.
To install lirc on Gentoo, all you need to do is:
# emerge lirc
You're going to need to download and compile lircd. Go to http://www.lirc.org and download lirc; as of 2006-01-21, the version available is 0.8.0. Grab the remotes.tar.bz2 file as well.
$ tar -xjf lirc-0.8.0.tar.bz2
$ cd lirc-0.8.0
$ ./setup.sh
You're going to need to know what sort of receiver you have and where it's
connected. In the case of the Pinnacle Studio TV card, with the IR receiver
connected to COM1 (/dev/ttys0), once the configuration menu comes up,
perform the configuration by going to Driver Configuration->Other Serial
Port Devices->Pinnacle Systems Receiver->OK and on the next page select
COM1->OK.
Each remote is different; some remote receivers connect directly to your capture card and not to a serial port, so make sure that you've got the correct one.
You then click "Save Configuration and run configure" to continue.
Make sure you read the last text generated by the configure step. It will tell you if you require a kernel recompile, and what the name of your kernel module will be (if necessary). For instance a home-built receiver may require a kernel recompile, so you would be notified that you will have to load the lirc_serial module. If you did not get any such messages skip the kernel recompile steps below and go directly to making and installing the lirc driver.
Once the configuration step is complete:
$ make
$ su
# make install
# chmod 666 /dev/lircd
At this point, if you're using a serial receiver, check that there's a
lirc
device in /dev
:
$ ls -l /dev/li*
lr-xr-xr-x 1 root root 5 Jan 27 09:00 /dev/lirc -> ttyS0
srw-rw-rw- 1 root root 0 Jan 27 15:01 /dev/lircd=
prw-r--r-- 1 root root 0 Jan 27 09:00 /dev/lircm|
As you can see, there's a link from /dev/lirc to ttyS0, a.k.a. "COM1", which is appropriate for the Pinnacle Systems PCTV Pro. However, you may notice something like this:
crw------- 1 root root 61, 0 Dec 31 1969 lirc
Some IR receivers (including some homebrew units) use a character device as
their data interface as opposed to a link to a serial port. If the make
install
step has created a character device for you, don't replace it
with a link to a COM port.
So, if the link or character device was not created (but should have been),
ensure that you ran the make install
step as root. If it still
doesn't work, then there are three options. The first option is to re-read
the lirc documentation to determine whether your IR receiver is a
character device or should be a link to a serial port and to create the
link/character device manually. In this example, the IR device is connected
to ttyS0. If it were connected to "COM2", then use ttyS1, etc.
$ su
# cd /dev
# ln -sf ttyS0 lirc
# exit
$
# mknod /dev/lirc c 61 0
See the lirc documentation for additional information. The lirc installation should create this for you, so manually creating it indicates that your lirc installation may have other issues.
The second option is to post your issue to the lirc list, not the mythtv-users list. The lirc programmers will be the ones that can assist you best.
The third option is to dispense with lirc altogether by purchasing an IR
keyboard (various options exist, although Chicony appears to work for some
people) and a learning remote control. The IR keyboard receiver plugs into
the PS/2 keyboard port on your PC and you would train your learning remote
to emulate the various keystrokes from keys.txt
of your IR
keyboard. Using this method removes lirc entirely from the picture - your
remote will be sending keypresses that your PC "sees" on the keyboard port.
If the lirc configure program / compile did not mention anything about a
kernel module, then you are finished. If it did mention a kernel module, you
must edit the /etc/modules.conf
file. Add this line as the first
thing in the file. It must come first, or it may not work.
alias char-major-61 XXX
replace XXX with the name which you determined earlier, which in this example was "lirc_serial"
$ su
# modprobe lirc_serial
# /sbin/ldconfig
Next, we're going to manually start lircd the first time. Mandriva 9.1
users, type: # /etc/rc.d/init.d/lircd start
instead of:
# /usr/local/sbin/lircd
NOTE: Read this next section if you're not familiar with how lirc works!
There are two separate files used by lirc, and both are required for your
remote control to do anything useful. First is the lircd.conf
file.
lircd.conf
tells the lirc daemon how to interpret the IR pulses
that it receives from a remote control and what name to assign to each
sequence of pulses. Without getting too involved, a particular series of
pulses may correlate to "Channel Up". The lircd.conf
file will
then contain a line that looks something like this:
ChannelUp 0x0000000000001020
The lircd.conf
file can have multiple remote controls defined.
The second file is lircrc
, which takes the name of the button which
was pressed ("ChannelUp") in the above example, and correlates that to an
action to be performed by a program using the remote control. So in MythTV,
ChannelUp means one thing, while in mplayer it means something
different. lircrc
gives you the flexibility of taking the name of
the button and having it perform different actions depending on which
program you're using at the time.
NOTE: The definitions in lircd.conf
come from the user
community, and there is no standard for the common button names. One
lircd.conf
file may contain a definition for a button called
"ChannelUp", while another may contain a definition for "Chan+". Your
lircrc
file must therefore be configured appropriately, or it won't
work.
If this fails, complaining of a missing lircd.conf
file, then you
must find or make one. First look for a pre-made configuration file at
http://lirc.sourceforge.net/remotes/. Mandriva 9.1 users, look in
/usr/share/lirc-remotes
. If you find one your remotes either on the
website or in /usr/share
, download or copy the file, name it
lircd.conf
and put it in your /etc
directory. If you
couldn't find your remote, you must make your own lircd.conf
file.
To make your own lircd.conf
file
$ irrecord myremote
Follow the on-screen directions to train your remote and define keys. If
your remote ends up working well, you should consider submitting your
lircd.conf
file back to the lirc developers. Once finished:
$ su
# cp myremote /etc/lircd.conf
now try to start lircd again:
# /usr/local/sbin/lircd
Now, we're going to add the commands necessary for lircd to run each time we boot. Mandriva 9.1 users, you can execute:
$ su
# chkconfig --level 35 lircd on
# exit
All other distributions:
# cd /etc/rc.d
# cat >> rc.local
echo "Starting lircd"
/usr/local/sbin/lircd
^D
# exit
$
This takes care of the lircd portion, which "listens" for the IR signals. If
everything went well, the install script for lircd put an appropriate
configuration file for your remote into /etc/lircd.conf
This file
maps the buttons on the remote control to the IR pulses coming from the
receiver.
The next step is to convert those signals into something that can be used to control MythTV. MythTV now includes native support for lirc and can interact directly with
$ cd ~/mythtv-0.21/contrib/configfiles
$ cp lircrc.example ~/.lircrc
or
$ cp lircrc.example.pinnaclestudiopctv ~/.lircrc
if you've got a Pinnacle Studio PCTV remote.
$ irw
Start pressing the keys on your remote; irw will
print the name of the button as it is defined in your
/etc/lircd.conf
. If you don't see anything at this point, you need
to troubleshoot further by going back to the lirc home page and investigating
from there.
If it is working, then press CTRL-C to abort the program. Once you know that your remote is working, you can either recompile MythTV with native lirc support by enabling it in configure or you need to run the irxevent program, which takes the key presses and sends them to MythTV. If you use native lirc support, you don't need to run irxevent. If you are going to use irxevent, then you need to run it like this:
$ irxevent &
If irxevent isn't running, then MythTV will not respond to your remote
control unless you're using native lirc support.
Take a look at the lircrc.example files in the contrib/configfiles/
directory. In my case, (Pinnacle Studio card) the channel up and down functions
weren't working, due to the fact that the button names were different than
the default lircrc.example
file that came with MythTV.
The lircrc.example
file has this:
begin
prog = irxevent
button = ChannelUp
config = Key Up CurrentWindow
end
begin
prog = irxevent
button = ChannelDown
config = Key Down CurrentWindow
end
but the /etc/lircd.conf
that comes in the lircd package
defines the buttons for the Pinnacle Studio PCTV as:
channel+ 0x0000000000000017
channel- 0x000000000000001C
rather than "ChannelUp" and "ChannelDown". I added the
following to my /home/[yourusername]/.lircrc file:
begin
prog = irxevent
button = channel+
repeat = 3
config = Key Up CurrentWindow
end
begin
prog = irxevent
button = channel-
repeat = 3
config = Key Down CurrentWindow
end
which took care of basic functionality. Because the PCTV Studio remote
has additional buttons, look at the
contrib/configfiles/lircrc.example.pinnaclestudiopctv
for an example of how
to define additional buttons, and how to debug potential button name
conflicts between the lircrc.example
file and how your
remote defines the button names.
By examining the button names defined in /etc/lircd.conf
and using
the irw program to make sure that your remote is working, you can
create the appropriate mappings in .lircrc
to get excellent remote
functionality with MythTV.
Note the repeat = parameter. This informs the irxevent
program to pass through every third keypress. By default, lirc
will only send one keypress to the application, even if you're holding down
the key. The actual repeat = number will vary from system to
system, so experiment and see which value works best for you.
Lirc has support for various IR transmitters. A popular model is the Actisys IR-200L http://store.snapstreamstore.com/accessories.html. It was originally designed for IRDA communication, but can be used to transmit A/V remote control codes. By using the lirc SIR driver, this device can easily be integrated with MythTV. I have tested this device with an AT&T DCT2000 digital cable box but the instructions can be used to configure other IRDA devices and A/V remotes.
Follow the steps in the previous section. When you run setup.sh, select option 1, driver configuration. From here select option 6, IrDA hardware. Select your appropriate device and the corresponding serial port, then Save configuration & run configure from the main menu. Once configure is done type:
$ make
Please note: unlike the Pinnacle receiver above you will be compiling lircd in addition to a kernel module for the SIR transmitter. Depending on whether you have your serial port driver configured as a kernel module you might see the following message during make:
lirc_sir.c:56:2: warning: #warning
"******************************************"
lirc_sir.c:57:2: warning: #warning "Your serial port driver is compiled into "
lirc_sir.c:58:2: warning: #warning "the kernel. You will have to release the "
lirc_sir.c:59:2: warning: #warning "port you want to use for LIRC with:"
lirc_sir.c:60:2: warning: #warning "setserial /dev/ttySx uart none"
lirc_sir.c:61:2: warning: #warning
"******************************************"
If you do receive this statement make sure to run the setserial command before you load the lirc_sir module. Follow this with the install:
$ su
# make install
You will notice that lirc installs the kernel module in
/lib/modules/uname -a/misc
.
The configuration for starting lircd differs if you're going to be sending and receiving IR versus just receiving.
# cd /etc/rc.d
# cat >> rc.local
echo "Starting lircd"
setserial /dev/ttySx uart none # (if required)
modprobe lirc_sir
/usr/local/sbin/lircd
^D
# exit
$
At this point you have to populate the /etc/lircd.conf
file with the proper
codes for your A/V remote. You should be able to find your remote within the
lirc remote tar file located at
http://www.lirc.org/remotes.tar.bz2. In my case I
extracted the file from remotes/motorola/DCT2000 (gi-motorola-dct2000)
To test the lirc_sir module you can run irw to verify the codes are being received. If everything is configured correctly you should see something similar to the following:
$ irw
0000000000007ff0 00 1 gi-motorola-dct2000
000000000000bff8 00 2 gi-motorola-dct2000
000000000000f7f0 00 ENTER gi-motorola-dct2000
Once you've verified lirc is working you can press CTRL-C to exit irw and configure the channel changing script.
The path to the channel changing script will need to be entered on the mythtv-setup screen for Input Connections.
This csh script will be called each time MythTV needs to change the channel. Below is a copy of the script followed by the corresponding perl script. Make sure both are in your path. Also make sure you leave the #!/bin/csh setting and not change it to Bourne or bash. This will create a frustrating symptom to diagnose where MythTV cannot open /dev/device. Unlike Bourne or bash, csh scripts automatically close parent file descriptors before they start.
$ cd /usr/local/bin
# su
# cat > change_channel.csh
#!/bin/csh
echo "changing to $1"
/usr/local/bin/channel.pl $1 &
^D
# chmod a+x change_channel.csh
# exit
$ exit
See contrib/channel.pl
for the actual file. Copy it to
/usr/local/bin/
The last statement within the perl script is the lirc rc command. This is the command that transmits the code to your cable/DSS box. Make sure to have the IRDA device within a few feet of the box.
By this point, all of the compile-time prerequisites have been installed, mysql is running and has had its initial database setup. It's now time to configure MythTV.
$ su -
# apt-get install libqt3c102-mt-mysql
# exit
Open a shell and decide where you will store your video files. This may
be one directory or multiple directories on the same or different
filesystems. There is no default directory used for new recordings, you
must create at least one storage directory and configure Myth to
use it by running mythtv-setup. If you do not do this, then MythTV
will be unable to record anything. The following example is specific for
/var/video
, but the same instructions would apply for any directory
name you choose to use. See the
Advanced Partition Formatting section for hints on creating a
partition for MythTV.
$ su
# mkdir /var/video
# chmod a+rwx /var/video
# exit
NOTE: The last slash "/" is not required.
TIP: Try not to have your video mount point on the same partition as your root partition, which could lead to the filling up of your root partition with video data if the mount fails. For example:
If /var/video
is created on your root partition and you then
perform a mount of another drive to this directory there won't be any
problems if everything is working the way it should. However, if the mount
fails for some reason, /var/video
still exists, so MythTV will find
the directory and write files to it. If your /
mount point is
space limited, /var/video
will also be space limited, and
it won't take long to fill the partition. This will cause a number of
side-effects, most of them bad. Instead, create subdirectories as the
destination for the storage group.
Your directory structure could then look something like this:
/mnt/video/drive1/video
/mnt/video/drive2/video
Your /etc/fstab
would look like this:
/dev/hdb1 /mnt/video/drive1
/dev/hdc1 /mnt/video/drive2
Because the Storage Group path is /mnt/video/drive1/video
, if the
mythbackend can only find /mnt/video/drive1
it will not
write files to that share.
After you create the desired directory or directories for storing your video files, you will need to add them to the proper Storage Group using mythtv-setup. This procedure is described below in the Storage Groups section.
The first thing to configure is the Master backend system. If you are running multiple backend systems, the Master backend will make all decisions about which programs will be recorded on which tuners. If you have only one backend, then it will be its own master.
The Master backend will always choose the first available tuner in the same order as you add cards through "mythtv-setup". In other words, the second card you add will only be used when there are two overlapping recordings, the third when there are three, and so on. Therefore, you will want to have the greatest amount of disk space on the Master backend because its tuner will always be the first choice. You will then want to add your other backends in the order of your preference for recording.
Because MythTV uses a database to store all configuration variables, part of the bootstrap of MythTV is to indicate the location of the MySQL database server. If the frontend, backend and MySQL database server are all going to be running on the same box, you can continue to the next step. If not, you'll need to change the Host Name in the "Database Configuration" screen of the mythfrontend program.
skip-innodb
set-variable=thread_stack=256k
Run the setup program:
$ mythtv-setup
The backend setup program will start and offer you a number of choices. It is strongly recommended that you go through them in order.
The first question will ask if you wish to clear out your existing configurations for your capture cards. Initially, you should say "YES" so that there are no surprises later.
The next question will ask you if you wish to clear out your video source information. You should answer "YES" to this as well.
Once the graphical setup starts, you'll see that there are six choices
Use the arrow keys to move around, and press the space bar to select which option you wish to configure.
The first screen of the General configuration deals with IP addresses of the system that you're running mythtv-setup on and any master backend you may have. If you've only got one machine, then the default values are fine and you can move to the next page by pressing the space bar. If you need to move around the screen, use the arrow keys to move focus between settings, not the mouse.
If you will be deploying multiple backends, or if your backend is on one system and you're running the frontend on another machine then do not use the "127.0.0.1" IP address.
NOTE: If you modify the 127.0.0.1 address and use a "real" IP address, you must use real IP addresses in both fields, otherwise your frontend machines will generate "Unexpected response to MYTH_PROTO_VERSION" errors.
Changing any of the port settings is very strongly discouraged. (If you do accidentally change them, the defaults are 6543 for the master/backend server, and 6544 for the HTTP requests)
Once you're satisfied with the values, move the focus down to Next and hit the space bar.
The next screen details the Host-specific Backend setup. This is where you will set the specific directory paths for this particular backend. Make sure that you've followed the steps at the beginning of this section and created a directory that exists and that MythTV will have write privileges to. When you're done, press Next to continue, taking you to the Global Backend Setup.
On the Global Backend Setup configure your backend with the appropriate settings. Use the left and right arrow keys to iterate through the choices available on each setting, and the up and down keys to move between settings. Move to Finish when you're done and press the space bar, taking you back to the main configuration screen.
You should have no capture cards defined, so the highlight will be on (New Capture Card). Press space to begin.
Choose the appropriate settings for your particular tuner. Use the arrow keys to move around and to make your choices, and press RETURN when complete. Pressing RETURN will take you back to the Capture Cards screen; if you have additional capture cards in this machine, press the space bar when the highlight is on the (New Capture Card) row to define another card.
If you have made a mistake, you can delete a card by highlighting it and pressing the 'D' key, or you can highlight it and press the RETURN or 'E' key to edit it.
Once you have no additional cards to setup, press ESC.
When you start, the highlight should be on (New Video Source). Press the space bar to begin. The first field asks for the name of the video source. You may choose something easy to remember, like "Antenna" or "Cable". Once you've chosen a name, press the down arrow to move to the next field.
If you're in North America, change the grabber to "SchedulesDirect.org(Internal)", then continue pressing the down arrow to move to the next field. Fill in the username (lowercase only) and password that you have established with Schedules Direct, then move to the "Retrieve Listings" button and press the space bar.
NOTE: You need wget version 1.9.1 or higher to use Schedules Direct.
The mythtv-setup program will contact the Schedules Direct servers and get your account information. Once you're done, you may click the Finish button and skip the next few paragraphs in this document since they only apply to users that are using the external XMLTV script to get their guide data.
If you wish to continue using the XMLTV grabber, then move to the Zip/postal code field and put in the appropriate value.
If you're outside of North America, then some manual interaction will be required with XMLTV. You may need to switch from the MythTV setup program to the console it was run on to interact with XMLTV.
Once you have chosen your provider, press RETURN to continue. XMLTV will now begin collecting the initial data for your location. The screen may blank for a few seconds to several minutes, depending on the load of the listings provider and the speed of your connection to the Internet. Be patient!
You will then be returned to the Video Sources screen. If you have multiple video sources available, such as Antenna, Cable, etc, go ahead and define them all, even if they're not all going to be physically connected to the master backend server. Once you're done, press ESC to return to the main screen.
The final configuration item is Input Connections. On this screen, you will associate the various video sources you defined earlier with a physical input to a encoder card. It's entirely possible that you have multiple tuners, and each tuner has a different input, so on this screen you let MythTV know which device will connect to which input source.
When you start this screen, you should see a listing of the various input
connections available on each of the Capture cards you defined earlier. For
example, you may have a capture card with a tuner, a SVideo and a Composite
connection. If you wanted to associate the tuner (a.k.a., "Television")
with an "Antenna" source you defined in Video Sources, you would move to the
/dev/videodevice (Television) ->
line and press the space bar.
Using the left and right arrow keys will show you the various choices you
have already created for video source. In our case, you would use the
left/right cursor keys until "Antenna" was shown in the Video Source field.
Press down to move to the next setting.
On the connection pane there is a "Scan for channels" button, if you are configuring a digital source such as a DVB card, you need scan for channels and you must do this before pressing the "Fetch channels from listings source" button. You may scan for analog channels on an analog input, but this is not needed.
The other button is called "Fetch channels from listings source". As long as you have a real listings source you should fetch channels from them for analog channels. You can do this for digital sources as well (unless the listing source is transmitted EIT data). If you are using XMLTV, you may need to switch from the MythTV setup program to the console it was run on to interact with XMLTV after pressing this button. It is possible to fetch the channels on the command line using mythfilldatabase. But if you need to do this, you will probably need to re-enter the MythTV setup program to configure the "Starting channel" setting for this source->input connection.
Once you're done, press RETURN to go back to the Input Connections screen. You would then finish associating the video sources to any other hardware devices you have available.
Press ESC to return to the main menu, and press ESC again if you have no further items to configure, thereby returning you to the command line.
The channel editor is used to globally alter channel information, including items like hue, contrast, fine tuning and others. Users in North America shouldn't run the channel editor until you've completed the initial mythtv-setup and ran mythfilldatabase at least once to populate the database.
Storage Groups are lists of directories that are used to hold MythTV recording files giving you a flexible way to allow you to add capacity to your MythTV system without having to use exotic solutions such as LVM, filesystem expansion or RAID Online Capacity Expansion. You can also use Storage Groups to organize recordings and to put recordings of a certain type into one subdirectory.
Storage Groups do not offer redundancy in case of hard drive failure, but unlike LVM, if you lose a hard drive, you only lose the recordings that were on that drive. With LVM, if you lose a hard drive, you will most likely lose everything.
By default, there is only one Storage Group called "Default", and it is used for all recordings and Live TV.
For example, if you have 5 hard drives in your system, your first hard drive
could be your "boot" drive, and the remaining four could be dedicated to
media storage. You could format the drives and mount them as
/mnt/store/d2
, /mnt/store/d3
, /mnt/store/d4
and
/mnt/store/d5
.
Within each mount point, it's strongly recommended that you use a sub-directory and make that the destination path for the Storage Group. See the Tip in the "Configuring the Master backend" section for additional information.
You would then add the four subdirectories you created under the mount
points (/mnt/store/d1/video
, etc) into the "Default" Storage Group.
At recording time, if there were four simultaneous recordings, MythTV would put one recording onto each drive.
Or, say that you originally installed MythTV to a 80GB hard drive, and that hard drive is now filling up. You could simply add a new drive to your system, mount it and update the Storage Group to add additional space.
You may create additional Storage Groups to store specific recordings in their own directories. Storage Groups are edited via the 'Storage Directories' section of mythtv-setup.
You can also create multiple Storage Groups to group recordings together; recording schedules now have an option to specify which Storage Group to use.
MythTV will balance concurrent recordings across the available directories in a Storage Group in order to spread out the file I/O load. MythTV will prefer filesystems that are local to the backend over filesystems that are remote until the local filesystem has 2 concurrent recordings active or other equivalent I/O, then the next recording will go to the remote filesystem. The balancing method is based purely on I/O, Myth does not try to balance out disk space unless a filesystem is too low on free disk space in which case it will not be used except as a last resort.
Storage Groups are global, but can be overridden on a slave backend by creating a local Storage Group by running mythtv-setup on the slave. If a problem occurs and the slave backend is unable to use the desired Storage Group, it will fail back and try the directories defined in the master's Storage Group.
There's also a special 'LiveTV' Storage Group, but the directory list starts out empty. If you add a directory to the Storage Group, it will be used instead of putting LiveTV recordings in the Default Storage Group. This will allow you to put your LiveTV recordings on their own filesystem, which is similar to the old MythTV method which used a RingBuffer for LiveTV. Of course, you don't have to do anything, and Live TV recordings will just go into the Default Storage Group where they'll be the first programs eligible for expiration if the system needs free space for recordings.
Usage information for all Storage Group directories is visible on the mythfrontend status screen as well as the mythbackend status webpage. MythTV is smart enough to determine which directories are on shared filesystems so it should not count free or used space multiple times if you have more than one directory on the same filesystem.
Migrating to Storage groups is very simple: if you have existing recordings in a storage directory, then the system will automatically add that directory to the Default Storage Group. If you then add additional directories to a storage group, the system is flexible enough to check all Storage Groups for a file before deciding that it can't be found, which means that you can use the mv command from the Unix command line to arrange files however you'd like.
This section details the logic of the Storage Group allocation engine.
The current load-balancing preferences (in order) are:
The 'business' of a filesystem is determined by weights. The following weights are added to a filesystem if it is in use for the following things:
If a recording is due to end within 3 minutes, it is not counted against the weight of a filesystem. This is done to account for the pre/post-roll and start-early/end-late settings.
Run the mythfilldatabase
program as directed. The master
backend will obtain guide data for all the video sources you defined during
setup.
NOTE: If you are using Schedules Direct and watching the output messages on the console or the log file it is normal to see a "401 Unauthorized" error followed by a "200 OK" when the connection to Schedules Direct is being established.
From : Sun Jun 13 05:00:00 2004 To : Mon Jun 14 05:00:00 2004 (UTC)
--02:58:01--
http://datadirect.webservices.zap2it.com/tvlistings/xtvdService
=> -'
Resolving datadirect.webservices.zap2it.com... 206.18.98.160
Connecting to datadirect.webservices.zap2it.com[206.18.98.160]:80...
connected.
HTTP request sent, awaiting response... 401 Unauthorized
Connecting to datadirect.webservices.zap2it.com[206.18.98.160]:80...
connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/xml]
[ <=> ] 114,125 63.57K/s
02:58:03 (63.53 KB/s) - -' saved [114125]
Your subscription expires on 08/20/2004 12:00:00 AM
Grab complete. Actual data from Sun Jun 13 05:00:00 2004 to Mon Jun 14
00:00:00 2004 (UTC)
Once mythfilldatabase
has finished, start the master server before
continuing.
$ mythbackend
mythbackend will print information about connections and what it's doing to
the console. If you'd like to see the options that are available for
mythbackend, type mythbackend -h
for help.
As of MythTV v0.21, the available options are:
$ mythbackend --help
Valid options are:
-h or --help List valid command line parameters
-l or --logfile filename Writes STDERR and STDOUT messages to filename
-p or --pidfile filename Write PID of mythbackend to filename
-d or --daemon Runs mythbackend as a daemon
-v or --verbose debug-level Use '-v help' for level info
--printexpire List of auto-expire programs
--printsched Upcoming scheduled programs
--testsched Test run scheduler (ignore existing schedule)
--resched Force the scheduler to update
--nosched Do not perform any scheduling
--nojobqueue Do not start the JobQueue
--noautoexpire Do not start the AutoExpire thread
--version Version information
Running mythbackend as a daemon and using the logfile option will allow you to have mythbackend automatically start up during boot. You can follow the steps outlined in the section called Automatically starting mythbackend at system boot time for configuration steps.
If you enable the -l
parameter, you will want to keep your logfiles
rotated (so that they don't fill up a partition). See the section called
Automatically rotating logs for more
information.
Ensure that you've granted access to the master MySQL database for remote backends as discussed in the section titled Modifying access to the MySQL database for multiple systems and that you have the correct IP address for the database server in the "Database Configuration" screen of the mythtv-setup application on this slave backend.
Make sure that the IP addresses on the General setup screen are accurate. If the slave backend can't communicate with the master backend due to IP address misconfiguration then MythTV will not function properly.
Configuration of a non-master backend follows the same general procedure as that of the master backend, with the exception that you skip over the "Video Sources" step. All possible video sources need to be defined on the master backend system; only the master backend will query a listings provider to obtain guide data for all the non-master backends.
mythfilldatabase --help will give a full listing of the options available.
mythfilldatabase --manual is another option; the manual option will allow you to fine tune channel frequencies and specify which channels will be added to the database.
mythfilldatabase --file is an option if there isn't an XMLTV grabber for your country, but you do have an XML formatted listings file created by some other program.
mythfilldatabase --xawchannels is an option if you have used xawtv to fine-tune your channels and would like to import the fine tuning offsets into MythTV.
mythfilldatabase --refresh-today will only pull guide data for today (in case of late-breaking changes to the schedule).
In order to keep your database filled, mythfilldatabase should be run once a day.
To use MythTV's built-in capability, you'll need to run the mythfrontend Setup option. From the mythfrontend, enter the Setup>General screen and advance to "Mythfilldatabase", the fourth screen. Select the checkbox, then complete the options as you see fit. The mythbackend program will now run mythfilldatabase for you.
While the Schedules Direct TV listings service has several advantages, it does not support grabbing logo icons for the stations you receive. However, there are utilities provided with MythTV which you may use to grab your initial set of icons and to keep them updated if your lineups change.
First, you need to generate or obtain an XML file with the information for your stations.
If you have XMLTV software installed, there is a perl script in MythTV's
contrib/
directory which will generate this file for you. Run the
command:
$ perl mkiconmap.pl
You will be asked for your zip code and the service that you use. If there
are no errors, the iconmap.xml
file that you need for the next step
will be created.
If you do not have XMLTV software installed and do not want to install it
for the sake of this minor task, there is a generic
contrib/master_iconmap.xml
which you can copy and use but this may
not be as complete as using the specific information for your service.
Once you have an iconmap.xml
file, add the icon information to your
database and grab any new icons with the command:
$ mythfilldatabase --import-icon-map iconmap.xml --update-icon-map
Once you have completed configuration of your backend systems, the next step is to configure the frontend client.
When you start mythfrontend for the first time, it will attempt to connect to a configuration database on the local machine. If there is none, a "Database Configuration" screen will appear, and you will need to fill in some details. The "Host name" field needs the backend or database server's IP address or DNS name, and the User or password fields may need to be set to match your database user accounts. After editing those fields, press Enter twice to write these configurations on your local machine, and attempt to connect to the database. If you make any mistakes, the screens will pop up again.
Now that mythfrontend has started up, you should have a number of buttons/choices. Before doing anything, go to TV, then to Setup and configure the frontend client.
The General screen has configuration items that don't really fit anywhere else. The first few configuration items ask you to indicate the number of seconds to record before or after a program, which is useful if the broadcast network or your system clock are out of sync and will help prevent you missing the beginning or end of a program.
To change the value, use the left and right arrow keys to increment and decrement the number of seconds. When you're satisfied with the result, use the down arrow to put the input focus on the Next button or press RETURN to continue to the next page.
The next page has a number of options to do with how channels are displayed on your system. The help text will give you more information. Move the focus to Next and press the space bar to continue.
The last General page sets up some final configuration items. See the help text for more information.
This set of screens is mostly concerned with how MythTV will look on your system. From here, you can choose different themes and set the resolution of your system.
Fairly self explanatory. Note that the alternate program guide does not use the same font settings as defined in Appearance, so if the EPG is unreadable this is where you make the adjustments to fonts, number of elements displayed, etc.
The one configuration item which may cause problems on your system is the "Deinterlace playback" setting. MythTV uses a linear blend algorithm for deinterlacing, which will improve how the image looks on your screen. Deinterlacing requires that your processor support SSE. (Streaming SIMD Extensions, aka "MMX2"). Early Intel Celeron (those that don't use the Coppermine 0.18um core and are usually <600MHz), Pentium Pro and Pentium II CPUs do not have SSE, so make sure you haven't enabled deinterlacing if your processor doesn't support it. If you enable it, and your processor doesn't support SSE, you will get "Illegal Instruction" errors.
To determine if you've got SSE on an Intel processor, you can:
$ cat /proc/cpuinfo
[snip]
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 mmx fxsr sse
Notice the sse at the end of the line - this tells you that this processor will be able to deinterlace correctly.
On an AMD processor, look for "3dnow" in the cpuinfo line; "3dnow" is AMD's implementation of SSE instructions, so if your processor has 3dnow you shouldn't have any issues with deinterlacing.
MythTV provides a means of employing video filters while recording and during playback. These filters can be used to improve or modify the video image, including hiding the effects of an interlaced image or reducing the impact of noise in a poor video signal. The following is a brief introduction to introduce you to the filters that are available in MythTV version 0.20 and higher.
One or more filters can be included in a "filter chain". The filters to be used are identified in a "filter string". A filter string is a group of filter names and parameters separated by commas. To include parameters, the filter name is followed by "=" and the parameter information. There should be no spaces in the filter string. Here is an example filter string:
With parameters: kerneldeint=10:1,denoise3d=12
Without: kerneldeint,denoise3d
Recording filters are set for each individual channel. These may be used when encoding in software (MPEG-4, RTjpeg) but do not apply when using a capture card with hardware encoding such as those supported by the ivtv driver, DVB, HDTV or MJPEG cards. You can run MythTV's "setup" program and select the "Channel Editor". On the first page for each channel, you can enter a filter string in the box titled "Video filters". If you are running "mythweb" on your web server, you can click on "Settings" then "Channels" and enter filter strings in the "videofilters" column.
Playback filters are per-host and apply to any recording you watch from the frontend where filters have been applied. Playback filtering can only work with software decoding so the viaslice, xvmc, and ivtv outputs ignore filters entirely. From "mythfrontend" go to Setup->TV Settings->Playback. Enter your filter string in the box titled "Custom Filters".
"Deinterlace Playback" checkbox.
This implements special behavior needed for the "bobdeint" filter but can also be used to choose any of the deinterlace filters. If you prefer, you may leave this unchecked and include any of the deinterlace filters, other than "bobdeint", in your custom filter chain.
o The "invert" filter
Invert ignores any parameters and inverts the pixel values of the video frames. In other words, a negative image. This would rarely be useful but may be a good example to verify that your filter strings take effect.
o The "linearblend" filter
It is a simple deinterlacing filter that ignores parameters and works by blending adjacent lines. It replaces combing in interlaced video with a less distracting "ghost" image.
o The "bobdeint" filter
This filter splits the interlaced image into two separate fields that can be line doubled then displayed at twice the frame rate. If the display is at the same refresh rate as the recording (59.92Hz NTSC or 50Hz PAL) this will cause each refresh to show objects in motion in a new position with no jagged edges. However, if the display is not synchronous, it will cause flickering or the appearance of the picture moving up and down by one line.
o The "kerneldeint" filter
Kerneldeint is a more complex deinterlacing filter which applies a filter kernel using input from several lines. It generally removes combing without a "ghost" image, sometimes leaving a faint outline of the image from the other field. It is considered to be less distracting to watch than linearblend or no filter at all. It accepts one or two integer parameters separated by a colon.
The first parameter is the filter threshold and defaults to 12. Adjacent lines differing by more than the threshold value are filtered. The second option defaults to 0. If set to a non-zero value, it will cause the filter to skip chroma, and filter only the luminance. It may be useful on some capture cards which do not capture the chroma fields of interlaced video correctly.
o The "onefield" filter
This is a simple one-field deinterlacing filter that uses only one field of the interlaced video. By default it keeps the top field, though passing the parameter "bottom" will cause it to keep the bottom field instead.
This filter is primarily useful for those who display 1080i HDTV signals with a video mode that has 540 pixels vertically. The advantage over other deinterlacing filters is that scenes with motion never show combing or ghosting.
o The "adjust" filter
This filter adjusts the digital values for luma and chroma to ensure that they will fall within the ranges specified in the ITU-R601 standard. By default, this corrects a known problem for the luma range used by bt8x8 chips which causes video to look washed out. If parameters are passed, there need to be exactly six. However, passing a single parameter of "-1" will disable the filter.
1: luma minimum input value (int) 2: luma maximum input value (int) 3: luma gamma correction (float) 4: chroma minimum input value (int) 5: chroma maximum input value (int) 6: chroma gamma correction (float)
The default bt8x8 correction values are equivalent to "16:253:1.0:2:253:1.0". Output ranges are fixed at ITU-R601 values (16-235 luma, 16-240 chroma).
NOTE: If it is not already specified in the filter chain, this filter will be automatically applied when recording with the "bttv" driver.
o The "quickdnr" filter
A fast temporal denoiser. This can take 1, 2 or 4 parameters, each being a value from "0" for the least filtering to "255" for the greatest filtering. With one parameter, the filter will compute the values it should use for all of its variables. Two parameters will set the filter strength for luma and chroma independently. If you are interested in how the algorithm works, you may examine the source code to see how four parameter are used.
o The "denoise3d" filter
A slower denoiser that applies a spatial and temporal low-pass filter. The spatial filter can remove some noise that quickdnr can't, but a more powerful CPU is needed. This filter accepts 3 float parameters:
Reasonable defaults will be selected for omitted parameters. The chroma temporal filter strength is calculated from the other filter strengths.
o The "crop" filter
Covers edges of video with black bars. This helps improve video quality when the edges of the frame are distorted. By default, this removes 16 pixels from each edge. This can optionally take four parameters representing top:left:bottom:right. The number times 16 is the number of pixels to remove so, for example, the default is "=1:1:1:1".
o The "forceyv12" and "forceyuv422p" filters
These force the filter manager to use the given format. You can use one of these at the head of a filter chain to change the capture format. The most likely use would be forceyuv422p to use YUV422P capture on cards with known chroma interlacing problems with YV12.
There are some filters included in the MythTV source code that should not be used:
o The "forcergb24" and "forceargb32" filters
The two RGB formats should not be used because there is no conversion filter for them yet.
o The "convert" filter
It exists but don't use it. The filter manager uses this filter automatically when it is unable to match the input/output formats of two adjacent filters.
o The "postprocess" filter
While this exists in MythTV source code, it is currently not recommended for use.
There are trade-offs to consider when deciding if it would be wise to use a filter. Any processing will modify the original image so you should assess if the filter has made a noticeable improvement to the picture in order to justify the impact of the processing. Adding any filter will inherently increase CPU usage. The impact can vary dramatically depending on your CPU type and speed, the resolution of the recording, which filters you are using and other factors. You can only determine what is right for you through experimentation. However, as a starting point, here are some filter strings that you may find useful:
For typical broadcast stations: "kerneldeint,quickdnr"
For stations with poor signal quality: "linearblend,denoise3d=12"
For synchronous TV-out: check Deinterlace with "Bob (2x framerate)"
Depending on your capture card, MythTV offers different video encoders. The following types of hardware encoding cards are supported:
For DVB and HDTV cards, no further configuration is required after setting up the card using the 'mythtv-setup' program. For all other cards, configuration is done through MythFrontend. Selecting 'Recording Profiles' from the 'TV Settings' screen will list the profiles currently available for the cards in your system. Depending on what types of cards you have installed you may see:
(Create new profile group)
Software Encoders
Hardware MPEG Encoders
Hardware MJPEG Encoders
Transcoders
The '(Create new profile group)' option will allow you to create custom
profiles in case you have multiple backends. Note that custom profiles
are per backend and card type. If you have 2 MPEG-2 encoders in a given
backend system, creating a custom profile will affect both of them. This
option should not be needed otherwise.
The 'Transcoders' group is a little different from the others. Selecting this group will result in a menu with the following options: 'RTjpeg/MPEG-4' and 'MPEG-2'. These types indicate what transcoder options will be used for a given input type (i.e. the 'MPEG-2' settings would be used to transcode MPEG-2 files into MPEG-4. The source of the MPEG-2 stream (DVB, HDTV, or PVR-x50) does not matter. Configuration of the options is the same as below (although any resolution settings will be ignored).
Selecting any of the other options will show a new screen with a list of four profiles:
The Default profile will be used for any recording which does not otherwise have a specific profile assigned. The 'Live TV' profile will be used when watching TV. The remaining two profiles are available for customizing to allow for more precise control over what quality is used for a given program.
Selecting a profile will allow you to adjust the relevant options for that card. The most significant setting is the recording resolution, but you can also choose encoding format, audio format, and tweak other encoder specific properties.
See the What capture resolution should I use? How does video work? section for more information.
MythTV is able to control the LED on the Xbox to indicate backend recording status.
To control the LED, you will need the blink program from the
xbox-linux project, which is installed as /bin/led
on GentooX. On
Xebian (the new Ed's Debian) you must install it yourself. On other
distributions it may or may not be installed as a program called
blink and should be located in your path. (Type which
blink
to see if the program is available.) If you do not have
blink, you may obtain it from the Xbox-Linux project site at
http://xbox-linux.sf.net/. The
program you need is part of the eds_i2c_staff
module in CVS. Note
the spelling.
Once you have installed blink you will need to set permissions.
blink needs write permission to the i2c device to function
properly. There are three methods to accomplish this. First, you could run
mythfrontend
as root, which is the simplest method, but could
potentially be a security risk. Next, you may make the blink
binary setuid root, which allows non-privileged users to run a program with
root capability. This is done by typing the command:
$ su
# chmod u+s /path/to/blink
The final technique would be to set the /dev/i2c/0
device read/write
for all users, but this is the least preferred method.
Now it's time to setup MythTV for Xbox hardware. Enter Setup -> General. On the second page check the 'Enable Xbox Hardware' option. Upon reentering the settings, you should have a new option named 'Xbox'. Within this option you may select the distribution, LED colors for recording and the update interval. If you select GentooX as the distribution led will be used as the blink binary name, otherwise, blink is used. Colors should be self explanatory. The update interval determines how often the frontend should poll the backend to determine if the status has changed.
The keys.txt
file describes what the various keyboard commands are.
If you have loaded mythweb, you may change the default keys to your liking.
Arrow keys | used to move the highlight point around |
ALT-F4 | exit out of the application |
Space/Enter | take action on the item under the highlight point |
P | play in both "Watch a Recording" and "Delete a Recording" |
D | delete in both "Watch a Recording" and "Delete a Recording" |
U | to view details for the currently selected show on the Watch or Delete screens, EPG, "Program Finder", "Fix Scheduling Conflicts" and search results screens |
O | to list the upcoming episodes for the currently selected show on the EPG, "Program Finder", "Program Recording Priorities", "Fix Scheduling Conflicts" or search results screens |
I | edit recording options from the EPG, "Program Finder", "Program Recording Priorities", or "Fix Scheduling Conflicts" screens. From the Playback and Delete screens, 'I' presents options for recorded shows such as Auto Expire or Stop Recording. Pressing 'I' while on the Recording Options screen will take you to the Advanced Recording Options screen. |
Up or down | keys change the channel |
num pad | Type a number to enter a channel number or jump amount (HHMM format) |
P | pause / play. You may also add an explicit keybinding for 'Play' through MythWeb, returning you to normal speed if you are in slow motion, rewind fast forward or pause mode. |
C | change inputs on TV Tuner card |
ESC | quits |
I | puts the On-screen Display up again. During playback, 'I' toggles between position and show description info. If a jump amount is entered, jump to that position. |
M | brings up the electronic program guide (Grid) -- see the EPG section |
Page Up | jump back the configured number of minutes (default is 10) |
Page Down | jump ahead the configured number of minutes (default is 10) |
End or Z | skip to next commercial break marker |
Home or Q | skip back to previous commercial break marker |
T | toggle close caption support Pressing 0-9 (preferably 3 times) + T changes teletext page and turns on teletext. |
F | rotate between the various Picture Adjustments (Colour, Hue, etc.) While Picture Adjustment is on-screen, use Left and Right arrows to adjust. These settings adjust the look of the video playback, and are independent of the G-key settings used at record-time. |
[ or F10 | decrease volume |
] or F11 | increase volume |
| or F9 | toggle mute |
/ | jump to the next "favorite" channel |
? | mark/unmark the current channel as a "favorite" |
U | increase the play speed |
J | decrease the play speed |
A | Adjust time stretch (speed up or slow down normal play of audio and video |
W | cycle through zoom and fill modes: 4:3 aspect ratio, 16:9, 4:3 Zoom (like Pan and Scan), 16:9 Zoom, and 16:9 Stretch (eliminates black sidebars in TV signal) |
F8 | toggle the sleep timer 30m->1hr->1hr30m->2hr->Off |
CTRL-B | Jump to the beginning of the recording / ringbuffer |
+ | Switch between audio streams |
Left | (if a jump amount is entered) to jump back that amount |
Right | (if a jump amount is entered) to jump ahead that amount |
Without the stickykeys option selected | |
Left | rewind the configured number of seconds (default is 5) |
Right | fast forward the configured number of seconds (default is 30) |
< | starts rewind mode as if stickykeys are selected |
> | starts fast forward mode as if stickykeys are selected |
With Stickykeys option selected | |
Right | starts fast forward mode |
Left | starts rewind mode |
In fast forward or rewind mode: | |
Left/Right | increases the ff/rew speed |
0 | plays at normal speed, but leaves the time indicator on screen |
1 or 2 | plays back more slowly than normal ff/rew speed (1 is slowest) |
3 | plays back at normal ff/rew speed |
4-9 | plays back faster than normal ff/rew speed (9 is fastest) |
Space | exits fast forward or rewind mode |
While video is paused: | |
Left | rewind 1 frame |
< | rewind 1 second |
Right | advance 1 frame |
> | advance 1 second |
G | rotate between the various Picture Adjustments (Colour, Hue, etc.) for recording. These values affect the look of the resulting .nuv file, and are independent of the playback picture settings. While Picture Adjustment is on-screen, use Left and Right arrows to adjust. |
H | Channel history. Each repeat steps back through the previous channels. |
O | Turns on 'Browse' mode, allowing user to browse channels and program info while watching current show FullScreen. |
Y | switch between multiple capture cards. NOTE: you will lose your LiveTV buffer on your current card. Useful for different-sourced cards (such as Dish Network on one, HDTV over-the-air on another card.) |
Left | browse program prior to current listed program |
Right | browse program following current listed program |
Up | browse program on channel above current listed channel/program |
Down | browse program on channel below current listed channel/program |
/ | browse program on next favorite channel |
0-9 | enter a channel number to browse |
Space/Enter | change channel to channel of current listed program |
R/r | Toggle recording of current program (cycles through types) |
ESC/O | Exit Browse mode |
Left | Move video to Left |
Right | Move video to Right |
Up | Move video Up |
Down | Move video Down |
PageUp | Zoom In |
PageDown | Zoom Out |
Space/Enter | Exit Zoom mode leaving picture at current size and position |
ESC | Exit Zoom mode and return to original size |
V | toggle Picture-in-picture on or off |
B | toggles the window focus (lets you change channels on the PiP window) |
N | swaps the two channels by changing channels on both cards |
Space/Enter | set a bookmark at that point. Next time you start the recording, you will automatically jump forward to this point and clear the bookmark. |
X | queues the current recording for transcoding |
O | brings up menu to allow toggling settings such as Commercial Auto-Skip, Auto-Expire, etc. |
D | exits the current recording and displays the Delete menu |
E or M | enters/exits edit mode. |
In edit mode | |
Left/Right | move forward and backward |
Up/Down | alter the amount of time you jump forward and backward. Increments are: nearest cutpoint, nearest video keyframe, 1 frame, 0.5 seconds, 1 second, 20 seconds, 1 minute, 5 minutes, and 10 minutes. |
PageUp/PageDown | move forward and backward to the nearest cut point |
< or > | move forward or backward by 10 times the normal jump amount |
Space/Enter | allows you to set or delete a cut point |
Z | loads the commercial skip list (if one exists) into the cutlist |
C or Q | clear all cut points in the cutlist |
I | Inverts the cutlist |
Arrows | are used to move the highlighted program point around |
A, D, S, W | perform the same as left, right, down and up |
PageUp/PageDown | move the channel list up or down a page |
Home/End | move the highlight left or right by one day |
Ctrl+Left or < | move the highlight left by one page |
Ctrl+Right or > | move the highlight right by one page |
9, 3, 7, 1 | (like a numeric keypad) perform the same as PageUp, PageDown, Home and End |
I | bring up more information about a show, and allow you to schedule a recording. If you select "Record this showing" while watching Live TV you can "Instant Record" a program. |
Space/Enter | allow you resolve conflicts or change overrides. If the program is not already scheduled to record, it will instead act like pressing 'I'. |
M | when on a channel will change to that channel |
ESC or C | exits without changing the channel |
R | change the current item from Recording/Not-Recording. Successive keypresses cycle through the scheduled recording type list. |
X | change the channel to the currently selected channel without leaving the EPG (Most useful in the alternate EPG) |
? | mark/unmark the current channel as a "favorite" |
/ or 4 | toggle the guide listing between all channels and filtered "favorites" |
Right | increases priority value |
Left | decreases priority value |
1 | sorts by title |
2 | sorts by priority |
Home/End | toggle sort priority |
I | edit recording options |
ESC | commits changes and exits |
1 | show all recordings |
2 | show only important recordings |
Home/End | toggle show showing all/important |
I | edit recording options |
Space/Enter | resolve conflict or override |
Home | change to the previous view if applicable |
End | change to the next view if applicable |
M | select another view if applicable. In the title and description search popup, press M again to edit or delete the selected view. |
D | on a custom profile group displays a popup to delete the group |
In the Watch Recordings screen, Recording Groups allow you to separate
programs into user-defined categories, such as "Kids", "Alice", "Bob", etc.
This can be used to reduce clutter, or to segregate content if you use the
PIN function.
M | change the view or to set a group password |
I | move a program from one Recording Group to another |
1 or F1 | Meaning of the icons |
/ | Tags a recording. Tagged recordings can be played either in order or shuffled and deleted as a group. You can also change the recording group for several recordings at once by tagging them and using the Menu (m) button, selecting "Playlist options", then "Change Recording Group". |
? | Clear the tagged list. |
If you are using MythTV with just a remote control then it is suggested that you map the remote control keys as described below. Your remote control may not have the same set of keys as those named below, the names are only a suggestion that roughly correspond to the function.
If you are adding new key bindings to the program then consideration of this suggested list will help users with remote controls.
This list assumes a minimal remote control that only has 20 keys, nearly all
features can be used with this configuration. If you have more keys then you
can access all of the features. With only 16 keys most features are usable.
REMOTE CONTROL | LIRC KEYSTROKE | FUNCTION |
0 - 9 | 0 - 9 | channel selection, EPG navigation, ff/rew speed setting (with stickykeys) |
Left Arrow | Left | scroll left, rewind |
Right Arrow | Right | scroll right, fast forward |
Up Arrow | Up | scroll up, channel change up |
Down Arrow | Down | scroll down, channel change down |
Select / OK / Play | Space | Select item, play (with stickykeys) set bookmark |
Cancel | Escape | Cancel, quit playback |
Menu | m | EPG (from watching TV) edit (from playback). |
Pause | p | Pause |
Other key 1 | i | Information |
Other key 2 | c | Change tuner card input |
MythTV is "themeable", meaning that the visual appearance of the program can be modified by the user without re-compiling or altering the program functionality. Download the MythThemes tarball from the website and untar it:
$ tar -xjf myththemes-0.21.tar.bz2
$ cd ~/myththemes-0.21
$ qmake myththemes.pro
$ su -
# make install
# exit
$
The theme will now be available in the mythfrontend Appearance section.
A script for adding Pay Per View information into the MythTV database for DishTV subscribers is available at http://www.mythppv.com/.
MythTV supports changing the channel on an external tuner. If you have
an external tuner, such as a DirecTV or digital cable set top box, you
should add /usr/local/bin/changechannel
to your Input Connections in the
mythbackend configuration GUI.
However, there is not changechannel program per-se, because this is
going to be dependent on what sort of external tuner you have. Look in the
contrib/channel_changers
directory for a number of programs and
scripts which may be used to change channels. Once you find one which
works, copy it to /usr/local/bin/changechannel
.
Feel free to browse some of what sort of hardware is available at http://store.snapstream.com/accessories.html, or if you wish to assemble your own, rather than purchase, the following may be helpful: http://www.dtvcontrol.com/ for cable pinouts.
What does the MythTV Shutdown/Wakeup function do? The scheduler on the Master backend (MBE) keeps track of the idle status of the entire MythTV system, including the Slave backends (SBE). If it considers the system to be idle, and thus ready to shutdown, it sets the wakeuptime to the time of the next recording and then proceeds to shut down all Slave backends and then itself. Once it is time to begin recording, the Master backend and the Slave Backends are automatically woken up. This system allows MythTV to record like a normal VCR, thereby conserving power when not in active use.
In order to use the Shutdown/Wakeup function there must be some method of waking up the Master backend. There are any number of solutions, but we will discuss in detail two possibilities:
The scheduler keeps track of the idle status of the MythTV system. To determine whether or not the MythTV system is idle, the following conditions must be met for a period of time defined in the "Idle timeout (secs)" parameter.
If we get to this idle state the Master backend will set the wakeuptime using the "Set wakeuptime command", which is the same for WOL and BIOS wakeup. The Master backend will then shut down the Slave backends and itself using the "Server halt command".
One caveat is that the scheduler tries to guess if the Master backend was started by a wakeup call or by the user. If it thinks it was woken up by a user, it blocks shutdown until a client connects to the Master backend, after which it will behave as described above. To disable this feature, unset "Block shutdown before client connected" in the mythfrontend Setup->Setup->General screen.
Once it is time to startup the system, the Master backend is woken up first and will wakeup the Slave backends using the "Wake command for slaves". At this time, there is no support for starting only the required Slave backend, so all Slave backends will startup.
There are a number of options that are used to control the Shutdown / Wakeup feature.
Shutdown/Wakeup Options:
The "WakeOnLan settings": These settings have nothing to do with using BIOS or WOL wakeup, they are the same for both.
To use WOL to wake your Master backend you will need a WOL capable Master backend, a machine that runs 24/7 which can execute an at-job and nc (netcat) on the Master backend. I use some little bash scripts to make my DSL router wakeup my mythbox if required.
Replace $SERVER and $PORT with your own settings! On my Master backend I have a script that gets called as 'setwakeuptime command' which looks like the following:
#! /bin/sh
echo $@ | nc $SERVER $PORT
This simply cats the parameters (that is $time) to my 24/7 server. On my
$SERVER I have (x)inetd listening on $PORT starting a little script which
cares about setting the at-job. The following additions are necessary on the
$SERVER:
If you use inetd:
In /etc/inetd.conf
add:
mythwake stream tcp nowait mythtv /usr/sbin/tcpd /usr/local/bin/mythwake
If you use xinetd, save the following as mythwake in your
/etc/xinet.d/
directory:
service mythwake
{
socket_type = stream
wait = no
user = mythtv
protocol = tcp
id = mythwake
server = /usr/local/bin/mythwake
}
and add the following to /etc/services
:
mythwake $PORT/tcp
Finally, /usr/local/bin/mythwake
looks like:
#! /bin/bash
#this should be a command to wake your server
WAKECMD="#!/bin/sh\n /usr/local/bin/wakeMBE"
#first we need to delete all wake jobs in queue
for JOB in atq | cut -f 1 ; do
atrm $JOB;
done
#now we read the date from 'nc'
read date;
#now set the atjob
echo -e "$WAKECMD" | at $date ;
SECURITY WARNING:
Be sure to secure $SERVER:$PORT from untrusted networks, because this
allows 3rd parties to run arbitrary code on your server!
Since I don't use this, I cannot say much about this. If your motherboard supports any wakeup tool you have to call that tool as "Set wakeuptime command" with the "Wakeup time format" suitable for that tool.
If your MySQL server and your Master backend are not on the same machine,
you can have the Master backend wake your MySQL server using WOL. You will
find the settings for this in the second page of the mythtv-setup program,
or at the end of mysql.txt
. The meanings are the same as
discussed in "The WakeOnLan settings" above.
If, for example, one of the Slave backends is also your desktop computer,
you could simply use a little script as 'server halt command' which first
calls /sbin/shutdown -t TIMEOUT
where TIMEOUT is a value sufficient
for you to react. You could then popup a window using *dialog, asking for
permission to shutdown. If you cancel the shutdown, simply call
/sbin/shutdown -c
.
If you get "nvram-wakeup: /dev/rtc: Device or resource busy" your
set-wakeuptime-script should stop the program that uses /dev/rtc
before
setting the wakeuptime.
To use this feature you must first enable it in Settings>General>General
The network control listens on port 6546, as demonstrated below:
$ telnet basement 6546
Connected to basement.
Escape character is '^]'.
MythFrontend Network Control
Type 'help' for usage information
---------------------------------
# help
Valid Commands:
---------------
jump - Jump to a specified location in Myth
key - Send a keypress to the program
play - Playback related commands
query - Queries
exit - Exit Network Control
Type 'help COMMANDNAME' for help on any specific command.
# help jump
Usage: jump JUMPPOINT
Where JUMPPOINT is one of the following:
channelpriorities - Channel Recording Priorities
channelrecpriority - Channel Recording Priorities
deletebox - TV Recording Deletion
deleterecordings - TV Recording Deletion
guidegrid - Program Guide
livetv - Live TV
livetvinguide - Live TV In Guide
mainmenu - Main Menu
...snip...
# exit
$
Please note that this feature only allows one connection at a time, so any new connections will automatically terminate prior ones.
The MythTV master backend is responsible for managing the schedule for all TV tuner cards on the master and any slave. Its job is to search the TV listing for the shows you have requested and assign recordings to the TV tuner cards. If none of the shows that you've chosen overlap, it simply records all of them. However, if there are shows where the beginning and end times overlap, the scheduler follows rules that you've specified or makes logical decisions about what would be best if you haven't expressed your preference. Further, the "Upcoming Recordings" page allows you make specific decisions about what you really do and don't want to record.
When you choose a show that you would like to record from the Options Page, there are eight different types of rules to help the scheduler find which showings you would like to record.
By default, all shows you select have equal value to the scheduler. There are a set of rules to make good choices when two or more shows are in conflict. However, priority values let the scheduler know what you prefer so that it can set the schedule based on your preferences.
Initially, recording rule priority values are set to zero. You may choose to leave everything at "0" and let the scheduler follow rules to guess what you might prefer when there are conflicts. However, if you have one or two favorite shows, you may want to increase the priority value so the scheduler will know that you would prefer recording these over other shows. You might use certain values to rate shows so that all favorites are 2. good shows are 1 and extra 'filler' shows are all -1 for example. You could sort each title on the "Set Priorities" page to have a unique value so the scheduler can know which show you'd prefer versus any other show. The choice and style are entirely up to you. However, the more information you give to the scheduler, the more likely it will make the choices you would prefer in the first place.
The scheduler choices are based on the total priority for a showing by adding up all priority factors that match the showing. By default, most of these factors are "0" but you may use any combination to express your likes and needs.
The scheduling priority of a show may also be used to determine auto-expiration of recordings when disk space gets full (see Auto-Expire, below).
Singles will record without regard to duplicate matching.
The standard recurring methods of All, Channel, Weekly and Daily use the descriptive information in the TV listings to try to record only one showing of each unique episode. However, This goal is sometimes complicated by the fact that the stations may not include a description for a specific episode but use a generic description for the series instead. When there is a generic description, the default behavior is to assume that it may be an episode that you have not seen and to record it for you. One of the duplicate matching options is "Record new episodes only". If this is selected, listing that have an original air date of more than 14 days earlier are considered repeats and are not eligible to record. Generally, generic episodes will be marked as repeats also.
Because of generic episodes and other situations, MythTV offers an alternative approach where shows may be recorded by choosing from multiple showings even when the descriptive information is not reliable. All of the "Find" record types look for matching titles in the listings. If there is a showing with specific episode information and that episode has recorded before, that showing is marked as previously or currently recorded. The scheduler will then choose to record the earliest non-conflicting showing from any of other remaining showings regardless of the descriptive information. Generally, Find One is most useful for movies or specials and the Find Daily and Find Weekly rules are best for news or current events shows that are repeated. However, these may be useful in other situations where the standard recording rules may not work correctly.
As you add more shows that you would like to record, the scheduler will eventually encounter conflicts. If there are two shows at the same time and you have two or more TV tuner cards, both shows will record. However, if there are more shows than cards, the scheduler will have to decide what it thinks it should not record based on the information you have given. If you see an unexpected situation you are not "stuck" with the scheduler's choice. You can still tell the scheduler exactly which shows you do want to record and/or don't want to record in any situation.
Here are the actual decisions made by the scheduler as it fills in the schedule.
Setup->TV Settings->Recording Priorities->General has a checkbox for "Reschedule Higher Priorities" which tells the scheduler to try to be a little smarter in certain situations. If this is checked, the scheduler will look for situations where a show cannot record because all inputs for the channel are used for higher priority shows. It will check to see if any of the other shows could be recorded at another time so that the conflicting show can be recorded in its place.
Generally, this is a good strategy but there are tradeoffs. If a higher priority show is postponed, you will not get to watch it until it is recorded in the later timeslot. There is also a risk that the TV listings may change and the later showing may go away. In this rare case the higher priority show may never record. On the other hand, if you do not use this option you will miss recording some lower priority shows unnecessarily unless you manually make similar changes.
By using Reschedule Higher Priorities, the scheduler will do a better job of recording as many of your shows as possible when left unattended. It will also be easy to see that shows have been marked to record at a later time. You can then decide for yourself when you would prefer to record the first showing by clicking "Record anyway".
The Manage Recordings->Upcoming Recordings page is your control center for the MythTV scheduler. Unlike other DVR systems, this one page gives you all of the information and tools you need to see all of your alternatives and make whatever adjustments you desire.
The upper half of the screen has a scrollable box listing items that match your record rules sorted by time. The lower half shows the details for the highlighted item. There are two 'views' available. Press "1" to include all of the items that match record rules even if they do not need to be recorded. Press "2" to focus on just the things that will record and items that may need your attention. The message in the upper right-hand corner will remind you when there are conflicts that would prevent one or more shows from being recorded.
The items in the list are colored in the record color for things that will record, white for things that may need attention, gray for those that do not need to record and yellow when there is a time conflict. Items at the top of the list may also be highlighted indicating that the recording is in progress.
Along with the channels, start times and titles, the right-hand column has a status code. Numbers indicate which card number has been assigned to record the show. Letters are used to indicate the reason that something will not be recorded. Just below the box is a short status message for the highlighted item that indicates the type of record rule that was matched, the "total priority" for this showing and a one or two word explanation of the status code. If you press SELECT, you will see more information about the status.
There are a few status codes that may require your attention. "C" indicates that there are more overlapping shows to record than there are TV tuners to record them. "L" indicates that the scheduler found that it may be better to record a later showing of this episode. These states happen as a result of your choices and should normally reflect your preferences. However, you may notice situations where you would like to modify the scheduler's initial choices.
The first thing you can do is to highlight an item and press INFO to see the recording options page. From this page you can change the record rule type, the duplicate matching rules, or raise or lower the priority to resolve whatever problem you noticed.
Additionally, you can treat any individual showing as an exception that you do want to record or don't want to record. To use these "override" features, highlight the item and press SELECT. You will see a message explaining the current status and at least an "OK" button to exit without making changes.
For items scheduled to record, there will be a button for "Don't record" which will prevent recording this showing but will still allow the same episode to record in the future. If there is episode description information, you may also see a button for "Never record". This prevents recording this showing and tells MythTV to remember that this is an episode that you've seen or don't need to see if it is ever in the TV listings again.
For items that are not scheduled to record, the message will describe the reason and in the case of "C" or "L" it will include a list of the shows that are scheduled to record instead. For any item that could potentially be recorded there will be buttons for "Edit Options" and "Add Override". "Edit Options" will allow you to change the options for the existing record rule such as raising the priority so that the show will record. These changes would apply to this and all future showings that match this record rule. "Add Override" will allow you to set options that apply to the specific showing without affecting the recurring record rule.
If you return to an override page after an override has already been set, you will also see a "Clear Override" to undo your changes. This option makes it very easy to try out some "what if" attempts when deciding on your best strategy in a difficult situation.
For a recording in progress, there will be a "Change Ending Time" button. This will take you to the options page for a Single or Override or create an Override if it is a recurring rule. Here you can go to the Recording Options section to change the program end time offset. If you extend the end time so that it overlaps upcoming recordings, the schedule will change to accommodate the new end time. This may cause a conflict or later showing even for a show with higher priority. Therefore, it is a good idea to check your schedule after changing the end time of a recording in progress.
Each recording rule can be configured with a different recording profile. For example, colorful cinematography can be configured with a "High Quality" profile, while 'talking heads' interviews shows can be configured with a "Low Quality" profile. These recording profiles need to be configured before using them (see Recording, above).
For organization of the "Watch Recordings" screen and the MythWeb interface, recordings can be assigned into "recording groups".
This allows you to select any special "Storage Groups" you may have created to determine where recordings from this rule should be stored on your disks. The "Default" storage group is always available.
This selects a set of pre-configured playback parameters which can be created and edited in Setup->TV Settings->Playback Groups. When the recording is played, the values from this playback group will be used. This allows you to choose a default time stretch value, skip and jump amounts appropriate for this type of television program.
MythTV will "autoexpire" old recordings to make room for new recordings when disk space gets filled up. This option can be set to "Don't allow auto expire" to prevent these recordings from being automatically deleted when disk space fills up.
The default setting is for all scheduled recordings to be eligible for auto-expiration; this can be changed in the Settings->TV Settings->General page by manipulating the "Auto Expire Default" checkbox.
The default auto-expire policy is "Oldest Show First"; the oldest recordings are deleted first. The "Lowest Priority First" method chooses to expire the lowest-priority recordings first.
An episode limit can also be configured to limit the maximum number of episodes recorded of a single series, to restrict that series' disk usage. If this is set, you can further decide what to do when this limit is reached; either stop recording that series, or to delete the oldest episodes in favor of the new ones.
Select whether or not to automatically flag commercials for these recordings. Commercial Flagging parameters can be set in Setup->TV Settings->General.
Select whether or not to automatically transcode recordings to save disk space. Before using this, you must first enable auto-transcode in the recording profile and configure the transcoding parameters; see Recording, above.
User Jobs allow you to configure up to 4 custom commands to run on recordings. They can be configured in mythtv-setup. The following tokens have special meaning when used in the User Job commands:
MythTV's "Custom Record" feature gives you unlimited control for creating specialized search recording rules to meet your needs. It allows you to choose your criteria to search for matching shows based on any of the information in the program listings, channel information, time functions and more. This goes beyond the capabilities of any other DVR system and it is unlikely that this level of scheduling customization will ever be available in any commercial DVR system.
Go to Schedule Recordings->Custom Record. This page, helps you build a database search one clause at a time. Each added clause further limits which showings will be matched in the TV listings. You can test the search at any time and when you are done, you can save your search as a recording rule.
To familiarize yourself with how you can create custom rules, create a simple rule to record "Nova" only in primetime.
The first item at the top of the page allows you to edit an existing rule or create a new rule. Leave it on "<New rule>". Arrow down to the third item which says "Match an exact title". Right and left arrows would allow you to select any of several prefabricated pieces or full examples but leave it on the default for now. Arrow down to "Add this example clause" and press SELECT (Enter or Space on a keyboard). The large text box should now show:
program.title = 'Nova'
As you have probably guessed, this says that we want to search for all
programs with the title "Nova" regardless of the time, day, channel, etc.
If you do not receive a PBS station that carries "Nova" or would like to use another title, edit the title by pressing the down arrow to highlight the text box and right arrow over the the word "Nova". If you are using a keyboard you can simply delete the four letters and type a different title between the quotes. With a remote control, you can do 'cell phone' style text entry with the number pad. The delete key is the "X" in the grouping for "1", zero is grouped with "9" and "0" acts as the "Caps Lock" key. You can press ENTER in the text box to popup a virtual keyboard.
Note: the text box honors many familiar Emacs control keys. It is also possible to cut and paste text into the text box so you can edit with a favorite editor or insert a rule sent in email or from other sources.
In any case, choose a title that is shown both in primetime and late night or daytime. Next, click the "Test" button. You should see a list of the upcoming episodes for "Nova" just as if you had clicked the Upcoming button for "Nova" elsewhere in MythTV.
Press ESC to go back to the Custom Record page. Move to the example selector then press the right or left arrows until you find "Only in primetime". Click "Add this example clause". You should now see:
program.title = 'Nova'
AND HOUR(program.starttime) >= 19
AND HOUR(program.starttime) < 23
Click "Test". You should now see a shorter list with only the showings that
begin between 7PM and 11PM. To create a rule for this, press ESC to go back
to the custom page and move to "Rule Name:" then type "Nova" or anything
else you would like. This is only a label and will not affect the search
results. Once a name has been entered, the "Record" button will light up.
Click this to enter the recording options page. If you named it "Nova" the
title will say "Nova (Power Search)". Set whatever options you would like
then click "Save these settings". You now have a special rule to record
"Nova" but only when it is shown in primetime.
You can make further modifications to this rule by returning to the Custom Record page then press the right or left arrow keys on "Edit Rule:" until you find "Nova". You can experiment and test but the saved rule will not be updated until you click "Record" then "Save these settings".
To remove this, or any other rule, you can go to the "Recording Priorities" page, arrow down to the title, press Enter and change the the recording type to "Do not record this program" then "Save these settings".
MythTV stores TV program information in a database and uses the Structured Query Language (SQL) to access the data. Information about each TV program is stored in the 'program' table and information about each TV station you receive is stored in 'channel'. These two tables are used in the scheduler queries and their columns are available to be used in your rules. The rules you create are stored in 'record'.
Normal rules in MythTV simply match the title in the rule with the titles in the 'program' table. MythTV also has search rules for "Titles", "Keywords" and "People". These store the key phrase in the description column of the rule and includes them in specialized SQL replacements for the normal title check. There is also a type called "Power Search" which takes the raw SQL in the description as the replacement for title matching.
Custom Record is a tool to help you build valid SQL for Power Search rules. You do not need to be a SQL expert to use Custom Record because the examples are known to work correctly and are usually self-explanatory so you can choose the pieces you need then modify them. Many powerful solutions to unique problems are possible by combining the examples. With some creativity and some knowledge of SQL, the possibilities are limitless.
The example clauses marked "complete example" are actual rules that have been used to address specific problems. You may find that some of these are useful for you as-is or with slight modifications. These show off how powerful custom rules can be but there are also several simple idioms that you may find useful for many of the shows you would like to record.
Wait for a known title -- If there is a movie that you anticipate will be televised in the coming months but is not yet in the listings, you can select "Match an exact title", edit the movie title, click "Record" then choose "Record one showing of this title". The rule will wait weeks, months or years until this title shows up in your listings then it will record one showing. These rules have no impact on the scheduler throughout the day and only take a tiny fraction of a second when the master backend starts or when the listings are updated.
Silence series out of season -- "Celebrity Poker Showdown", for example, will have new episodes for a while then long periods where reruns are shown dozens of times per week. By checking the previously shown flag you can create a rule that will only match new episodes. Therefore, your schedule won't be polluted with dozens of entries marked as "Repeat" or "Previously Recorded".
program.title = "Celebrity Poker Showdown"
AND program.previouslyshown = 0
This allows you to keep rules for your favorite shows that are dormant while
out of season but will spring back to life when new episodes appear.
Choose showings on certain days -- Several cable stations will show their highest rated shows a dozen on more times per week. However, the scheduler only needs two or three choices to do a good job of making a flexible choice.
program.title LIKE "Celebrity Fit Club%"
AND DAYNAME(program.starttime) = "Sunday"
This says to choose any showing of an episode that hasn't been recorded
when it appears on Sunday. This prevents all the other showings during the
week from being listed in the schedule.
Notice the word "LIKE" and the "%" at the end. This does wildcard matching so that this would match even if the title ended with "2". "III" or ":Revenge of the Snapple Lady". This can be useful where the title may change from one season to the next like "Survivor: %", "Big Brother%" or "The Amazing Race%".
As you experiment, it is possible that you may misplace a quote or mistype a word. If there is a mistake when you press "Test" or "Record" you will see an error message returned from the database. This will usually give you a good idea about what needs to be fixed. However, for more subtle MySQL syntax errors, you can find more information in the documentation at http://dev.mysql.com/doc/mysql/en/. This contains a lot of information that can be useful for Power Search rules such as the "Date and Time Functions". There are many other good resources for SQL on the Web.
While the example clauses demonstrate how to use many of the data columns, you can get a more complete list of all the columns that are available by using a MySQL client program:
$ mysql -u mythtv -pmythtv mythconverg
mysql> describe program;
mysql> describe channel;
This will show the names of all of the columns along with their type and
default value. Most are easy to understand but a few need some explanation
in order to use them effectively with Power Search.
FIND_IN_SET('SURROUND', program.audioprop) > 0
would be true for the programs where the surround sound bit is present.
To see all of the available attribute names:
$ mysql -u mythtv -pmythtv mythconverg
mysql> SHOW COLUMNS FROM program LIKE '%prop'\G
mysql> SHOW COLUMNS FROM program LIKE 'subtitletypes'\G
MythTV is designed to allow recording television programs from one or more service providers, or video source, on one or more video input from each provider. Some inputs may not be allowed to record at the same time as each other while others may record simultaneously.
A television station may be broadcast on more than one channel from one provider or may be available on channels from two or more providers. If a TV station is available from more than one source, the video quality or type of broadcast may differ. Therefore, MythTV allows you to control how you would like the scheduler to select the best channel and input for a show which is available on more than one input or more than one channel.
A single TV capture card may have video connections to more than one of its inputs and each input may be from a different service. The card may only be allowed to record from one of these inputs at one time because there is only one encoder on the card that actually captures the content.
These are mutually exclusive meaning that only one input or the other may record at a given time but not both.
Usually, inputs on different cards can record at the same time but two or more inputs on the same card cannot. However, there are cases where inputs on different cards should not be allowed to record at the same time, for example, a firewire card and s-video analog card connected to the same set top cable box.
|
| coax +--------------+ firewire ------------------+
| .-=|Cable Provider|=------------=| Card 1 input 1 | HDTV
| | |HD/Cable STB |=--. +-----||||||||||||
| | +--------------+ | s-video ------------------+
| | `---------=| input 2 | Digital
|wall | coax | Card 2 |
|=---=^=------------------------------=| input 3 | Cable
| +-----||||||||||||
Input 1 and input 2 receive content from the same set top box and the channels can not be tuned independently. Therefore only one of these two inputs should be used at any given time. The solution is to create an "Input Group" with mythtv-setup in "Input connections". Including these two inputs in the same Input Group will tell the scheduler that these are mutually exclusive and may not record at the same time. Inputs 2 and 3 are automatically mutually exclusive because they are on the same card so there is no need to create an Input Group for these inputs.
Cards such as the Hauppauge PVR-500 are able to record as two cards simultaneously because it has two MPEG-2 encoders and each encoder appears as a separate device. DVB cards may be allowed to capture content from more than one channel at a time if the channels are in the same MUX.
Although we may be accustomed to thinking of a broadcast station and its channel number as being synonymous, stations and channels are very different things. A "station" is in a building with wires and employees. A "channel" is a carrier frequency or digital ID that carries a broadcast stream. The same TV station may be broadcast over different frequencies in different cities or by different providers in the same city. The same frequency will carry different stations in different cities. In the digital realm of DVB and ATSC (HDTV), it is even possible for a single frequency to carry multiple program streams but each of these streams of content are actually different channels that the receiving devices can 'tune' to independently.
In MythTV, a "video source" is a set of channels from a provider, or over the air, that can be received by an input. The set defines the channels and the broadcasters primarily associated with each of those channels. If you have more than one device or cable from the same provider connected to more than one card and input, you only need to create one video source in mythtv-setup then associate that one source with each of these connected inputs. This will let your MythTV system know that the same channels and their TV listings are available to be recorded from any of these inputs.
For example. A MythTV system may have two capture cards. Both have a cable connected to the coaxial connectors. These cables carry the local cable TV service. In mythtv-setup, the user should create one "Video source" called "Cable", for example. Under "Input connections", "Cable" should be associated with each of the two tuner inputs. The scheduler will then know that any program on one of the channels from the "Cable" source could be recorded by either card from the card's tuner input.
You need to create a different video source for each provider or service that has a different set of channels. Each input with a connection to that service should be associated with the video source for that service so the system will know which set of channels are available for each of your active inputs.
Let's say that this user also has one digital cable set top box. The digital cable service carries channels that are not available over basic cable. The user would create another source called "Digital". This set top box is connected to the second card by S-Video so under "Input connections", "Digital" is associated with the S-Video input of card 2. The system would then know that programs on channels from the Digital source can only be recorded from this input. Further, the scheduler understands that it can only record one show at a time from card 2 so it can assign Cable or Digital shows to the card but not both at the same time.
Some TV stations may be broadcast over a channel from the Cable source and also broadcast over a channel from the Digital source. Note that two channels carrying the same primary station may not have the same TV listings due to carrying the primary station part time, including local programming exclusive to one of the channels, the channels may be in different timezones, etc. Listings information must be associated with each channel even if two or more channels report that they carry the same station.
By default the scheduler chooses the first (lowest numbered) input which has a showing of the scheduled program as it fills the schedule. If a lower priority show is on at the same time as a higher priority show that has been assigned to input 1, then input 2 will be used next and so on. Therefore, configure your best card and input first and next best card and input second. There may be differences in the type or brand of capture card, signal quality from the cable, system resources such as disk space, CPU, etc. By configuring your best input first, more recordings, and your highest priority recordings, will use that input.
A common situation is that a newer and better card is added last. For example, you may initially setup your system with two analog cable cards and then add a HDTV card. If NBC is on a cable channel and "The Apprentice" is shown in HDTV on an NBC HD channel, the scheduler would still prefer analog inputs 1 and 2 over the new HD input 3.
So, if you'd like the scheduler to prefer a new source, the simplest thing is to run mythtv-setup and "Delete all capture cards" then enter your cards and inputs in your preferred order. This will not remove your sources and channels - you want to keep those and only renumber your cards and inputs. In this example, once the changes have been made and the Master Backend is restarted, the scheduler would then choose "The Apprentice" in HD on the new input 1 and only use the analog inputs (now numbered 2 and 3) when the HDTV input was occupied with another show.
If a recording rule is a type that can record from any channel, "The Apprentice" would match for any channel that shows episodes which may include CNBC or BRAVO. However, for Single, Timeslot, Weekslot or Channel rules, "The Apprentice" would only match showings on the selected station as identified by the "callsign". For example, KVBC is an NBC affiliate on channel 3. Channel 733 is KVBCDT which is HDTV over cable from the same station. If a Single record rule was set for "The Apprentice" on KVBC channel 3, it could not record this showing from KVBCDT on 733. If 733 was chosen when the rule was saved, channel 3 could not be used to record.
However, the "Channel Editor" in mythtv-setup can be used to change the Callsign for channel 733 to "KVBC". MythTV would then understand that both of these channels are from the same broadcast station. Assuming the HDTV input was input number "1", "The Apprentice" would record on 733. If, however, this HDTV input already had a higher priority show assigned to it in that time slot, "The Apprentice" would be assigned to KVBC channel 3 on input 2.
Having two channels with the same callsign may affect how program information is shown in mythfrontend. If two sources have the same callsign and channel number, the program guide and program lists will only show one instance of the channel number and callsign. If the same callsign is on two different channel numbers, both will be shown and if two sources have different callsigns with the same channel number, both of those will be shown.
Continuing with the example above, the Electronic Program Guide would include rows for both "3 KVBC" and "733 KVBC". If channel 3 KVBC was also included in the Digital cable source, the EPG would still include just one line for "3 KVBC" even though there are two different channels, Cable and Digital, with this identification. Regardless of how these are displayed and which "KVBC" channel you select to add a rule to record "The Apprentice", the scheduler will pick the best channel, source and input to record "The Apprentice" on "KVBC".
The fundamental concept to keep in mind is that the MythTV scheduler will choose the lowest numbered input available when showings have the same priority. If there are factors that cause two showings of the same show to have different priorities then the higher priority showing will be considered before the showings with lower priority.
"Input Connections" in mythtv-setup includes a box to set "Input priority" which defaults to "0". If a value is set, that amount will be added to the "total priority" for showings on that input. This can be used to influence using favored cards or not using less favored cards unless necessary.
Let's say the "The Apprentice" is on at 8:00pm with a priority of 3. "Who Cares" is -2 and an episode is shown at 8:00pm then repeated at 11:00pm. The scheduler would assign "The Apprentice" to card 1 and "Who Cares" to card 2 at 8:00pm. If the input priority for the input on card 2 was changed to -1, "Who Cares" would have a total priority of -2 for showings on card 1 and -3 for showings on card 2. The scheduler would assign "The Apprentice" to card 1 at 8:00pm and "Who Cares" to card 1 at 11:00pm when the better card is available. If there was another higher priority show at 11pm, the next best choice for "Who Cares" would be card 2 at 8pm with the priority -3.
Card 1 and 2 have input priority "0":
Time Title Priority Card Status
8:00 The Apprentice +3 1 Will Record
8:00 Who Cares -2 2 Will Record
11:00 Who Cares -2 1 Earlier Showing
Card 2 with input priority "-1":
Time Title Priority Card Status
8:00 The Apprentice +3 1 Will Record
8:00 Who Cares -3 2 Later Showing
11:00 Who Cares -2 1 Will Record
Card 2 at "-1" but higher priority shows at both 8 P.M. and 11 P.M.:
Time Title Priority Card Status
8:00 The Apprentice +3 1 Will Record
8:00 Who Cares -3 2 Will Record
11:00 The Daily Show +1 1 Will Record
11:00 Who Cares -3 2 Earlier Showing
Note the two different effects, each of which may be what you desire depending on circumstance. If input priorities are equal, shows will record at the earliest time if any input is available. If input priorities differ, shows may be postponed to a later time in order to record on the best input.
Priority can be added for individual channels (remember, frequencies from a video source, not stations). This can be used to tell the system that you generally prefer the content of the station on a channel over the formats of other stations. You may want to raise the priority for ESPN, SciFi, Comedy Central or lower the priority for CSPAN, CourtTV, etc. If the same station is on two different channels, you can use channel priority to have the same effect for these channels as input priority would have for whole inputs.
For example, say CNN is on analog channel 20 and there is an HD CNN on 750. You may not want to tie up the HD input for news originating in standard definition. Under TV Settings->Recording Priorities->Channel Priorities you could set channel 750 to -1. The scheduler would then prefer to record CNN shows on any analog channel 20 before considering using 750 only when there are no analog inputs available.
For an even finer grain of control, there is a per rule option to specify which input should be preferred for showings that match the rule. By default, this adds +2 to the priority for showings on the specified input.
For illustration, let's say there will be a Space Shuttle launch on CNN that will be broadcast in high definition. Adding a rule to record the launch with priority "0" should default to channel 20 on input 2. Channel 750 would have this at -1 due to the channel priority set in the previous example. If on the recording options page for this rule, the "Scheduling Options" had the input set to prefer the HD input on card 1, then the showing on channel 750 for this input would be increased in value by +2 for a total of +1 and would be the best choice for this launch coverage. While this one rule would prefer the HD input with channel 750, all other rules that match shows on CNN would still prefer channel 20.
Note that this will not work properly if the preferred input priority does not out weigh differences in input and channel priorities. The value of the priority boost when this option is chosen defaults to +2 but can be modified in TV Settings->Recording Priorities->Set Recording Priorities.
In the preceeding fictious example, the Space Shuttle launch is broadcast in high definition and a preferred input is selected to give preference to the HD input. However, TV listings from zap2it.com through the DataDirect service may allow this to work without having to use this per rule option.
In Settings->Recording Priorities->Set Recording Priorities there is an option for "HDTV Recording Priority". This value will be added automatically if the listings for the show have the "hdtv" flag set. DataDirect will set this flag for shows known to be broadcast in HDTV on HD channels. However, the flag is not set for standard definition channels. This is another example of the listings being different for the same station on a different channel. If the HDTV priority is set to "+2", the shuttle launch would automatically have a total priority of +1 so that channel 750 would be preferred over channel 20 for this HDTV broadcast.
Channel "750 CNN" at priority "-1" and HDTV broadcast priority at "+2":
While Input, Channel, and HDTV Priority can be used for indicating a preference for certain programs and inputs, there may be circumstances that cannot be resolved easily with these standard features. MythTV version 0.21 includes a feature for "power priority". The Custom Priority editor in mythfrontend's "TV Settings" screen is similar to Custom Record, however, Custom Priority allows you to create specialized power priority factors to influence scheduling decisions.
For example, the 'program.closecaptioned' flag can be used in a similar way as the 'program.hdtv' flag.
Priority Rule Name: Closed Captioned priority
Priority Value: 2
program.closecaptioned > 0
This will raise the priority of shows marked with "CC" over those that are not by applying the "Priority Value" whenever the SQL fragment evaluates to true. If the expression evaluates to false for a showing, the "Priority Value" is not applied.
Priority Rule Name: Priority when shown once
Priority Value: 1
program.first > 0 AND program.last > 0
The "first" and "last" flags for an episode will only be set for the same showing when there is only one showing of that episode in the current TV listings. This rule would raise the priority in these cases so that these shows would have an advantage to record in their only available time slot.
Priority Rule Name: Input 1 signal quality
Priority Value: -1
cardinput.cardinputid = 1 AND
channel.channum IN (3, 5, 39, 66)
A common issue with two or more analog capture cards is that one of the cards may have more interference on some channels than the same channels on other cards. This example gives a disadvantage to the channels in this list but only for the first input. Therefore, a show on channel 39 would choose input 2 or 3 if possible but for channels not in this list, input 1 is still the first choice.
The Custom Priority editor includes many example fragments and complete examples that can be used or you can create your own to suit your needs.
MythTV has a rich set of plugins available. Once you have downloaded the tarball, untar it and run the configure script:
$ tar -xjf mythplugins-0.21.tar.bz2
$ cd mythplugins-0.21
$ ./configure --help
Usage: configure [options]
Options: [defaults in brackets after descriptions]
NB: all --enable-* options can be reversed with --disable-*
Generic options:
--help print this message
--enable-all Enable all options
--enable-opengl enable OpenGL (Music and Gallery) [default=no]
MythBrowser related options:
--enable-mythbrowser build the mythbrowser plugin [default=yes]
MythDVD related options:
--enable-mythdvd build the mythdvd plugin [default=yes]
--enable-transcode enable DVD ripping and transcoding [default=no]
--enable-vcd enable VCD playing [default=no]
MythGallery related options:
--enable-mythgallery build the mythgallery plugin [default=yes]
--enable-exif enable reading of EXIF headers [default=no]
MythGame related options:
--enable-mythgame build the mythgame plugin [default=yes]
MythMusic related options:
--enable-mythmusic build the mythmusic plugin [default=yes]
--enable-fftw enable fftw visualizers [default=no]
--enable-sdl use SDL for the synaesthesia output [default=no]
--enable-aac enable AAC/MP4 audio file decompression [default=no]
MythNews related options:
--enable-mythnews build the mythnews plugin [default=yes]
MythPhone related options:
--enable-mythphone build the mythphone plugin [default=yes]
--enable-festival enable festival TTS Engine [default=no]
MythVideo related options:
--enable-mythvideo build the mythvideo plugin [default=yes]
MythWeather related options:
--enable-mythweather build the mythweather plugin [default=yes]
The sections detailing configuration of the plugins assume that you are
already in the ~/mythplugins-0.21/
directory.
Note that a single configure script now does configuration for all modules. By default, it will compile all modules. If you do not wish to compile a module, either because it is of no use to you, or you do not have the prerequisites, the simplest course of action is to go through the various sections below, satisfying the prerequisites, and then compile all modules at once.
For example, you would only like to compile and install MythGallery and MythMusic. For MythGallery, you would like to use the EXIF data in the .JPG file to present additional information onscreen. For MythMusic, you would like to enable support for the opengl and FFT visualizations. The command line would look like:
$ cd ~/mythplugins-0.21
$ ./configure --disable-all --enable-opengl --enable-mythgallery --enable-exif --enable-mythmusic --enable-fft
$ qmake mythplugins.pro
$ make
$ su -
# make install
# exit
$
For simplicity, the examples below will disable compilation of all other modules other than the one being discussed.
MythWeb allows you to use a web page to control various aspects of your MythTV system. MythWeb is a separate application, but it's dependent on MythTV being installed and operational.
Mythweb is a part of the mythplugins package. See MythPlugins for instructions on downloading the tarball. The next step depends on whether your distribution has a web server and if you have PHP support.
Mandriva has apache and PHP pre-packaged, so installation is quite simple.
# urpmi apache2 apache2-mod_php php-mysql
# chkconfig --level 345 httpd on
# /etc/rc.d/init.d/httpd restart
$ cd ~/mythplugins-0.21/mythweb
$ su
# mkdir /var/www/html/mythweb
# cp -r . /var/www/html/mythweb
# exit
$
By default, MythWeb uses an Apache .htaccess
file to restrict
access to the website and to configure some variables.
To create the password file for Apache (if your system doesn't already have one), you could do something like this:
# cd /var/www
# htpasswd -c htpasswd mythtv
New password:
Re-type new password:
Adding password for user mythtv
See the man page for htpasswd for more examples.
To access the web page, open a web browser and use http://[name or ip address]/mythweb/
MythWeb allows you to configure which keys are bound to which actions within MythTV. If you'd like to reset this back to the default, execute the following command:
$ echo "delete from keybindings ;" | mysql -u mythtv -pmythtv mythconverg
If you find yourself wedged into a theme that isn't working, open your
web browser and go to site:
http://mythweb_name_or_ip_address/mythweb/settings.php?RESET_THEME=yes
MythGallery is a photo and slideshow application. MythGallery is a separate application, but it's dependent on MythTV being installed and operational.
MythGallery is a part of the mythplugins package. See MythPlugins for instructions on downloading the tarball.
There are a number of transitions available, some requiring OpenGL support. You will also need to install a TIFF library. Under Mandriva, you would perform the following command:
# urpmi libtiff3-devel
Once you have satisfied the prerequisites for your distribution, install the application:
$ cd ~/mythplugins-0.21
$ ./configure --disable-all --enable-opengl --enable-mythgallery
$ qmake mythplugins.pro
$ make
# su
# make install
# exit
$
The configuration for MythGallery is accessed through the main Setup option
in mythfrontend. Make sure you set your pictures directory to wherever
you're storing your photos.
The controls for MythGallery can be found in the README that comes with the application.
When you first start MythGallery, you will see a thumbnail view of any folders and pictures in the Gallery Directory you specified in setup. If this is the first time you have accessed this directory, the thumbnails will be generated on the fly. If the Gallery Dir is writable, these thumbnails will be cached thus speeding up future access. On the left is a greyed-out menu of options.
Use the arrow keys to select a folder or picture to open/view with the Select key, or use the Menu key to toggle access the menu on the left. The menu options are as follows:
The import path in the setup dialog is a colon separated list of directories and/or executable files. When the import key is pressed, a new directory (the destination directory) under the current directory will be created and the import path will be searched. If the item in the import path is a directory (the source directory), the contents of that directory will be copied to the destination directory. If you would like the source directory to be that of a removable device, it might be a good idea to use autofs. See the automount howto at www.linuxdoc.org for info on how to get it working.
If the item in the import path is an executable file, MythGallery will attempt to execute it with the destination directory as its sole argument. Be careful when using executable scripts that the script runs unattended (doesn't need user intervention) and returns properly, otherwise it could create the appearance of MythGallery hanging (e.g. running smbclient and prompting for password). Also be sure that scripts have executable permissions set.
Here is an example script that a user may want to run on import:
#!/bin/csh
if ($#argv == 0) then
echo "Usage: $0 dest_dir"
exit
endif
cd $argv[1]
# get stuff over the network
wget http://www.somesite.dom/dir/file1.jpg
wget http://www.somesite.dom/dir/file2.jpg
wget http://www.somesite.dom/dir/file3.jpg
# stuff that requires manual module loading and/or fs mounting
modprobe camera_module
mount /dev/camera /mnt/camera
cp /mnt/camera/* $argv[1]
umount /mnt/camera
rmmod camera_module
# perform some processing
foreach pname (`ls *.jpg`)
jpegtran -flip vertical $pname > $pname.new
mv $pname.new $pname
end
MythGame can used as a frontend to start any emulator that your host OS runs. This is an example of how to set up xmame on Linux. http://www.mameworld.net/ is an excellent resource for all things mame.
Installation overview:
To keep things organized, create the following directories for xmame to use
in /usr/local/share/xmame
: hiscore, roms, and snaps.
$ mkdir -p /usr/local/share/xmame/{highscore,roms,snaps}
NOTE: There may be pre-packaged versions of xmame available for your distribution. Check http://x.mame.net/download.html for the latest version.
Download the source to xmame from http://x.mame.net/download/xmame-0.103.tar.bz2
$ wget http://x.mame.net/download/xmame-0.103.tar.bz2
$ tar -xjf xmame-0.103.tar.bz2
$ cd xmame-0.103
Edit the Makefile with your favorite editor. Adjust the options as required for your system.
$ joe Makefile
Then make and install xmame
$ make
$ su
(enter password)
# make install
# exit
After mame has been installed, we need to create some defaults.
$ mkdir ~/.xmame
$ cp docs/xmamerc.dist ~/.xmame/xmamerc
Because some ROMS work better with different display toolkits, or possibly even older versions of xmame, it's convenient to keep all of your xmame binaries and to rename them to include the version number. MythGame allows you to match individual roms to preferred binaries.
$ su
(enter password)
# mv /usr/local/bin/xmame.x11 /usr/local/bin/xmame-0.103.x11
# exit
NOTE: Depending on how you compiled xmame, you may have
xmame.X11, xmame.SDL or xmame.xgl based on what
display toolkit you used. Also, you may need to remove and recreate
xmamerc
after upgrading since some of the default options may have
changed.
Edit ~/.xmame/xmamerc
to include your paths.
### Fileio Related ###
rompath /usr/local/share/xmame/roms
snapshot_directory /usr/local/share/xmame/snaps
cheat_file /usr/local/share/xmame/cheat.dat
hiscore_file /usr/local/share/xmame/hiscore.dat
hiscore_directory /usr/local/share/xmame/hiscore
history_file /usr/local/share/xmame/history.dat
mameinfo_file /usr/local/share/xmame/mameinfo.dat
Confirm that xmame works before running it inside MythTV. Place
your ROM in the /usr/local/share/xmame/roms
directory you created
earlier.
NOTE: There are three public domain ROM sets available at http://www.mame.net/downmisc.html
Launch xmame with your game of choice. In this example, we are using Gauntlet.
$ xmame gauntlet
Some basic mame keyboard commands:
5 = Insert coin
1 = Player 1 start
arrow keys = movement
left control = button 1
left alt = button 2
SPACE = button 3
ESC = exit
TAB - menu
~ to adjust Volume
< and >
The following files allow you to add extra functionality. Place them
into /usr/local/share/xmame
- catver.ini
is a catalog of categories and versions of popular mame ROMs.
Useful for keeping large libraries of ROMs organized.
It may be downloaded from http://www.catver.com or http://www.mameworld.net/catlist
- Screenshots aka "snaps"
These may be downloaded from http://www.classicgaming.com/mame32qa/
Screenshots are displayed when you are browsing your ROMS in mythgame.
Unzip and place them in /usr/local/share/xmame/snaps
- history.dat
Download from http://www.arcade-history.com/ This file fills in a bit of background about each ROM.
- hiscore.dat
Download from http://www.mameworld.net/highscore/
- Cheats
Download from http://cheat.retrogames.com/
MythGame is part of the mythplugins package. See the instructions in the Downloading and Compiling section to obtain mythplugins.
Switch to the mythplugins directory:
$ cd ~/mythplugins-0.21
Compile and install mythgame:
$ ./configure --disable-all --enable-mythgame
$ qmake mythplugins.pro
$ make
$ su
(enter password)
# make install
# exit
Start mythfrontend and navigate to Utilities/Setup > Setup > Media
Settings > Game Settings > Game Players. Select (New Game Player)
.
To set up a new player for xmame enter the following:
Player Name: xmame-0.103.x11 (Name by which you want your emulator or game called)
Type: xmame (This is used for display purposes only and does not affect the function of your system)
Command: xmame-0.103.x11 -vidmod 1 -fullscreen (Path and name of binary + any optional parameters)
Rom Path: /usr/local/share/xmame/roms (This tells MythGame what directories to scan for roms to be used with this emulator)
ScreenShots: /usr/local/share/xmame/snaps (This tells MythGame what directories to scan for snapshots to be used with these roms)
Working Directory: (Directory to change to before launching game or emulator. Blank in our case ignores this setting)
File Extensions: (List of all file extension to be used for this emulator. Blank menas any file under the Rom Path)
[] Allow games to span multiple roms/disks (will treat game.1.rom game.2.rom game.3.rom as one game)
MythMusic has a number of prerequisites that must be satisfied before it is operational. Depending on your distribution, some of these prerequisites can be satisfied through the various package managers. If your distribution doesn't offer pre-compiled versions of the software below, then follow the generic instructions for manually compiling and installing the software.
The prerequisites for MythMusic are:
These instructions are for distributions which don't have pre-compiled versions of the software necessary to run MythTV.
Download MAD from http://www.underbit.com/products/mad and install:
$ tar -xzf mad-0.15.1b.tar.gz
$ cd mad-0.15.1b
$ ./configure
$ make
$ su
# make install
# exit
Download TagLib from http://developer.kde.org/~wheeler/taglib.html and install:
$ tar -xzf taglib-1.4.tar.gz
$ cd taglib-1.4
$ ./configure
$ make
$ su
# make install
# exit
Download libogg and libvorbis from http://www.xiph.org/downloads and install in a similar manner to the above packages.
Download FLAC from http://flac.sourceforge.net and install:
$ tar -xzf flac-1.1.2.tar.gz
$ cd flac-1.1.2
$ ./configure
$ make
$ su
# make install
# exit
$
Download libcdaudio from http://libcdaudio.sourceforge.net and install:
$ tar -xzf libcdaudio-0.99.12p2.tar.gz
$ cd libcdaudio-0.99.12p2
$ ./configure
$ make
$ su
# make install
# exit
$
Download cdparanoia from http://www.xiph.org/paranoia/down.html.
$ tar -xzf cdparanoia-III-alpha9.8.src.tgz
$ cd cdparanoia-III-alpha9.8
$ ./configure
$ make
$ su
# make install
# cd /usr/lib
# ln -sf libcdda_interface.so.0.9.8 libcdda_interface.so
# ln -sf libcdda_paranoia.so.0.9.8 libcdda_paranoia.so
# exit
$
Mandriva has a number of the prerequisites available on the installation CD. Some of the software you're going to need will have to be obtained from the "contrib" or "cooker" development repositories. Applications downloaded from "cooker" come from the development branch, so there may be issues with some software. It isn't recommended that you mix cooker and release-level software.
urpmi is the simplest tool for installation of packages from the command line. The difficult part is the configuration, but this has been made easier at the following website: http://addmedia.linuxfornewbies.org/ The website will allow you to choose a mirror site and then present the command-line configuration text for that mirror. You will most likely need to add a "Contrib" mirror to your setup. Once you have done that, you can proceed. If urpmi prompts you about other modules that need to be installed to satisfy dependencies, say "Yes".
# urpmi libmad0 libmad0-devel libflac4 libflac4-devel libcdaudio1 cdparanoia
# urpmi libcdda0 libcdda0-devel libvorbis0 libvorbis0-devel
# urpmi libcdaudio1-devel libid3tag0 libid3tag0-devel
Additional visualizations have been added to MythMusic. If you wish to use these, there are some prerequisites you must install prior to compiling.
fftw
may be obtained from
http://www.fftw.org/. In Mandriva it may be installed by
typing:
# urpmi libfftw2 libfftw2-devel
OpenGL
should be installed on practically all distributions.
However, you will need the devel module. In Mandriva it may be
installed by typing:
# urpmi libMesaGLU1-devel
SDL
may be obtained from
http://www.libsdl.org. In Mandriva it may be installed by
typing:
# urpmi libSDL1.2 libSDL1.2-devel
Red Hat provides packages for several of the prerequisites, making installation very simple. Of the prerequisites, Red Hat provides packages for Vorbis, cdparanoia, SDL, and OpenGL (which you probably already have installed). To install these all at once, simply type (all on the same line):
$ up2date --solvedeps libvorbis libvorbis-devel vorbis-tools cdparanoia-devel cdparanoia-libs cdparanoia SDL-devel SDL
If you get the following message: "None of the packages you requested were found, or they are already updated" it probably means you already have all of those packages installed.
You must install the remaining packages, (MAD, FLAC, libcdaudio and optionally fftw) manually following the installation directions above. When installing fftw do not use the rpm package offered on the website because it will cause an error, so use the source package instead.
Once all the prerequisites have been installed, you can proceed with compiling MythMusic.
$ cd ~/mythplugins-0.21
$ ./configure --disable-all --enable-mythmusic --enable-fftw --enable-sdl --enable-aac
$ qmake mythplugins.pro
$ make
$ su
# make install
# exit
Configuration of MythMusic occurs in two places. The main mythfrontend Setup is for global MythMusic configuration. Go to the Setup/MythMusic/General Setup screen and adjust it for your particular configuration.
The second configuration screen is within the MythMusic program and will allow you rescan your music library, etc.
Here's some explanation about the Ignore_ID3 and The NonID3FileNameFormat:
If Ignore_ID3 is set to TRUE, MythMusic will try to determine the Genre, Artist, Album, Track Number, and Title from the filename of the mp3 file. The NonID3FileNameFormat variable should be set to the directory/file format where the mp3 files are stored. For instance, I store mine in the above shown Genre/Artist/Album/Track format. MythMusic will then use this information to fill in the proper fields when it populates the musicmetadata table rather than searching for an ID3 tag in the mp3 file.
The files can be laid out in any format, such as:
Genre/Artist/Album/Title Artist/Genre/Album/Title Artist/Album/Title (with Genre left as Unknown)
The track number is optional but can be specified with the title by using the TRACK_TITLE keyword instead of TITLE. If TRACK_TITLE is used, then the filename can have a space, hyphen, or underscore separating the track number from the track title. Keywords are case insensitive, so if you specify GENRE it's the same as Genre in the format field.
The Ignore_ID3 option does not disable the code that determines the track length, just the portion that tries to read ID3 info.
MythMusic is fairly simple to use. It is recommended that you insert the CD before selecting "Import CD". You should also ensure that your system doesn't try to automount the CD and begin playing it automatically.
Here's some information on playlist management:
Q: How do I create a new playlist? A: Using the MythMusic "Select Music" menu option, setup the playlist as you normally would by adding songs or other playlists as needed. When you are ready to save the new playlist, highlight "Active Play Queue" at the bottom of the selection tree and hit the "i" key. This will pop up a menu allowing you to name and save the new playlist. You can also hit Enter to bring up the popup on the Active Play Queue. This does not work on the playlists above, as Enter is obviously bound to checking/unchecking the boxes. Any number (i.e. keypad on remote) will also bring up the menu in both cases.
Q: How do I enter the playlist name in the text field without a keyboard? A: Use the keypad number keys (bound to your remote) to select letters quasi-cell phone style. Keys 2-9 work pretty much like any cell phone text entry. 1 cycles through a few special characters, delete, and space. 0 is like a CAPS LOCK. Hard to describe, fairly easy to use. You will soon be able to specify the cycle timing in a Setup screen. You can type fairly quickly through a combination of jumping around the number keys AND hitting a non-number key (right arrow is particularly good for this) to force the current character.
Q: How do I edit a playlist? A: Highlight the playlist in the selection tree and hit the "i" key then select "Move to Active Play Queue" in the popup. You can now modify the "Active Play Queue" like normal, adding songs and playlists by selecting them from the song tree. When you are done, highlight the "Active Play Queue" in the selection tree and hit the "i" key then select "Save Back to Playlist Tree". And whatever you were editing as your Active Queue before you moved an existing playlist "on top" of Active reappears. Think of Active has having a push on, pop off capability, but with a depth of only 1.
Q: How do I delete an item from a playlist? A: Highlight the item in the selection tree and hit the "d" key.
Q: How do I rearrange the songs in my playlist? A: Highlight a song and hit the "space" bar, the song will now have pair of red arrows in front of it. Use the up and down arrow keys to move it around in the playlist. When you have it where you want it, hit the "space" bar again.
Q: How do I delete a playlist? A: Highlight the playlist in the selection tree and hit the "i" key then select "Delete this Playlist" from the popup.
You may run into errors when running MythMusic.
The full text of the message will say:
databasebox.o: Couldn't find your CD. It may not be in the freedb database. More likely, however, is that you need to delete /.cddb and /.cdserverrc and restart mythmusic. Have a nice day.
If you get this message, you should go to the home directory of whatever user MythMusic is running as and type:
rm .cdserverrc
rm -rf .cddb/
These files aren't automatically deleted because of a conscious design decision by the author that programs that automatically delete things are bad.
The files are used to locally cache CD lookups. If you are re-inserting CDs, your machine will not actually have to go out to the Internet to determine what is on them. However, the URL used to access the freedb database has recently changed, so the stale information in the files from previous runs of MythMusic would cause the error above. Once the files have been deleted the stale information will be gone and your local database will be rebuilt as you use CDs.
MythWeather is a part of the mythplugins package. See MythPlugins for instructions on downloading the tarball.
$ cd ~/mythplugins-0.21
$ ./configure --disable-all --enable-mythweather
$ qmake mythplugins.pro
$ make
$ su
# make install
# exit
MythWeather uses MSNBC.com as its source for weather data and weather.com for its radar image.
These are the keyboard commands for MythWeather:
Left Key Goes back one page, and extends the time spent
on the page you are on.
Right Key Goes forward one page, see above.
Space Pause, wait on the current page until space is hit
again.
Numeric Keys You can check other weather by keying in other ZIP codes.
Enter Key Switch between Celsius and Fahrenheit. Can also
be used a way to force a data update.
"m" Key Resets the location to the database default, then updates the data.
"i" Enter / Save settings
ESC Exit the settings screen without saving / Exit the program
MythWeather also has an "Aggressiveness" setting. This affects how long MythWeather waits for data from the msnbc.com website before timing out. If you are on a slow connection, or have a slow DNS, or MythWeather just doesn't seem to be working and you've already tried everything else, then try increasing the aggressiveness level parameter. This parameter is inverse; a higher number actually means that MythWeather will be less aggressive, and will therefore wait longer before timing out.
MythWeather will print debugging information on the terminal. If you wish
to see additional debugging information while MythWeather is running, run
mythweather from the command line with as mythweather --debug
You may also force mythweather to re-run the configuration by starting it on
the command line as mythweather --configure
. These two options are
mutually exclusive.
MythVideo is a part of the mythplugins package. See MythPlugins for instructions on downloading the tarball.
MythVideo will allow you to use an external program to watch media files that are not directly supported by MythTV.
$ cd ~/mythplugins-0.21
$ ./configure --disable-all --enable-mythvideo
$ qmake mythplugins.pro
$ make
$ su
# make install
# exit
See MythVideo's README
file for additional information.
MythDVD is a part of the mythplugins package. See MythPlugins for instructions on downloading the tarball. MythDVD is an application which rips DVDs and makes them available for use with MythVideo. You may also transcode the DVD content from MPEG-2 to other formats which should greatly reduce the amount of space the DVD material takes up on your hard drive.
MythDVD has a number of prerequisites to enable transcoding functionality. If you only wish to play DVDs rather than convert them to something like MPEG-4 or xvid you may skip the prerequisite installation step.
Mandriva users may install the prerequisites this way:
# urpmi libdvdread3 libdvdread3-devel a52dec liba52dec-devel
# urpmi mplayer ogle xine
Assuming that you've added a PLF mirror, you may also load the rest of the
prerequisites using the following command:
# urpmi xvid xvid-devel fame libfame0.9-devel transcode libdvdcss
In the example below, we have enabled support for transcoding and for VCD playing. You may remove these options if you don't need them.
$ cd ~/mythplugins-0.20
$ ./configure --disable-all --enable-mythdvd --enable-transcode --enable-vcd
$ qmake mythplugins.pro
$ make
$ su
# make install
Transcoding ("ripping") a DVD requires you to run the Myth Transcoding Daemon (mtd). To ensure that mtd is configured correctly, you should first test it at the command line.
$ mtd -n
The last line of text should show something like:
mtd is listening on port 2342
This indicates that mtd is ready for use. Once you've successfully
tested mtd in the foreground, type CTRL-C to stop mtd. You may
then start it as a background (daemon) process.
$ mtd -d
Running mtd as a daemon will allow you to automatically start it during the
boot process. For example, you may add mtd -d
to your
rc.local
file, or you can adjust the script/steps outlined in the
section called
Automatically starting mythbackend at system boot time to start mtd instead of mythbackend.
MythNews is a part of the mythplugins package. See MythPlugins for instructions on downloading the tarball. MythNews is a RSS reader.
$ cd ~/mythplugins-0.21
$ ./configure --disable-all --enable-mythnews
$ qmake mythplugins.pro
$ make
$ su
# make install
Some compile errors are worse than others. If you get an error that doesn't abort the compilation, and says something like:
cc1plus: warning: changing search order for system directory
"/usr/local/include"
cc1plus: warning: as it has already been specified as a non-system
directory
then it shouldn't be a problem.
If you get an error like /usr/bin/ld: cannot find -lXext
, the
compiler is telling you that you don't have XFree86-devel installed, or that
your distribution hasn't set it up correctly. This needs to be fixed before
MythTV will compile.
This error happens when there's a missing link in the
/usr/lib/qt3/mkspecs
directory. There are two ways to fix this
error:
1. Create the link manually:
$ su
# cd /usr/lib/qt3/mkspecs
# ln -sf linux-g++ default
and then restart the compile,
or
2. Run qmake mythtv.pro in the mythtv directory. Rerunning qmake will create a new Makefile for you, however this still doesn't fix the root cause of the issue, which is that your distribution didn't create the symlink for you when the qt3 package was installed. The first choice is the better solution.
You didn't set your QTDIR
. Re-read the section on
Setting up paths.
This is most likely to be caused by an overheating processor rather than an actual programming fault within gcc.
Without details, the developers will not be able to determine if you have discovered a genuine code-bug, or if the problem is with your system. In order to determine what's going on, you must recompile MythTV with debugging support and run MythTV within gdb, the GNU debugger. Note that, on OS X, some data is provided without going through these steps. See /Library/Logs/CrashReporter/MythFrontend.crash.log
Re-run the configure script and add --compile-type=debug
to any previous configuration options you may have used. Check the
config.log
file if you have forgotten.
Now, you need to clear out the old versions of the software to ensure that you're running with the debugging code, then compile and install.
$ make distclean
$ ./configure --compile-type=debug
$ make
$ su
# make install
# exit
At this point, you now have debug-enabled software ready. To make sure that
you don't forget to type a command required for debugging, it's best to
setup a gdbcommands
file. This will be read by gdb when it's
started.
Put the following into gdbcommands
in your home directory:
handle SIGPIPE nostop noprint
handle SIG33 nostop noprint
set logging on
set pagination off
set args -l myth.log -v record,channel,siparser
run
thread apply all bt full
set logging off
Let's assume that the problem you're having is in mythbackend.
$ gdb mythbackend -x gdbcommands
GNU gdb 6.3-debian
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-linux".Using host libthread_db library "/lib/tls/libthread_db.so.1".
[Thread debugging using libthread_db enabled]
gdb will automatically read the commands that you've placed in the
gdbcommands
file and begin running the program you specified on the
command line.
If the program appears to be locked up, press CTRL-C to create the backtrace file.
All of the output from gdb.txt
should be posted to the mythtv-dev
mailing list, along with the steps you followed to get the program to crash.
NOTE: If you're trimming the gdb.txt
file to remove
extraneous information from the beginning of the file, make sure you include
at least 10 lines prior to the point where the backtrace actually
begins. This ensures that there is some context to the backtrace, and so
that it's possible to see what exactly caused the segfault.
gdb has a number of options, read the man
page for more
information.
Using the gdbcommands
file in conjunction with a while loop
will ensure that gdb creates a trace file and then restarts:
$ while true; do date >> gdb.txt; gdb mythbackend -x gdbcommands; done;
NOTE: To exit this loop you will need to kill the while loop.
If you're trying to troubleshoot and you can't get back to the gdb window for some reason, it may be easier to use two systems or to start mythfrontend from the text console.
If you're going to troubleshoot from a remote system, connect to the machine
that you're going to test using ssh or telnet. Next, type
$ export DISPLAY=localhost:0.0
. This will allow the graphics to be
displayed on the X console (usually ALT-F6 or ALT-F7) and still give you
output and control of mythfrontend, either from the ssh
session, or by switching back to the text console by pressing CTRL-ALT-F1.
You can now continue troubleshooting using gdb as detailed in the
instructions.
When run as a non-privileged user, MythTV can not crash your system. If your system is crashing when you run MythTV, then you have some issue with the drivers for your capture card or other hardware, or the CPU fan has fallen off/broken and your system is overheating when asked to perform a CPU intensive task like encoding video.
If you are running as root, which is strongly discouraged, it is possible that your system may crash due to the real-time thread using all available CPU. You will not be able to interrupt the process, so for all intents and purposes your computer will have crashed.
You didn't add /usr/local/lib
to /etc/ld.so.conf
. See the
section on modifying
/etc/ld.so.conf.
This situation occurs most often with a system that acts as a frontend
and a slave backend. MythTV supports system-global and user-specific
configuration files, with user-configuration files taking precedence. 99%
of the configuration for MythTV is in the MySQL database, but MythTV still
needs to know where the MySQL server is running. This information is in the
mysql.txt
file. By default, it will be installed to
/usr/local/share/mythtv
, but a copy placed into ~/.mythtv
will over-ride the global configuration.
You must ensure that there aren't multiple, conflicting versions of this file on your system!
$ locate mysql.txt
/usr/local/share/mythtv/mysql.txt
/home/mythtv/.mythtv/mysql.txt
$
As you can see, in this example there are two mysql.txt
files. If
they are not identical, then there may be unintended consequences.
You may also see this error if you completely fill the /var
partition. The most likely mythtv-related reason for this is an
overly large mythbackend or mythfrontend log file in /var/log
. If
you have logging enabled for the backend, and myth runs for weeks at a time,
this may creep up and surprise you. Note that many system processes also
write to /var
and the system may not boot if it is unable to write
to /var
due to a full partition.
Your MySQL installation may have networking turned off.
Check that /etc/mysql/my.cnf
does not contain
skip-networking
. If it does, remove it. Also verify that
bind-address
is set to your IP address instead of
127.0.0.1
. If you change either of these items, restart
MySQL.
If you have reason to believe that your MySQL database is corrupt, execute the following commands to attempt to repair it.
NOTE: Ensure that there are no programs accessing the database while you attempt to repair it. Make sure that all backend and frontend programs have exited.
mysqlcheck -r -umythtv -p<password> mythconverg
This is a different problem than the one discussed in the previous section. Currently, the ivtv driver or firmware appear to have some issues if the vertical capture resolution is not the full screen height. If you are having a jitter problem then ensure that you are capturing either 480 lines (for NTSC) or 576 lines (for PAL). The default capture profiles may need to be edited for your setup. Go to Settings->TV Settings->Recording Profiles and adjust the Default and Live TV options to 480 or 576 from their defaults.
This is due to DPMS, the Display Power Management System, which is used to save power by turning off your monitor when the system decides that it's not being used or due to a screensaver that has defaulted to a blank screen. MythTV now has DPMS support built-in, and should intelligently handle the screen. Continue reading if you wish to override DPMS and force it off.
Since it's likely that watching TV will not generate keyboard or mouse events for a time, you need to turn off DPMS and the screensaver. There are a few ways to do this. You may also need to check your BIOS for power saving modes and disable screen blanking there as well.
Edit your /etc/X11/XF86Config-4
or /etc/X11/xorg.conf
file, and look for:
Section "ServerFlags"
#DontZap # disable <Ctrl><Alt><BS> (server abort)
#DontZoom # disable <Ctrl><Alt><KP_+>/<KP_-> (resolution switching)
AllowMouseOpenFail # allows the server to start up even if the mouse doesn't work
Option "blank time" "0"
Option "standby time" "0"
Option "suspend time" "0"
Option "off time" "0"
Option "NoPM" "1"
EndSection
Also, look for:
Section "Device"
Identifier "device1"
VendorName "nVidia Corporation"
BoardName "NVIDIA GeForce 256 (generic)"
Driver "nv"
Option "DPMS"
EndSection
In this case, you would need to either delete the Option "DPMS"
line, or change it to # Option "DPMS"
to comment it out. The next
time you start XFree this change will take effect.
Finally, check:
Section "Monitor"
Identifier "monitor1"
VendorName "Plug'n Play"
HorizSync 30-85
VertRefresh 50-160
# Sony Vaio C1(X,XS,VE,VN)?
# 1024x480 @ 85.6 Hz, 48 kHz hsync
ModeLine "1024x480" 65.00 1024 1032 1176 1344 480 488 494 563 -hsync -vsync
# TV fullscreen mode or DVD fullscreen output.
# 768x576 @ 79 Hz, 50 kHz hsync
ModeLine "768x576" 50.00 768 832 846 1000 576 590 595 630
# 768x576 @ 100 Hz, 61.6 kHz hsync
ModeLine "768x576" 63.07 768 800 960 1024 576 578 590 616
EndSection
Ensure that there isn't an Option "DPMS"
in the Monitor
configuration.
You can also turn off DPMS from the Command Line, but this will not survive a reboot.
$ xset -dpms
Using xset +dpms
will turn it back on.
Another technique to try, which will turn off the screensaver:
$ xset s off
You may also combine the command to turn off DPMS and the screensaver:
$ xset -dpms s off
Finally, depending on your distribution, you may be able to turn it off from within the control panel.
If mythfilldatabase suddenly appears to be failing, there are at least two things to check.
First, if you are in North America, ensure that your DataDirect subscription is still valid, otherwise, check to see what version of XMLTV you're running and that it's the latest version.
First, you should check that your kernel has been enabled for DMA:
[mythtv@pvr mythtv]$ dmesg |grep DMA
ide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:DMA, hdb:DMA
ide1: BM-DMA at 0xd808-0xd80f, BIOS settings: hdc:DMA, hdd:pio
hda: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=9729/255/63, UDMA(33)
hdb: 80043264 sectors (40982 MB) w/2048KiB Cache, CHS=4982/255/63, UDMA(33)
From the listing above, you can see that hda, hdb and hdc are set for DMA, and hdd is set for pio. If your kernel is not reporting DMA being enabled, you may need to recompile your kernel. Check your motherboard's chipset (look in the "ATA/IDE/MFM/RLL support" section in "make menuconfig") for more information.
Next, check that the hard drive has DMA enabled. Use the hdparm program to check and enable DMA.
# hdparm -d /dev/hd?
will tell you the DMA status for your hard drives. If you run
hdparm with the -d1
parameter, it will turn DMA on.
You may also setup your PC to do this at boot time, either by adding the
command to your /etc/rc.local
file, or by adding files to
/etc/sysconfig.
On Mandriva and other distributions, if you install hdparm from an RPM you
will most likely get a /etc/sysconfig/harddisks
file installed.
This file will be parsed by the /etc/rc.sysinit
script. If you use
the default harddisks
file, your changes will affect all IDE devices
(including CD ROMs). If you wish to use different parameters for various
devices, rename and/or copy the file to harddiskhda
,
harddiskhdb
, etc. Edit the file to your liking and on the next
reboot your setting will be preserved.
This may occur when MythTV doesn't have an accurate seek table. Run mythcommflag --rebuild
Audio appears to be one of the bigger issues that users run into on the mailing list. If the audio isn't configured correctly, then MythTV will often appear to hang, when in fact it is trying to manipulate the audio subsystem and failing. You may or may not receive error messages indicating that the source of the error is the audio subsystem.
You can not use xawtv to determine if your audio is working correctly, since xawtv is simply using the analog sound patched through line-in to line-out. It doesn't need to digitize the sound unless you are using the recording function.
A better test to verify that sound will work for MythTV (and recording with
xawtv for that matter) is to startup xawtv, mute the
line-in then run aplay /dev/dsp
. You should hear the recorded audio
slightly delayed behind the real-time video. You should see messages about
"underrun". These can be ignored but they do confirm that the driver is
loaded and there is an active device. Once this test succeeds, MythTV
should work correctly because it writes to and read from /dev/dsp in
the same way that aplay does.
To record audio along with video the audio signal must be digitized by a DSP so that the audio data can be stored in a file. On playback, the audio data is written to /dev/dsp and converted back to an analog signal. This analog signal should then be sent to your speakers. Here is what is needed in alsamixer. If you are using an ALSA version after 1.0.6, use alsamixer -V all:
CAPTUR source - the analog source to be sent to the DSP. This should be set to the input source from the tuner card to the sound card. In most cases this is Line but this could also be Aux, CD, Mic, etc., depending on how you connect the input cable. This source should be muted to prevent patching through the analog sound. The volume of this source will not affect the record level.
Capture mixer - this sets the level for the analog to digital recording. While a volume of 100% is recommended for testing, distortion may occur. Lowering this level to 75% to 85% may result in better audio quality. "Capture" should be marked as the CAPTUR destination.
PCM mixer - this sets the level for the digital to analog playback. While a volume of 100% is recommended for testing, distortion may occur. Lowering this level to 75% to 85% may result in better audio quality.
Master mixer - sets the level for the analog signal sent to line-out or the speakers.
You may also want to ensure that /dev/dsp
, or whatever device file
is being used, hasn't already been grabbed by another process, like
esd or artsd. If the device file isn't available, then
MythTV won't work. You may wish to run configure and enable
support for these.
If you wish to see what application is grabbing a resource, you can use the
fuser
command:
# fuser -v /dev/dsp
To disable aRts in KDE, go to KDE->Control Center->Sound->Sound System and
uncheck the "Start aRts soundserver on KDE startup" box. Run # killall
artsd
from the command line to stop the artsd program.
If you're using multiple sound cards and multiple tuners, use alsamixer
-c 1
to work with the second sound card. The first card is #0, the
second card is #1, etc.
mythbackend does a check to see if your sound device is capable of full duplex operation. If it's not, it's most likely that you're going to run into issues when you try to record and play sound at the same time. If your backend is a separate machine than your frontend, then there's no problem, since you're only going to be doing one thing at a time with the card. Likewise, if you're running the frontend and backend on the same machine, but you're using btaudio or a hardware encoder card such as the Hauppauge PVR-250, DVB cards or HDTV capture cards as your recording source and you're only using the playback function of your sound card, then you also shouldn't have an issue, since the sound card isn't being asked to perform two functions at once.
If you can't get your sound card to go full-duplex and need it to, then check your distribution for updated sound drivers. If your sound card is not capable of full-duplex operation, either because the drivers don't support it, or it has been designed that way, then you're pretty much out of luck and will either need to purchase a new sound card, or will need to get btaudio operational.
This can be due to a number of factors. The simplest case is the "ghost" keypresses. For me, it was due to compact fluorescent lights in the same room as the IR receiver, which the receiver was picking up as keypresses. Once the lights were switched to incandescent bulbs, the ghost went away.
You may have an issue with lirc misinterpreting IR commands from a different remote. I also have an issue where the TiVo "Peanut" remote will eventually cause lircd to stop responding; even though lircd is configured for the Pinnacle Systems remote, the TiVo remote IR patterns are being seen by the IR receiver.
If your remote has been properly configured, and irw and irxevent are working correctly, then it's highly likely that your window manager is not giving focus correctly to the various Myth programs as they run. The following window managers are known to work correctly:
NOTE: You do not need to use irxevent if you are using MythTV's native LIRC support, so the window manager focus issue does not apply in that case.
There is no such thing as "Canada Cable"; Canada uses the same
frequencies as the United States. "Canada Cable" was a hack that some
people used when they would discover that their channels were off-by-one,
i.e. when tuning to channel 42, they might get channel 41 or 43. This is
actually due to the tuner on the video capture device being mis-detected.
You must manually specify the tuner type in your /etc/modules.conf
.
See the video4linux mailing list (
https://listman.redhat.com/mailman/listinfo/video4linux-list) for
more information.
Find your php.ini
file. Make sure you've got a line in it like this:
extension=mysql.so
Restart apache for it to take effect.
This is the intended behavior. The MythTV interface is meant for use with a remote control or a keyboard.
Nothing, really. It's just lame (the mp3 encoder) complaining for some obscure reason. This seems to be fixed in more recent versions of the libmp3lame library.
Something's wrong with your program database. Did mythfilldatabase run with no major errors? Or, MythTV may not have permissions to the appropriate video4linux devices. See the section titled Device Permissions for an example.
MythTV prints error and status messages to the shell that was used to start the application. If nothing seems to be happening when you try to view a program, try switching back to the shell and look for error messages there, or, if you're running from a startup script, check the log file.
XvMC is a NVidia driver feature which is supposed to help with decoding video. Users have reported that rather than speeding up their video it appears to be doing the opposite. You may want to check that your color depth is set for 24bpp.
You need to disable any sort of auto-running media player in your environment, otherwise MythDVD or MythMusic will not be able to work properly.
In KDE, you may want to perform the following:
$ rm ~/.kde/Autostart/Autorun.desktop
First, check if the mytharchive plugin does what you want. If not, then read on:
MythTV comes with a utility called mythtranscode which can decode nuv files into raw format for use with other applications. This command-line utility was not designed to be used by the end-user, but instead to be called by other applications or scripts. Programs like nuvexport ( http://forevermore.net/myth/) are better suited for the end user. However, since mythtranscode can be a useful tool, directions on using it follow.
mythtranscode creates raw streams, which means that they do not contain any container information such as resolution, frame-rate, or audio sampling rate. In order to process the output, you must supply this information to the processing utility. mythtranscode provides the relevant information on STDOUT.
There are two modes in which mythtranscode can create raw streams. The first has no synchronization and assumes that the processing utility will read audio and video at a constant rate. This method is useful when a single application will be processing the raw output, such as mencoder or ffmpeg. The second method assumes that two separate applications will be processing the audio and video streams independently, and there is no rate control between them which means that the two programs don't coordinate their efforts to maintain synchronization.
First, start mythtranscode. You will need to determine the channel and the start time manually.
$ mythtranscode --chanid 1036 --starttime 2003-10-20T15:30:00 --profile \
autodetect --fifodir . &
When mythtranscode begins executing, it will create two FIFOs ("audout" and "vidout") in the directory specified (in this case ".", meaning the current directory) and will print out information about the video stream.
The next step is to start the processing application. The following assumes that the stream is NTSC 640x480 with 32Kbps audio.
To use mencoder you would enter a command like:
mencoder -audiofile audout -audio-demuxer 20 -rawaudio rate=32000 \
-rawvideo on:w=640:h=480:fps=29.97 -ovc lavc -oac mp3lame -o out.avi \
vidout
Using ffmepg:
ffmpeg -f u16le -ar 32000 -ac 2 -i audout -f rawvideo -s 640x480 -r 29.97 \
-i vidout -vcodec mpeg4 -b 2000 -acodec mp3 -ab 128 out.avi
Or to play directly using mplayer (again 1.0PRE1 or later is needed):
mplayer -audiofile audout -audio-demuxer 20 -rawaudio rate=32000 \
-rawvideo on:w=640:h=480:fps=29.97 vidout
If you wanted to write the raw data to separate audio and video files for later processing, the following would work (note the use of --fifosync for rate-control):
$ mythtranscode --chanid 1036 --starttime 2003-10-20T15:30:00 \
--profile autodetect --fifodir . --fifosync &
$ cat audout > audio.raw &
$ cat vidout > video.yuv
MythTV is not dependent on any particular window manager. If you wish to
run a lightweight window manager, the contrib/configfiles/
directory has an
example of a .twmrc
and .fvwmrc
file you may use.
While MythTV allows you to set various GUI and capture resolutions, not all combinations make sense.
First, analog video signals have a defined vertical resolution. In NTSC, the video standard specifies that there are 525 vertical scan lines. Once the "extra" lines are removed (they're used to synchronize the video signal, and encode closed captioning data), you have 480 horizontal lines stacked vertically.
In PAL, there are 625 "raw" lines of resolution, with a net of 576 horizontal lines stacked vertically.
Horizontally, the maximum value allowed for a Bt8X8 chip is 720. However, due to limitations in the chip and other limitations of broadcast television, there may not be a noticeable improvement in image quality beyond 400 or 500 pixels.
With this in mind, there are certain commonly accepted values for resolution. While other values may be accepted for the vertical resolution, they will cause scan lines to be repeated or dropped.
From "best" to "worst", in NTSC:
As you can see, the lower quality values are half of the better ones. 720x240 is possible, but isn't a good tradeoff relative to the number of vertical lines lost. In a PAL country, the you would use values like 720x576 or x288.
The higher resolutions will be more CPU intensive if you're using software
encoding (PVR-250/350 will have minimal host CPU impact even if you're using
720x480). If the CPU is overtaxed, frames will be dropped causing uneven
motion. You will likely see the best results at resolutions which average at
least 10% CPU idle time. You can use system tools such as top
or
sar
to check the CPU % idle while recording. If the CPU average
usage is consistently exceeding 90%, frames will need to be dropped during
peak times when more than 100% of the available CPU would be needed to
process all of the frames.
If you'd like to read more on this, go to the vcdhelp website at http://www.vcdhelp.com/forum/userguides/94382.php.
MythTV is designed to be run as dedicated full screen TV application but can also be run as a desktop application on a computer monitor. Here are a few consideration for configuring sizes to best suit you needs.
For output to a Television, common resolutions are 640x480, 800x600, and some rare devices support 1024x768. Generally, higher resolutions are better. However, you may find that you prefer the picture quality at one of the lower resolutions. Everything in MythTV is scalable and should 'fit' regardless of the resolution you choose.
Edit your X configuration file, usually /etc/X11/XF86Config-4
for
XFree, or /etc/X11/xorg.conf
for Xorg, so that the resolution you
want to use is listed first in the lists under "Screen". If this resolution
is higher than the resolutions supported by your output device, you will see
a 'panning' effect where moving the mouse to the edge will scroll around a
desktop area which is larger than the display size. If this happens, edit
your X configuration file to match the display size then restart X.
From "mythfrontend" go to Setup->Appearance. The default for the height and width is "0" - this will cause MythTV to automatically size itself to full screen.
If the MythTV GUI width and height are not 0, mythfrontend uses these GUI dimensions and is anchored to the upper left corner of the X Desktop. If the GUI X and/or Y are not 0, the upper left corner is positioned at the specified coordinates. If the "Run the frontend in a window" box is checked, the window will have a frame and can then be dragged to any position on the desktop.
The fonts for the GUI and OSD will scale to whatever sizes you use. Most
font sizes can be changed in setup selections or in the .xml files under
/usr/local/share/mythtv/
. Make sure to use fonts large enough
to be read on a TV screen from a distance.
The full screen TV size is based on the X display size. For Xinerama, you can specify a screen in Setup->General. The TV picture will be stretched to fit the entire GUI area regardless of the capture resolutions used. However, during playback, the "W" key can to used to correct differences between 16:9 and 4:3.
Because picture edges can be ragged and screen edges aren't straight, Television is designed to project an image larger than the physical screen. This is called "overscan". Underscan is fitting the entire image inside the screen. Underscan is useful for computer monitors so that toolbars and scrollbars at the edges can be seen.
For best results, match the X display area as close as possible to the edges of the physical screen. This can only be adjusted by your tv-out device or by the settings for the television set. Many sets have these adjustments in a 'service mode'. If you cannot make these adjustments, there will be black borders around the edges of the X desktop, MythTV GUI and TV playback.
MythTV has settings for "Overscan" in Setup->Playback. These can not, and do not, cause the image to display beyond the edge of the X display area. The purpose of these settings are to cut off rough edges and to expand the image so that objects will appear to be the same size as a normal overscanned TV picture.
See the mysqldump manpage for more information.
$ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql
To restore: (assuming that you've dropped the database)
$ mysql -u root
mysql>create database mythconverg;
mysql>exit
$ mysql -u mythtv -pmythtv mythconverg < mythtv_backup.sql
You may need to alter the MySQL permissions if this database is being shared with multiple systems. See the Modifying access to the MySQL database for multiple systems section for more information.
$ mysql -u root
mysql> drop database mythconverg;
mysql> quit
This assumes that you will be moving your data to newer / bigger hardware and don't want to lose your programs.
The first step is to create a database backup as demonstrated in an earlier section.
Next, you will extract only the data that is relevant to the programs:
$ grep "INSERT INTO record " mythtv_backup.sql > restore.sql
$ grep "INSERT INTO recorded " mythtv_backup.sql >> restore.sql
$ grep "INSERT INTO oldrecorded " mythtv_backup.sql >> restore.sql
$ grep "INSERT INTO recordedprogram " mythtv_backup.sql >> restore.sql
$ grep "INSERT INTO recordedrating " mythtv_backup.sql >> restore.sql
$ grep "INSERT INTO recordedmarkup " mythtv_backup.sql >> restore.sql
$ grep "INSERT INTO recordedseek " mythtv_backup.sql >> restore.sql
NOTE: Newer versions of mysqldump place backticks around the table names. Backticks are not the same as apostrophes! On a typical North American keyboard, backticks are located to the left of the "1" key, on the same key as the tilde. Also, because the bash shell may try to interpret the backticks, make sure you use a \ before each one.
If your restore.sql
file is empty, you'll need to re-run the
commands like this:
$ grep "INSERT INTO \`record\` " mythtv_backup.sql > restore.sql
$ grep "INSERT INTO \`recorded\` " mythtv_backup.sql >> restore.sql
$ grep "INSERT INTO \`oldrecorded\` " mythtv_backup.sql >> restore.sql
$ grep "INSERT INTO \`recordedprogram\` " mythtv_backup.sql >> restore.sql
$ grep "INSERT INTO \`recordedrating\` " mythtv_backup.sql >> restore.sql
$ grep "INSERT INTO \`recordedmarkup\` " mythtv_backup.sql >> restore.sql
$ grep "INSERT INTO \`recordedseek\` " mythtv_backup.sql >> restore.sql
Note the space after the table name and the ">>" to append to the file for all but the first grep. "recordedmarkup" and "recordedseek" are huge and there may be hundreds of thousands of lines if you had lots of hours of recordings.
After you have moved the data files to the new hardware, configure MythTV using the mythtv-setup program as you normally would with a standard MythTV installation.
At this point we will restore the information about your programs back into the database:
$ mysql -u mythtv -pmythtv mythconverg < restore.sql
After successful insertion of the data you may delete the
restore.sql
file.
btaudio allows you to obtain the audio data from your tuner card directly over the PCI bus without using a sound card. This is useful if you would like to use multiple tuner cards in a system without adding a sound card for each one, or if your existing sound card is not capable of full-duplex operation.
In order to use btaudio, your tuner card will need certain hardware installed on it, and that hardware must be wired correctly. The chip that will allow you to use the btaudio module is the MSP34xx. However, having a MSP34xx is no guarantee that you will be able to use the btaudio module.
As of 2003-03-31, this is the current list of cards and their status: Works with btaudio:
The following cards do not work:
The following cards have been reported to work, but have issues:
Once btaudio loads, it should register additional /dev/dsp
and
/dev/mixer
devices. Typing $ dmesg
will let you know
what's going on.
If mythfilldatabase grabbed a channel which you do not want to include in your TV listings, you can remove the entries from the grabber configuration and the MySQL database. This often happens with premium channels; for example, HBO or Showtime may be available on your cable TV system, but is scrambled because you're not a subscriber to that channel. Since you can never watch it, you want to get rid of it.
If you are using the DataDirect service, login to your account at http://labs.zap2it.com/ to modify your lineup. Uncheck the boxes for any unwanted channels, and they will no longer be included in your download.
If you are using a grabber from XMLTV, comment out the channel from the
~/.mythtv/<sourcename>.xmltv
file by inserting the word "not
" (including the space) in front of the unwanted entry. This will prevent
xmltv from grabbing future listings.
Next, delete the unwanted item from the channel table so that it will not
appear in the EPG or when changing channels. To delete the data from the
database we need to perform some steps. First, assuming that HBO is channel
15, we need to find out the internal chanid
used by MySQL:
$ mysql -u root mythconverg
mysql> select chanid from channel where channum=15;
+--------+
| chanid |
+--------+
| 1015 |
+--------+
1 row in set (0.00 sec)
mysql> delete from channel where chanid = 1015;
Old program data will be removed over the course of a week. However, you may want to immediately delete any current program listings for the channel that has been removed:
$ mysql -u root mythconverg
mysql> delete from program where chanid = 1015;
You may want to use a central server to store your files.
On the host machine, (in this case, the hostname is "masterbackend") you'll
want to edit your /etc/exports
file and use something like:
/var/video (rw)
To export the /var/video
directory with read / write privileges.
On the "slave" machine, you'll want to edit the /etc/fstab
file and
add something like:
masterbackend:/var/video /var/video nfs rsize=8192,wsize=8192,hard,intr,nfsvers=3,actimeo=0
Then run # mount -a
to re-read the file to mount the file system.
In this case, the source is a machine called "masterbackend" which is exporting the directory "/var/video", which we're mounting locally at "/var/video". The rsize and wsize options are used to increase the performance of NFS; "hard,intr" is there because that's the recommendation of the NFS-HOWTO, the nfsvers is required for filesizes over 2GB and actimeo is used to turn off file attribute caching. Attribute caching for a shared media point causes problems; you always want to see the latest state of the directory and files. See http://www.mythtv.org/wiki/index.php/Optimizing_Performance for additional information regarding performance optimization.
Here's an example submitted to the mythtv-dev list by Pat Pflaum mailto:pat@netburp.com using fvwm:
$ cat > .xinitrc
fvwm &
mythfrontend
^D
$ cat > .fvwmrc
Style myth* NoTitle, NoHandles, Sticky, WindowListSkip, SloppyFocus, GrabFocus, BorderWidth 0
^D
$
The following also works with blackbox:
$ cat > .xinitrc
xset -dpms s off &
irxevent &
mythfrontend &
blackbox
Make sure that your .blackboxrc
file has:
session.screen0.focusNewWindows: True
session.screen0.focusModel: SloppyFocus
in it.
Here's a method for automatically starting mythbackend submitted by Mike Thomson ( mailto:linux@m-thomson.net) and Stu Tomlinson ( mailto:stu@nosnilmot.com).
Copy the files from the MythTV contrib
directory or from Mike's web
site (
http://m-thomson.net/mythtv/) as follows:
etc.rc.d.init.mythbackend
should be made executable and copied to
/etc/rc.d/init.d/
:
$ cd contrib
$ su
# chmod a+x etc.rc.d.init.d.mythbackend
# cp etc.rc.d.init.d.mythbackend /etc/rc.d/init.d/mythbackend
etc.sysconfig.mythbackend
should be copied to
/etc/sysconfig/
:
$ cd contrib
$ su
# cp etc.sysconfig.mythbackend /etc/sysconfig/mythbackend
Edit /etc/sysconfig/mythbackend
if you want to change the defaults
(the userid that should start mythbackend, location of the logfile and (if
required) the name and location of the mythbackend binary).
Use chkconfig to make sure the script is called when entering runlevels 3, 4 or 5:
$ su
# chkconfig --level 345 mythbackend on
# exit
$
By default, the log file for mythbackend will be written to
/var/tmp/mythbackend.log
. This has been tested and is known to work
on Mandriva and Red Hat, but many people prefer to place logs under
/var/log/
.
To do this, create a group called mythtv
(or anything you prefer)
and add your usual MythTV users to that group. If you changed the user that
starts mythbackend from the default of root you must perform this
step.
Create the directory /var/log/mythtv
and set its
permissions as follows:
$ su
# mkdir /var/log/mythtv
# chown root:mythtv /var/log/mythtv
# chmod 0775 /var/log/mythtv
# exit
$ ls -ld /var/log/mythtv
drwxrwxr-x 2 root mythtv 4096 Apr 28 21:58 /var/log/mythtv/
$
Create a mythtv
file in /etc/logrotate.d
:
$ su
# cat > /etc/logrotate.d/mythtv
# Set default values for all log files first...
# Rotate the logs once a week, or more frequently if they
# exceed 10Mb in size (size is checked daily).
weekly
size 10M
# 'copytruncate' is used for logs generated by
# currently-running programs that should not be restarted
# (and can't be signalled to start a new log) after the
# rotation. It duplicates the existing log file and then
# sets the length of the existing file to 0. The only time
# this would break would be if the program writing the log
# was using lseek.
copytruncate
# After rotating the files, leave the most recent rotated
# copy alone but gzip everything else to save space.
compress
delaycompress
# If a log isn't present then don't worry about it.
missingok
# Don't rotate an empty file.
notifempty
# end of the global options
/var/log/mythtv/mythbackend.log /var/log/mythtv/mythfrontend.log {
# Keep logs until they are 2 months old or the number of
# logs reaches 12. If the log files stay small, the age will
# kick in first and you'll only have 8 log files. If they
# get larger than 10Mb then you won't keep all 60 days.
rotate 12
maxage 60
}
# Different options for mythfilldatabase:
/var/log/mythtv/mythfilldatabase.log {
rotate 2
}
^D
#
Mandriva adds one more twist in the form of the msec
utility,
which runs regularly and (at the default or any higher security level) sets
permissions on many files, including those under /var/log
.
To tell msec about the MythTV log files and their directory, you need to
edit the /etc/security/msec/perm.local
file to include the
following:
# /etc/security/msec/perm.local
# Local overrides to the msec program
#
# Full file path user.group permissions
/var/log/mythtv/ root.mythtv 775
/var/log/mythtv/* root.mythtv 664
A copy of the above has been included in the contrib/ directory. You may add it by typing:
$ cd contrib
$ su
# cat etc.security.msec.perm.local >> /etc/security/msec/perm.local
# exit
Finally run the msec
tool to check and implement your
changes.
$ su
# msec
# exit
$
The portage file for MythTV has scripts that will allow you to run mythbackend at startup.
To run mythbackend as a daemon which starts at boot time:
# rc-update add mythbackend default
To stop mythbackend as a daemon:
# /etc/init.d/mythbackend stop
To obtain a list of options:
# /etc/init.d/mythbackend
MythTV is flexible in the way that you define multiple backend tuner configurations. The only hard-and-fast rule is that the Master backend must have a capture device defined, but shouldn't imply that the capture device in the Master backend must be the first capture card defined in the database.
One example of an advanced configuration is the round-robin scheme. Rather than defining all of the cards on the master, you could first go into mythtv-setup on the master to define globals such as the general configuration and the channel lineup but not the host-specific configuration item like the capture card. In this example, we will use a 4 tuner configuration, where two slaves have one card each and the master has two.
Using this scheme, the master backend will not use both capture cards until one of the following happens:
The scheduler in MythTV checks whether an encoder is available; if a slave backend isn't running, its encoder isn't available, so the scheduler will look for the next available encoder. This makes MythTV very flexible; slave tuners can come and go, and as long as there are enough tuners for what you'd like to record it doesn't matter which tuner in particular is going to be used.
Using this round-robin scheme along with a shared storage directory like NFS and enabling the Master Backend Override setting will allow you to view content even if the slave backend that recorded a program is not available.
MythTV's built-in transcoder re-encodes recordings from one codec to another. The transcoder has three primary uses; it can transcode MPEG-2 files captured using a hardware encoder (PVR cards, DVB cards, ATSC HD, etc.) to MPEG-4, it can be used to transcode RTjpeg files (usually only used on systems that can not real-time encode to MPEG-4 using a framegrabber) to MPEG-4, and finally it can be used to remove commercials from a MPEG-2 file while leaving the file in MPEG-2 format.
When MythTV transcodes a file to MPEG-4 or RTjpeg the resulting file format
is NuppelVideo (nuv). NuppelVideo is a container which provides a method of
keeping the audio and video in sync throughout the recording, which is why
it is used instead of the .avi
format. You may have difficulty
playing .nuv
files in non-MythTV systems.
The original file is removed when the transcoding process is complete. Unless you're sure that you will be satisfied with the result you may want to enable the mythtv-setup option which causes mythbackend to keep the original file after transcoding. This option is on the second page of the General section in mythtv-setup. Enabling this allows you to compare the two files and restore the original if you like. Outside of the initial setup phase it usually isn't necessary to leave this option enabled. A recording can be transcoded in two ways:
The second method can be used on files that have already been transcoded (or files which were are already in the desired format), so only the frames immediately following a cut section will be re-encoded, resulting in a minimal loss of quality when removing commercials with the added benefit of being extremely quick.
The current transcoding system has a lot flexibility, but there are a number of steps involved in setting it up. In order to automatically transcode a given recording you must do the following:
Enter the Utilities/Setup > Setup > TV Settings > Recording Profiles section in mythfrontend. Choose the option that corresponds to your capture source (ignore the Transcoders for now.) Choose the quality profile you are interested in using for transcoding. Ensure that "Enable auto-transcode after recording" is checked.
Enter the Recording Profiles > Transcoders menu. There are three quality settings to choose from and a two special Autodetect settings. Later, when scheduling recordings you'll have to choose one of Autodetect, High, Medium, and Low Quality transcode settings in addition to the recording profile we set up above. If you choose the Autodetect transcoding profile for a recording, MythTV will use the "Autodetect from RTjpeg/MPEG-4" profile for recordings which are RTjpeg/MPEG-4 files. Otherwise, it will use the "Autodetect from MPEG-2" profile provided it's an MPEG-2 recording. If you choose one of the others (High, Medium, Low) it will use the settings in that profile regardless of the codec of the original recording.
There are a number of options for transcoding but the simplest is to enable lossless transcoding (the first option) which subsequently removes all other options. Enabling lossless encoding simply removes commercials (if you've marked them) and attempts to clean up MPEG-2 streams. Note that with this option MythTV will not apply any sort of filters and will only attempt to normalize the stream into something cleaner and less likely to have trouble with other less forgiving MPEG-2 hardware/software (including players, video editors, etc.)
If you enable resizing of the recording the next page has the settings for choosing the final resolution. MythTV will scale the video as appropriate, not crop it to this resolution.
The final two pages allow configuration of the video and audio codecs. Although RTjpeg is an option for video codec there is no reason to transcode to this format because it will produce larger files than MPEG-4 and the recording will take more CPU power to play back. The MPEG-4 settings are described in the documentation for the ffmpeg project at http://ffmpeg.sourceforge.net/ffmpeg-doc.html. It's a matter of trial and error to discover which settings achieve a good compromise between size and quality.
If you wish to return to the default settings, they are Bitrate: 2200-2500, MaxQ: 2, MinQ: 15, MaxQDiff: 3, and "Scale bitrate for frame size" is enabled. The other options are unchecked.
Transcoding is actually enabled on a per-recording basis. Two things must be true before any given recording will be auto-transcoded, however. The first is that the recording must have been made with a recording profile that has auto-transcode enabled. Under "Storage Options" for the recording you must set the "Record using the "X" profile" to the profile you configured in the first step. In addition, under the "Post Recording Options" section of the recording you must also set "Transcode new recordings." This is also where you specify the Transcoding profile to use (Auto, High, Medium, Low.)
It may not be obvious from above but the flexibility of this system is primarily to make it possible to auto-transcode a show recorded via one source (ie: pcHDTV 3000), and not transcode that same show if it's recorded on another kind of card (ie: PVR-250.) There are other uses however. You could have a PVR-250 and a V4L card. You may want to transcode the MPEG-2 from the PVR-250 but there is no need to transcode the recordings made with the V4L card, as it's already likely to be MPEG-4.
As an example, you could configure the Default profile for "Hardware DVB Encoders" (the profile group used for DVB cards, including ATSC cards like the pcHDTV 3000) to "Enable auto-transcoding". In the Default profile for MPEG-2 Encoders (PVR cards) you'd leave "Enable auto-transcoding" unchecked. For programs that are available on both kinds of cards you'd set the recording profile to Default and enable auto-transcoding in the record settings. Then you pick your transcoding profile. The result is that when a program is recorded on your DVB card, it will get transcoded. When it plays on a channel available via your PVR card, it won't be.
Manually transcoding is activated while watching a show by hitting 'x', from the OSD menu by choosing the Transcode option, or by choosing Job Options/Transcode from the info menu from the Watch or Delete Recordings screens.
The transcoding profile used for manual transcoding is whatever was set when the recording was originally configured, even if you didn't enable auto-transcoding. The only way to change what transcoding profile will be used is to alter the transcoder column in the recorded table in the database. The transcoder column contains a number which corresponds with the id column in the recordingprofiles table. You can find out the id number for each profile in the transcoder group with an SQL command like:
mysql> select r.* from recordingprofiles r,profilegroups p where p.name='Transcoders' and p.id=r.profilegroup;
+----+----------------+------------+------------+--------------+
| id | name | videocodec | audiocodec | profilegroup |
+----+----------------+------------+------------+--------------+
| 21 | RTjpeg/MPEG4 | MPEG-4 | MP3 | 6 |
| 22 | MPEG2 | MPEG-4 | MP3 | 6 |
| 27 | High Quality | MPEG-4 | MP3 | 6 |
| 28 | Medium Quality | MPEG-4 | MP3 | 6 |
| 29 | Low Quality | MPEG-4 | MP3 | 6 |
+----+----------------+------------+------------+--------------+
5 rows in set (0.01 sec)
mysql>
Armed with the knowledge of what the profile ID's are you can also choose to
run mythtranscode from the command line and explicitly specify the transcoder
profile. Run mythtranscode --help
for usage information.
If you need to change the name of the computers used with MythTV you'll need to perform a sequence of steps. There are a number of pieces of information that MythTV keeps track of which are tied to the hostname of the box, so changing the hostname involves altering the name in the operating system and in the MySQL database. In the examples below, the old name of the system was "frontend1" and we're going to change it to "kidsroom".
1. Stop all backends. If you run mythbackend from a terminal session, press control-c. If your backends are started with an init script, you would do something like the following:
$ su
# /etc/init.d/mythbackend stop
2. Change the hostname.
For Red Hat and derived distributions, edit the
/etc/sysconfig/network
file. Look for
HOSTNAME=frontend1
and change this to
HOSTNAME=kidsroom
or whatever you'll be using. For other
distributions, refer to the documentation, such as the
hostname(1)man page.
To alter the hostname in the current session, run:
# hostname kidsroom
3. Dump the database.
$ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql
4. Rename the host in the database. First, ensure that the new hostname you'll be using isn't already in the database.
$ grep kidsroom mythtv_backup.sql
Now we're actually going to change the name. The following should all be
typed on the same line:
$ cat mythtv_backup.sql | sed s/\'frontend1\'/\'kidsroom\'/g >> mythtv_restore.sql
If you don't feel comfortable using sed, you can open the
mythtv_backup.sql
file in a text editor and perform a global search
and replace. When saving the file, make sure you use the new name,
mythtv_restore.sql
or the rest of the steps below will fail.
5. Drop and recreate the database.
$ mysql -u root
mysql>drop database mythconverg;
mysql>create database mythconverg;
mysql>exit
6. Restore the database using your edited version.
$ mysql -u mythtv -pmythtv mythconverg < mythtv_restore.sql
If you are running slave backends or frontends, don't forget to re-enable access as detailed in Modifying access to the MySQL database for multiple systems.
7. Start the backends. If you use init scripts, do the following, otherwise start them from terminal consoles.
# /etc/init.d/mythbackend start
8. Quit and restart all frontends. Delete the mythtv_backup.sql
and mythtv_restore.sql
files.
No.
While it is true that the TiVo runs the Linux kernel, and TiVo has released their changes to the kernel under the GPL, the TiVo is not a general-purpose computer, and there is no programming information available for the custom hardware contained within a TiVo. TiVo is under no obligation to release the source code to their application.
The ReplayTV runs VxWorks, a Real Time Operating System from Wind River Systems.
Yes, assuming that your wireless connection has sufficient bandwidth to maintain the datarate between the frontend and the backend. 802.11b should be sufficient if the encoded bitrate of the content is less than the datarate of your wireless connection, which in the case of 802.11b would be approximately 4 Mbps. (The advertised rate of 11Mbps gives an actual throughput of 4 Mbps.) 802.11a and 802.11g, if operating in their high-speed modes, or proprietary 802.11b "Turbo" schemes should be adequate. Multiple wireless frontends, poor signal strength or other factors can severely impact the viewing experience on the frontend.
Use the mytharchive plugin.
The configuration of the DBoxII for use within MythTV is tricky (as of May 16 2005), that's why it's covered here. Your DBoxII has to be running linux and the Neutrino GUI instead of the stock BetaNova firmware. For further information, please refer to http://www.tuxbox.org. Additionally, you need to enable the SPTS mode in Neutrino.
You may leave the Setup now and proceed as usual.
Press "1" or F1 to get a popup.
These letters let you know what's going on with the backend as it tries to tune to a channel.
Lower case = seen
Upper Case = seen & good
This is covered in the hardware section, and extensively covered on the Hauppauge website. ( http://www.hauppauge.com/pages/compare_pvr.html) Please check the Hauppauge website for the most accurate information.
A PVR-150 comes in a number of versions:
A PVR-250 (Model 980) is a retail kit which comes with an IR receiver and a remote control.
The PVR-250 MCE (Model 975) contains a FM radio tuner. The PVR-250 MCE does not contain a IR receiver or a remote.
The PVR-250 Rev 1 contained an MPEG-2 decoder. However, this function was not connected to any output jacks, and there doesn't appear to be any way to pull decoded video from the card, so it's a fairly useless feature.
The PVR-350 (model 990) has the features of the PVR-250 as well as being able to decode MPEG-2. The encode and decode functions may be used simultaneously. The MPEG-2 decoder function gives superior video quality compared to what you'll find on a standard video card. However, the decoder function is only available once Linux has started, so you will not see any boot-time messages. Also, the card is not capable of resolutions higher than 720x480, so it cannot be used with HDTV. Make a conscious decision (and ask for advice on the mailing list) that you want to tradeoff potential HDTV use in the future compared to video quality.
The X-driver for the PVR-350 support playback using Xv efficiently but does not support any other 2D or 3D acceleration. For some application this may place a large load on the host CPU, some will run without any problem and others (mplayer, xine, xmame etc.) should be configured to utilize the Xv interface.
Note that for the PVR-350 there are some considerations regarding the way audio is handled.
The PVR-500 is a dual-encoder version of the PVR-150 card, so you can simultaneously record two different programs at the same time, because there are two encoder chips on the PCI card. Hauppuage has also installed an onboard splitter, so you can use one COAX to feed both tuners. Current versions of the PVR-500 should come with an adapter to allow you to connect a second S-Video or composite input, but this will take up a second PCI slot. Early adopters may need to purchase this item separately.
If you need to use an external Set Top Box (STB), such as for satellite TV or for digital cable you will need some way for MythTV to tell the STB to switch to a new channel. There are several methods:
6200ch.c
in the MythTV
contrib directory which may work for you.Commercial flagging can be CPU intensive. By default, the backend that created a recording is the one which will flag commercials. You may wish to use a different machine to run commercial flagging.
On the slower machine:
Start the mythtv-setup program. Advance through the pages until you get to the Job Queue page. Turn off the setting that says "Allow Commercial Detection jobs", thereby preventing any commercial flagging jobs from running on this machine.
Next, make sure that "Run Jobs only on original recording host" is turned OFF so that new jobs are allowed to run anywhere.
Restart mythbackend since it only reads this setting when it starts up.
On the faster machine:
Start the mythtv-setup program. Advance through the pages until you get to the Job Queue page. Ensure that "Allow Commercial Detection jobs" is turned ON for this machine.
Run mythjobqueue. mythjobqueue will examine the JobQueue and run any jobs it finds. mythjobqueue should be left running so that it will pick up any new commercial flagging jobs that are added to the queue, otherwise new jobs will be added to the queue and your programs won't be flagged until you run manually run mythjobqueue.
Using this technique it's possible to add commercial flagging machines as needed, even on systems that aren't running a backend. It's also possible to run the commercial flagger in a virtual machine environment such as VMWare.
LVM greatly increases the flexibility you have in managing your storage than traditional physical partitions. This section will provide some brief notes on how to use LVM to create storage space for your video files and how to add additional disk space in the future. There's lots more that can be done with LVM, so check the LVM HOWTO http://tldp.org/HOWTO/LVM-HOWTO/ document for details.
If you don't understand how to partition a drive, or how to change the partition type you should stop and look at documentation on how to perform these steps.
Make sure your kernel configuration includes LVM support or that it's available as a module. Today, most vendors include this by default. You'll also want to ensure that you have a copy of the LVM utilities; check your distribution, or get the latest versions from http://www.sistina.com/products_lvm.htm and build them manually.
Check that the vgscan program is being run at some point during
your boot sequence - most distributions do this by default. Look for a
message during boot up that looks like this: vgscan -- reading all
physical volumes (this may take a while...)
If you don't see any
messages during boot, you may need to install a LVM init script or confirm
that you have all of the LVM packages installed from your distribution.
LVM uses a few concepts you should be familiar with before starting.
The following example assumes that you want to create a LVM partition from a chunk of space in /dev/hda5, using a reiserfs filesystem and mounted on /var/video. You later decide to extend this filesystem by adding a new disk: /dev/hdb.
You need to create at least one LVM partition for a physical volume. Use fdisk or your favorite partition editor to set the type to LVM (0x8e). If you're using an entire disk, create one big partition rather than using the device itself. e.g. use /dev/hdb1 not /dev/hdb.
In the following example, you have a 15GB disk. The first 6GB are set as
your boot partition. /dev/hda2
was added as an extended partition,
and within that partition you created the /dev/hda5
linux (ext2)
partition.
# fdisk /dev/hda
The number of cylinders for this disk is set to 1823.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): p
Disk /dev/hda: 15.0 GB, 15000330240 bytes
255 heads, 63 sectors/track, 1823 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 764 6136798+ 83 Linux
/dev/hda2 765 1823 8506417+ 5 Extended
/dev/hda5 765 1823 8506417 83 Linux
Command (m for help): t
Partition number (1-6): 5
Hex code (type L to list codes): 8e
Command (m for help): p
Disk /dev/hda: 15.0 GB, 15000330240 bytes
255 heads, 63 sectors/track, 1823 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 764 6136798+ 83 Linux
/dev/hda2 765 1823 8506417+ 5 Extended
/dev/hda5 765 1823 8506417 8e Linux LVM
Command (m for help): w
#
Create the LVM physical volume from the partitions (repeat if you have multiple partitions to use):
# pvcreate /dev/hda5
Create a LVM volume group out of this physical volume called "VGforMyth" that is
allocated in chunks that are a multiple of 64MB
# vgcreate VGforMyth -s 64m /dev/hda5
Create a logical volume of 5GB called "video" and then create the reiserfs
filesystem and mount it:
# lvcreate --name video --size 5G VGforMyth
# mkreiserfs /dev/VGforMyth/video
# mount /dev/VGforMyth/video /var/video
Now create a 3GB volume for mythmusic files if you like:
# lvcreate --name music --size 3G VGforMyth
# mkreiserfs /dev/VGforMyth/music
# mount /dev/VGforMyth/music /var/music
Display the volume group status:
# vgdisplay -v
Now, lets suppose you want to add a 60GB hard disk to the system as hdb and allocate 50GB of it to video storage.
First, create a single partition /dev/hdb1 covering the whole disk and make it type 0x8e using your partition editor.
# fdisk /dev/hdb
.... create partition, set type, save and reboot if it says you have to
Create the new LVM physical volume:
# pvcreate /dev/hdb1
Add the new physical volume to the volume group:
# vgextend VGforMyth /dev/hdb1
Once you've completed one of the following two procedures, use df to check that you've got more space.
Make the logical volume used for video bigger:
# lvextend --size +50G /dev/VGforMyth/video
Unmount, resize and remount the filesystem. Technically, you don't need to unmount and remount the ReiserFS.
# umount /var/video
# resize_reiserfs /dev/VGforMyth/video
# mount /dev/VGforMyth/video /var/video
LVM comes with a program called resize2fs.
Unmount, resize and remount the filesystem. The filesystem must be unmounted during this procedure.
# umount /var/video
# resize2fs --size +50G /dev/VGforMyth/video
# mount /dev/VGforMyth/video /var/video
XFS does not need to be unmounted to extend the size:
# xfs_growfs /var/video
The partitions that your distribution sets up for you may not be optimized for large files. Using LVM in conjunction with the following techniques can be quite useful.
Unlike a typical filesystem, a MythTV video partition is usually a very large filesystem filled with a fairly small number of large files. Filesystem I/O is usually not an issue, even in multi-tuner and/or multi-frontend setups.
There is however, one aspect of filesystem performance that can have a bearing on the performance of MythTV. In Linux, deleting a file will utilize I/O bandwidth until the deletion has been completed. If deleting the file takes long enough, the video capture buffer may overrun, thereby resulting in dropped frames. Some filesystems are faster at deleting files than others and, for multi-gigabyte MythTV video files, these differences can be significant.
Fortunately, there are published tests ( http://aurora.zemris.fer.hr/filesystems/big.html) that provide insight into filesystem performance under conditions relevant to MythTV usage. In addition, some limited testing (archived at http://www.gossamer-threads.com/lists/mythtv/users/52672) with very large files (10 gigabytes) was reported in the MythTV Users mailing list.
Ext2 was the defacto standard Linux filesystem for many years. It is stable, provides good I/O performance and can quickly delete large files. The primary disadvantage of Ext2 is that it is not a journaling filesystem, so a file system consistency check (fsck, which is normally only performed after a system crash) can take many hours on a filesystem the size of a typical MythTV partition.
Ext3 is Ext2 with a journal, so your biggest gain is that in case of a crash and reboot you won't have to wait very long for your partition to be remounted.
There are options available when formatting an Ext3 partition, as in:
# mkfs.ext3 -T largefile4 /dev/hdb1
This example assumes that /dev/hdb1
has already been created using
fdisk. If you're using LVM, /dev/hdb1
may be something like
/dev/VGforMyth/video
.
The "-T largefile4" option creates one inode per 4 megabytes, which can provide a few percent more storage space. However, tests indicate that using the "-T largefile4" option can drastically increase the amount of time required to delete a large file and thus it should only be used with encoder settings that produce small video files (YMMV).
You can check on your filesystem using the dumpe2fs program. See the man page for details.
The Reiser filesystem is another journaling filesystem commonly distributed with Linux. It is known to be an extremely efficient filesystem and it especially excels at managing partitions containing a large number of small files. However, tests indicate it is not the fastest at deleting very large files. For that reason, it may not be the best choice when using encoder bitrates that produce very large files.
JFS (Journaling File System) is a journaling filesystem originally developed by IBM for AIX which was later released as open source. While not as common as Ext3 or ReiserFS, it is distributed with RedHat 9 (RH9), Fedora Core and Mandriva as well as other distros. According to tests, JFS is the file deletion speed king, deleting virtually any file in under one second, even files as large as 10 gigabytes.
XFS is a journaling file system originally developed by SGI for Irix, and later released as open source. While not a part of the default RedHat Linux 9 or Fedora Core installation (although it is a part of Mandriva and Fedora Core 2+), it can be easily installed via ATrpms. XFS provides deletion speeds for large files only slightly slower than JFS. According to the test results shown at ( http://aurora.zemris.fer.hr/filesystems/big.html), XFS provide higher I/O rates than JFS, albeit at a higher CPU loading. This may cause issues if you do not have the spare CPU capacity to handle XFS, potentially leading to dropped frames.
MythTV v0.20.2 or later is required to natively support Schedules Direct. Code has been included to make the transition as simple as possible.
You do not need to delete your existing video sources or add new ones!
The following steps should work for most users:
MythTV 0.20.2 or later supports caching of downloaded information from Schedules Direct, so devices that share a common source do not require multiple downloads.
Before beginning, perform a backup of your existing database. See Saving or restoring the database for instructions.
In the following scenario, assume that you have the following:
What we are going to do is to create a single lineup at Schedules Direct and then create two Video Sources which use the same login information but have different channels associated with them.
On your Schedules Direct account, create a lineup that has all of the channels that you can receive. Because we have a Set Top Box (STB), choose a Digital lineup. Yes, this means that you may have 900 channels in this lineup, but that's OK.
Use the Schedules Direct channel editor and unselect any channels that you can't tune without the STB. This will usually be channels higher than 125, but check your CATV provider lineup if you're not sure. Once you've deselected them (using a click on the first channel you can't receive and then a shift-click on the last channel you can't receive will deselect all the channels in between those two.) click the Save Changes button at the bottom of the screen.
In mythtv-setup, create a Video Source with an appropriate name. "SD-Analog Only" will be used in this example. Click "Retrieve Lineups" and select the digital lineup you just created at Schedules Direct.
Click "Finish" to return to the Video sources selector and then press the ESC key to go back to the main screen.
Now choose Input Connections. Select the PVR-150 which is connected directly to the CATV. Set the Video Source to "SD-Analog Only" and click "Fetch channels from listings source".
Set the start channel to an appropriate value.
NOTE: There is a bug where the "Fetch" command may not work; you can tell that the Fetch did not retrieve any channels in one of two ways: in the text-mode console, you will see a connection to Schedules Direct, but it doesn't appear to retrieve any channel information:
2007-08-25 15:03:05.526 New DB DataDirect connection
2007-08-25 15:03:05.526 Connected to database 'mythconverg' at host: localhost
2007-08-25 15:03:05.536 DataDirect: Your subscription expires on 11/23/2007 01:12:10 PM
2007-08-25 15:03:05.707 New DB connection, total: 3
2007-08-25 15:03:05.707 Connected to database 'mythconverg' at host: localhost
2007-08-25 15:03:05.708 sourceid 2 has lineup type: CableDigital
2007-08-25 15:03:06.623 Data fetching complete.
2007-08-25 15:03:06.624 DataDirect: Deleting temporary files
or, the "Please add channels to this source" message in the "Starting channel" field stays on the screen.
If either of these happens, save the information on this screen by clicking the "Finish" button. Exit back to the Input connections screen by pressing ESC, then select this Input Connection again. This time the Fetch will work and the "Please add channels to this source" message will disappear.
If you look at the text-mode console, you'll see this if the channel retrieval is working:
2007-08-25 15:04:32.437 New DB DataDirect connection
2007-08-25 15:04:32.437 Connected to database 'mythconverg' at host: localhost
2007-08-25 15:04:32.447 DataDirect: Your subscription expires on 11/23/2007 01:12:10 PM
2007-08-25 15:04:32.622 New DB connection, total: 3
2007-08-25 15:04:32.622 Connected to database 'mythconverg' at host: localhost
2007-08-25 15:04:32.623 sourceid 2 has lineup type: CableDigital
2007-08-25 15:04:33.418 DataDirect: Adding channel 41 'AMC' (AMC).
2007-08-25 15:04:33.422 DataDirect: Adding channel 32 'A & E Network' (AETV).
2007-08-25 15:04:33.425 DataDirect: Adding channel 66 'Black Entertainment Television' (BET).
2007-08-25 15:04:33.427 DataDirect: Adding channel 180 'Bravo' (BRAVO).
2007-08-25 15:04:33.430 DataDirect: Adding channel 51 'ABC Family' (FAM).
2007-08-25 15:04:33.432 DataDirect: Adding channel 146 'Country Music Television' (CMTV).
2007-08-25 15:04:33.435 DataDirect: Adding channel 39 'CNBC' (CNBC).
2007-08-25 15:04:33.437 DataDirect: Adding channel 36 'Cable News Network' (CNN).
2007-08-25 15:04:33.440 DataDirect: Adding channel 35 'CNN Headline News' (CNNH).
Repeat the Input Connection configuration for any other capture devices that are connected directly to the CATV system. You do not need to click Fetch once you've done one successful download of the channel information - the Starting channel should be automatically populated.
Go back to Schedules Direct and re-enable the channels that you had previously deselected, then click Save Changes.
Create a new Video Source, here called "SD-All Digital Channels". Perform the same "Retrieve Listings" you did before.
Go back to the Input Connections screen, select the PVR-250 which is connected to the STB, assign the "SD-All Digital Channels" video source and perform a retrieve channels. This will pull down the complete channel listing, but only for this device.
When mythfilldatabase runs, it will cache the "big" download which is appropriate for the STB, and then copy the information to the channels that can only be accessed without the STB. But by default mythfilldatabase is going to notice that the "Analog only" video source is missing the channels that are in the Digital lineup you created at Schedules Direct, so we need to override the addition of new channels.
When you run mythfilldatabase to populate your database, you'll need to run it like this:
$ mythfilldatabase --remove-new-channels
You will also need to modify how the mythbackend calls mythfilldatabase when it performs its automatic listings update.
In mythfrontend, select "Setup" -> "General".
Continue press ENTER until you reach the Mythfilldatabase configuration screen. In the "mythfilldatabase Arguments" field, type --remove-new-channels
then press the TAB key until you reach Finish, then press ENTER to save. You can then press ESC until you return to the main screen.