Difference between revisions of "MythTV-HOWTO - 0.26"

From MythTV Official Wiki
Jump to: navigation, search
(Additional information for lirc)
(Post-configuration)
Line 854: Line 854:
  
 
<pre>
 
<pre>
 
 
       From : Sun Jun 13 05:00:00 2004 To : Mon Jun 14 05:00:00 2004 (UTC)
 
       From : Sun Jun 13 05:00:00 2004 To : Mon Jun 14 05:00:00 2004 (UTC)
 
       --02:58:01--
 
       --02:58:01--
Line 882: Line 881:
 
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.
 
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.23, the available options are:
  As of MythTV v0.23, the available options are:
+
<code>
 
 
 
   $ mythbackend --help
 
   $ mythbackend --help
 
   Valid options are:
 
   Valid options are:
Line 900: Line 898:
 
   --noautoexpire                Do not start the AutoExpire thread
 
   --noautoexpire                Do not start the AutoExpire thread
 
   --version                      Version information
 
   --version                      Version information
 +
</code>
  
 +
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.
  
  Running mythbackend as a daemon and using the logfile option will
+
===Configuring a non-master backend===
  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.
 
 
 
  9.3.  Configuring a non-master backend
 
 
 
  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.
 
 
 
  
 +
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.
  
            NOTE: Slave backends must not run a local MySQL
+
'''NOTE''': Slave backends must not run a local MySQL daemon. By default, they will connect to their local daemon rather than the central database, causing unexpected behavior such as empty "Watch Recordings" lists and a failure to locate the Video Sources defined on the master backend. Modify the /usr/local/share/mythtv/mysql.txt file on all slave backends to ensure that the DBHostName has the address of the MySQL server.  Caveat: You may make a slave backend the primary MySQL server, or run a non-MythTV database on a slave backend as long as you have edited the mysql.txt file on all systems and made it consistent.  There can be only one authoritative MySQL database in a MythTV system - errors such as the one above ensue if backends and frontends have differing ideas of which MySQL database they should talk to.
  daemon. By default, they will connect to their local daemon rather
 
  than the central database, causing unexpected behavior such as empty
 
  "Watch Recordings" lists and a failure to locate the Video Sources
 
  defined on the master backend. Modify the
 
  /usr/local/share/mythtv/mysql.txt file on all slave backends to ensure
 
  that the DBHostName has the address of the MySQL server.  Caveat: You
 
  may make a slave backend the primary MySQL server, or run a non-MythTV
 
  database on a slave backend as long as you have edited the mysql.txt
 
  file on all systems and made it consistent.  There can be only one
 
  authoritative MySQL database in a MythTV system - errors such as the
 
  one above ensue if backends and frontends have differing ideas of
 
  which MySQL database they should talk to.
 
  
  Make sure that the IP addresses on the General setup screen are
+
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.
  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
+
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.
  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.
 
  
 +
'''NOTE''': Do not run mythfilldatabase on a non-master backend.
  
 +
===Configuring and running mythfilldatabase===
 +
'''NOTE''': mythfilldatabase might take a while to complete, depending on any number of factors, most of which you can't control. It's best to just let the program run to completion.  mythfilldatabase --help will give a full listing of the options available.
  
        NOTE: Do not run mythfilldatabase on a non-master backend.
+
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.
  
  9.4.  Configuring and running mythfilldatabase
+
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).
  
          NOTE: mythfilldatabase might take a while to complete,
+
====Periodically running mythfilldatabase====
  depending on any number of factors, most of which you can't control.
+
In order to keep your database filled, mythfilldatabase should be run once a day.
  It's best to just let the program run to completion.  mythfilldatabase
 
  --help will give a full listing of the options available.
 
  
  mythfilldatabase --manual is another option; the manual option will
+
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.
  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
+
===Grabbing channel icons for Schedules Direct users===
  for your country, but you do have an XML formatted listings file
+
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.
  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).
 
 
 
  9.4.1.  Periodically running mythfilldatabase
 
 
 
  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.
 
 
 
  9.5.  Grabbing channel icons for Schedules Direct users
 
 
 
  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/icons/master_iconmap directory which will generate
 
  this file for you. Run the command:
 
  
 +
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/icons/master_iconmap directory which will generate this file for you. Run the command:
 +
<code>
 
       $ mkdir ~/.mythtv/channels
 
       $ mkdir ~/.mythtv/channels
 
       $ ./channel_icons.pl --find-missing --rescan
 
       $ ./channel_icons.pl --find-missing --rescan
 +
</code>
  
  If you do not have XMLTV software installed and do not want to install
+
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.
  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
 
 
 
 
 
 
 
  10.  Configuring mythfrontend.
 
 
 
  Once you have completed the 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.
 
 
 
 
 
 
 
        NOTE: You should go through the various setup screens in
 
  mythfrontend before using any other modules to ensure that the the
 
  database is correctly initialized.
 
 
 
  10.1.  General
 
 
 
  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.
 
 
 
  10.2.  Appearance
 
 
 
  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.
 
  
  10.3. Program Guide
+
Once you have an iconmap.xml file, add the icon information to your database and grab any new icons with the command:
 +
<code>
 +
$ mythfilldatabase --import-icon-map iconmap.xml --update-icon-map
 +
</code>
  
  Fairly self explanatory. Note that the alternate program guide does
+
==Configuring mythfrontend==
  not use the same font settings as defined in Appearance, so if the EPG
+
Once you have completed the configuration of your backend systems, the next step is to configure the frontend client.
  is unreadable this is where you make the adjustments to fonts, number
 
  of elements displayed, etc.
 
  
  10.4. Playback
+
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.
  
  The one configuration item which may cause problems on your system is
+
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 "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:
+
'''NOTE''': You should go through the various setup screens in mythfrontend before using any other modules to ensure that the the database is correctly initialized.
  
 +
===General===
 +
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.
  
      $ cat /proc/cpuinfo
+
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.
      [snip]
 
      flags          : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
 
      cmov pat pse36 mmx fxsr sse
 
  
 +
The last General page sets up some final configuration items. See the help text for more information.
  
 +
===Appearance===
 +
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.
  
  Notice the sse at the end of the line - this tells you that this
+
===Program Guide===
  processor will be able to deinterlace correctly.
+
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.
  
  On an AMD processor, look for "3dnow" in the cpuinfo line; "3dnow" is
+
===Playback===
  AMD's implementation of SSE instructions, so if your processor has
+
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.
  3dnow you shouldn't have any issues with deinterlacing.
 
  
  10.4.1.  Video Filters
+
To determine if you've got SSE on an Intel processor, you can:
 +
<code>
 +
$ 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
 +
</code>
  
  MythTV provides a means of employing video filters while recording and
+
Notice the sse at the end of the line - this tells you that this processor will be able to deinterlace correctly.
  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.
 
  
  10.4.2.  Applying filters
+
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.
  
  One or more filters can be included in a "filter chain". The filters
+
====Video Filters====
  to be used are identified in a "filter string". A filter string is a
+
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.
  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:
 
  
 +
====Applying filters====
 +
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:
 +
<code>
 
   With parameters: kerneldeint=10:1,denoise3d=12
 
   With parameters: kerneldeint=10:1,denoise3d=12
  
 
   Without: kerneldeint,denoise3d
 
   Without: kerneldeint,denoise3d
 +
</code>
  
  Recording filters are set for each individual channel. These may be
+
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
  used when encoding in software (MPEG-4, RTjpeg) but do not apply when
+
"videofilters" column.   
  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->PlaybackEnter your filter string in the box titled
 
  "Custom Filters".
 
  
  10.4.3Currently Available Filters
+
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->PlaybackEnter your filter string in the box titled "Custom Filters".
  
  "Deinterlace Playback" checkbox.
+
====Currently Available Filters====
 +
"Deinterlace Playback" checkbox.
  
  This implements special behavior needed for the "bobdeint" filter but
+
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.
  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
+
;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.
 +
;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.
 +
;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.
  
  Invert ignores any parameters and inverts the pixel values of the
+
:'''NOTE''': This filter requires the frame rate to be doubled
  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.
 
 
 
 
 
 
 
        NOTE: This filter requires the frame rate to be doubled
 
 
   and therefore can only be used with the "Deinterlace Playback"
 
   and therefore can only be used with the "Deinterlace Playback"
 
   checkbox.  Do not include this in your filter chain.
 
   checkbox.  Do not include this in your filter chain.
 
+
;The "kerneldeint" filter
  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.  
  Kerneldeint is a more complex deinterlacing filter which applies a
+
::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.
  filter kernel using input from several lines. It generally removes
+
;The "onefield" filter
  combing without a "ghost" image, sometimes leaving a faint outline of
+
: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.
  the image from the other field. It is considered to be less
+
::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.
  distracting to watch than linearblend or no filter at all. It accepts
+
;The "adjust" filter
  one or two integer parameters separated by a colon.
+
: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.
 
+
<code>
  The first parameter is the filter threshold and defaults to 12.
+
1: luma minimum input value (int) 2: luma maximum input value (int) 3:
  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:
 
   luma gamma correction (float) 4: chroma minimum input value (int) 5:
 
   chroma maximum input value (int) 6: chroma gamma correction (float)
 
   chroma maximum input value (int) 6: chroma gamma correction (float)
 +
</code>
 +
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).
  
  The default bt8x8 correction values are equivalent to
+
'''NOTE''': If it is not already specified in the filter chain, this filter will be automatically applied when recording with the "bttv" driver.
  "16:253:1.0:2:253:1.0". Output ranges are fixed at ITU-R601 values
+
;The "quickdnr" filter
  (16-235 luma, 16-240 chroma).
+
: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.
 
+
;The "denoise3d" filter
  NOTE: If it is not already specified in the filter chain, this 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:
  will be automatically applied when recording with the "bttv" driver.
+
::luma spatial filter strength
 
+
::chroma spatial filter strength
  o The "quickdnr" filter
+
::luma temporal filter strength
  
  A fast temporal denoiser. This can take 1, 2 or 4 parameters, each
+
Reasonable defaults will be selected for omitted parameters. The chroma temporal filter strength is calculated from the other filter strengths.
  being a value from "0" for the least filtering to "255" for the
+
;The "crop" filter
  greatest filtering. With one parameter, the filter will compute the
+
: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
  values it should use for all of its variables. Two parameters will set
+
<nowiki>"=1:1:1:1"</nowiki>
  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
+
;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.
  
  A slower denoiser that applies a spatial and temporal low-pass filter.
+
====Usage Considerations====
  The spatial filter can remove some noise that quickdnr can't, but a
+
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:
  more powerful CPU is needed. This filter accepts 3 float parameters:
 
  
 +
For typical broadcast stations: "kerneldeint,quickdnr"
  
  o  luma spatial filter strength
+
For stations with poor signal quality: "linearblend,denoise3d=12"
  
  o  chroma spatial filter strength
+
For synchronous TV-out: check Deinterlace with "Bob (2x framerate)"
  
  o luma temporal filter strength
+
===Recording===
 +
Depending on your capture card, MythTV offers different video encoders. The following types of hardware encoding cards are supported:
 +
*MJPEG - Zoran-based cards; see http://mjpeg.sourceforge.net <http://mjpeg.sourceforge.net>
 +
*MPEG-2 - iTVC15/16 based cards (Hauppauge PVR-250/PVR-350); see http://ivtvdriver.org <http://ivtvdriver.org>
 +
*HDTV - pcHDTV cards; see http://pchdtv.com <http://pchdtv.com> and the Air2PC-ATSC-PCI
 +
*H.264 - HD PVR
 +
*DVB - cards supporting DVB; see http://linuxtv.org <http://linuxtv.org>
 +
*HD Homerun
  
  Reasonable defaults will be selected for omitted parameters. The
+
For cards without hardware encoding capabilities (all cards supported by V4L not listed above), Myth includes two methods for software encoding: RTjpeg and MPEG-4. RTjpeg has significantly fewer CPU demands than MPEG-4, but it generates larger files than MPEG-4 for a given recording.
  chroma temporal filter strength is calculated from the other filter
 
  strengths.
 
  
  o The "crop" filter
+
Any cards which simply demodulate MPEG-2 which has been encoded by the broadcaster (HDTV/ATSC/DVB cards) will not offer much in the way of configuration because the broadcaster will be choosing the bitrate, etc.
 
 
  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.
 
 
 
  10.4.4.  Usage Considerations
 
 
 
  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)"
 
 
 
  10.5.  Recording
 
 
 
  Depending on your capture card, MythTV offers different video
 
  encoders.  The following types of hardware encoding cards are
 
  supported:
 
 
 
  o  MJPEG - Zoran-based cards; see http://mjpeg.sourceforge.net
 
    <http://mjpeg.sourceforge.net>
 
 
 
  o  MPEG-2 - iTVC15/16 based cards (Hauppauge PVR-250/PVR-350); see
 
    http://ivtvdriver.org <http://ivtvdriver.org>
 
 
 
  o  HDTV - pcHDTV cards; see http://pchdtv.com <http://pchdtv.com> and
 
    the Air2PC-ATSC-PCI
 
  o  H.264 - HD PVR
 
 
 
  o  DVB - cards supporting DVB; see http://linuxtv.org
 
    <http://linuxtv.org>
 
 
 
  o  HD Homerun
 
 
 
  For cards without hardware encoding capabilities (all cards supported
 
  by V4L not listed above), Myth includes two methods for software
 
  encoding: RTjpeg and MPEG-4. RTjpeg has significantly fewer CPU
 
  demands than MPEG-4, but it generates larger files than MPEG-4 for a
 
  given recording.
 
 
 
  Any cards which simply demodulate MPEG-2 which has been encoded by the
 
  broadcaster (HDTV/ATSC/DVB cards) will not offer much in the way of
 
  configuration because the broadcaster will be choosing the bitrate,
 
  etc.
 
 
 
  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:
 
  
 +
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:
 +
<code>
 
       (Create new profile group)
 
       (Create new profile group)
 
       Software Encoders
 
       Software Encoders
Line 1,359: Line 1,081:
 
       Hardware MJPEG Encoders
 
       Hardware MJPEG Encoders
 
       Transcoders
 
       Transcoders
 +
</code>
  
 +
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  two 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).
  
  The '(Create new profile group)' option will allow you to create cus-
+
Selecting any of the other options will show a new screen with a list of four profiles:
  tom profiles in case you have multiple backends. Note that custom pro-
+
*Default
  files are per backend and card type. If you have 2 MPEG-2 encoders in
+
*Live TV
  a given backend system, creating a custom profile will affect both of
+
*Low Quality
  them. This option should not be needed otherwise.
+
*High Quality
 
 
  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:
 
 
 
  o  Default
 
 
 
  o  Live TV
 
  
  o  Low Quality
+
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.
  
  o  High Quality
+
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.
 
 
  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.
 
 
 
 
 
 
 
      NOTE: although the width and height can be changed to almost
 
  anything, if you start MythTV and don't see video or you get
 
  "segmentation fault" errors, it is likely that the video4linux (v4l)
 
  subsystem did not like the height and width parameters specified. It's
 
  best to leave the default as-is until you're sure that MythTV is
 
  operational.
 
 
 
  See the ``What capture resolution should I use? How does video work?''
 
  section for more information.
 
 
 
  11.  Using MythTV.
 
 
 
  11.1.  Keyboard commands
 
 
 
  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.
 
 
 
  11.1.1.  mythfrontend
 
 
 
 
 
  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.
 
 
 
 
 
  11.1.2.  Watching TV or a recording
 
 
 
 
 
  11.1.3.  Watching TV only
 
 
 
 
 
  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.)
 
 
 
 
 
  11.1.4.  LiveTV Browse Mode
 
 
 
 
 
  11.1.5.  Playback Recording Zoom Mode
 
 
 
 
 
  11.1.6.  If you have two or more tuner cards
 
 
 
 
 
  11.1.7.  Watching a recording only
 
  
 +
'''NOTE''': although the width and height can be changed to almost anything, if you start MythTV and don't see video or you get "segmentation fault" errors, it is likely that the video4linux (v4l) subsystem did not like the height and width parameters specified. It's best to leave the default as-is until you're sure that MythTV is operational.
  
 +
See the What capture resolution should I use? How does video work? section for more information.
  
 +
==Using MythTV==
 +
===Keyboard commands===
 +
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.
 +
====mythfrontend====
 +
<code>
 +
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.
 +
</code>
 +
====Watching TV or a recording====
 +
====Watching TV only====
 +
<code>
 +
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.)
 +
</code>
 +
====LiveTV Browse Mode====
 +
====Playback Recording Zoom Mode====
 +
====If you have two or more tuner cards====
 +
====Watching a recording only====
 +
<code>
 
   Up or down    keys change the channel
 
   Up or down    keys change the channel
 
     num pad    Type a number to enter a channel number or jump amount (HHMM format)
 
     num pad    Type a number to enter a channel number or jump amount (HHMM format)
Line 1,514: Line 1,185:
 
           >    advance 1 second
 
           >    advance 1 second
  
  11.1.8.  EPG
+
</code>
 
+
====EPG====
 
+
====Setting Program or Channel Recording Priorities====
  11.1.9.  Setting Program or Channel Recording Priorities
+
<code>
 
 
 
 
 
 
 
         Left    browse program prior to current listed program
 
         Left    browse program prior to current listed program
 
         Right    browse program following current listed program
 
         Right    browse program following current listed program
Line 1,580: Line 1,248:
 
                 ?    mark/unmark the current channel as a "favorite"
 
                 ?    mark/unmark the current channel as a "favorite"
 
           / or 4    toggle the guide listing between all channels and filtered "favorites"
 
           / or 4    toggle the guide listing between all channels and filtered "favorites"
 
+
</code>
  11.1.10.  Viewing Scheduled Recordings/Resolving Conflicts
+
====Viewing Scheduled Recordings/Resolving Conflicts====
 
+
<code>
 
 
 
 
 
                   Right    increases priority value
 
                   Right    increases priority value
 
                     Left    decreases priority value
 
                     Left    decreases priority value
Line 1,599: Line 1,265:
 
                     I    edit recording options
 
                     I    edit recording options
 
           Space/Enter    resolve conflict or override
 
           Space/Enter    resolve conflict or override
 +
</code>
  
  11.1.11.  Viewing Search Listings
+
====Viewing Search Listings====
 
+
<code>
 
+
Home    change to the previous view if applicable
  Home    change to the previous view if applicable
+
End    change to the next 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.
    M    select another view if applicable. In the title and description search popup, press M again to edit or delete the selected view.
+
</code>
 
 
  
  11.1.12.  Recording Profiles Setup Screen
+
====Recording Profiles Setup Screen====
 +
<code>
 +
D    on a custom profile group displays a popup to delete the group
 +
</code>
  
 +
====Recording Groups====
 +
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.
 +
<code>
 +
M    change the view or to set a group password
 +
I    move a program from one Recording Group to another
 +
</code>
  
  D    on a custom profile group displays a popup to delete the group
+
====Watch Recordings Screen====
 
+
<code>
 
+
1 or F1    Meaning of the icons
  11.1.13.  Recording Groups
+
      /    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.
  In the Watch Recordings screen, Recording Groups allow you to separate
+
</code>
  programs into user-defined categories, such as "Kids", "Alice", "Bob",
+
====Remote Controls====
  etc.  This can be used to reduce clutter, or to segregate content if
+
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.
  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
 
 
 
 
 
  11.1.14.  Watch Recordings Screen
 
 
 
 
 
  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.
 
 
 
 
 
  11.1.15.  Remote Controls
 
 
 
  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.
 
 
 
  
 +
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.
 +
<code>
 
       REMOTE CONTROL    LIRC KEYSTROKE    FUNCTION
 
       REMOTE CONTROL    LIRC KEYSTROKE    FUNCTION
 
               0 - 9    0 - 9              channel selection, EPG navigation, ff/rew speed setting (with stickykeys)
 
               0 - 9    0 - 9              channel selection, EPG navigation, ff/rew speed setting (with stickykeys)
Line 1,663: Line 1,311:
 
         Other key 1    i                  Information
 
         Other key 1    i                  Information
 
         Other key 2    c                  Change tuner card input
 
         Other key 2    c                  Change tuner card input
 +
</code>
 +
===Using themes with MythTV===
  
  11.2.  Using themes with MythTV
+
TODO - this is all over the web now.
 
 
  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.23.tar.bz2
 
      $ cd ~/myththemes-0.23
 
      $ qmake myththemes.pro
 
      $ su -
 
      # make install
 
      # exit
 
      $
 
 
 
 
 
 
 
  The theme will now be available in the mythfrontend Appearance
 
  section.
 
 
 
  11.3.  Adding support for an external tuner
 
 
 
  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
 
  <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/ <http://www.dtvcontrol.com/> for cable
 
  pinouts.
 
 
 
  11.4.  Using Shutdown/Wakeup
 
 
 
  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:
 
 
 
  
  o  Use another server that runs 24/7 and have it send a WakeOnLAN
+
===Adding support for an external tuner===
    (WOL) packet to wake the Master backend. This assumes that you have
+
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.
    the WOL tools installed, and that your Master backend motherboard
 
    supports WOL.
 
  
  o  Use your motherboard's BIOS wakeup capability. You'll need a
+
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.
    motherboard that supports BIOS wakeup, and some tools. See
 
    http://www.mythtv.org/wiki/ACPI_Wakeup
 
    <http://www.mythtv.org/wiki/ACPI_Wakeup> for details on the best
 
    ways to accomplish this.
 
  
  11.4.1A deeper look into the operation
+
Feel free to browse some of what sort of hardware is available at http://store.snapstream.com/accessories.html <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/ <http://www.dtvcontrol.com/> for cable pinouts.
  
  The scheduler keeps track of the idle status of the MythTV system. To
+
===Using Shutdown/Wakeup===
  determine whether or not the MythTV system is idle, the following
+
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.
  conditions must be met for a period of time defined in the "Idle
 
  timeout (secs)" parameter.
 
  
  o  no client is connected to the server
+
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:
 +
*Use another server that runs 24/7 and have it send a WakeOnLAN (WOL) packet to wake the Master backend. This assumes that you have the WOL tools installed, and that your Master backend motherboard supports WOL.
 +
*Use your motherboard's BIOS wakeup capability. You'll need a motherboard that supports BIOS wakeup, and some tools. See http://www.mythtv.org/wiki/ACPI_Wakeup <http://www.mythtv.org/wiki/ACPI_Wakeup> for details on the best ways to accomplish this.
  
  o  no recording (neither LiveTV nor a regular recording) is currently
+
====A deeper look into the operation====
    taking place
+
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.
 +
*no client is connected to the server
 +
*no recording (neither LiveTV nor a regular recording) is currently taking place
 +
*no recording starts within a definable amount of time ("Max. wait for recording (min)")
 +
*the "pre Shutdown check-command" returns 0
  
  o  no recording starts within a definable amount of time ("Max. wait
+
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".
    for recording (min)")
 
  
  o  the "pre Shutdown check-command" returns 0
+
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.
  
  If we get to this idle state the Master backend will set the
+
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.
  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
+
====Setting up the MythTV side of this extension====
  was started by a wakeup call or by the user. If it thinks it was woken
+
There are a number of options that are used to control the Shutdown / Wakeup feature.
  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
+
Shutdown/Wakeup Options:
  first and will wakeup the Slave backends using the "Wake command for
+
*"Idle timeout (secs)" is the time the server waits while idle until a shutdown occurs.
  slaves". At this time, there is no support for starting only the
+
*"Max. wait for recording (min)" is the time the Master backend waits for a recording without shutting down. For example, this would be used to prevent a 10 minute system shutdown if a recording is set to start 15 minutes from now.
  required Slave backend, so all Slave backends will startup.
+
*"Startup before rec. (secs)" Sets how long before a programmed recording the MythTV system will be woken up. This should be roughly be the time your systems need to bootup, and if you have Slave backends, you'll need to ensure this value is long enough for all your machines to perform their bootup cycle.
 +
*"Wakeup time format" is the format of the wakeup time that is given in the "Set wakeuptime command" as a parameter "$time". You need to set this according to your wakeup mechanism. If you need seconds since the epoch (1970-01-01) set the "Wakeup time format" to "time_t".
 +
*"Set wakeuptime command" is the command executed to set the new wakeuptime.
 +
*"Server Halt Command" is the command executed to shutdown the Master backend and the Slave backends.
 +
*"pre Shutdown check-command" is used to give a "Go/NO-GO" decision from a non-MythTV source. This command is executed immediately before the shutdown would occur. The return value is use to make the following choices:
 +
:*If it returns a "0" the shutdown will occur as scheduled.
 +
:*If it returns a "1" the "idle timeout" will be reset and the system waits again for the timeout.
 +
:*If it returns a "2" the entire shutdown sequence is reset. This means that a new client connect is needed before a shutdown occurs, unless you have the "Wait for client connect" setting disabled, in which case this is the same as returning "1". An example of a use for this return value is to prevent the shutdown if a user is currently logged in, or if a specific program (i.e. transcode, automatic updates, etc.) is currently running. If you don't need it, leave the field blank.
  
  11.4.2Setting up the MythTV side of this extension.
+
The "WakeOnLan settings": These settings have nothing to do with using BIOS or WOL wakeup, they are the same for both.
 +
*"Master backend" This setting defines timings for the frontends to wakeup the Master backend using WOL. Useful if your frontend can emit a WOL packet so you don't need to physically go to the Master backend if you're trying to watch TV.
 +
*"Reconnect wait time (secs)" is the time the frontend waits after executing the "Wake command" before attempting to retry the connection. This should be roughly the amount of time your Master backend needs for bootupSet to "0" to disable. The frontends will retry to connect for "Count of reconnect tries" times before giving up.
 +
*"Wake command for slaves" is the one command executed to wake your Slave backends. This should be a script that contains the calls to wakeup all Slave backend systems.
 +
=====Using WOL to wake your Master backend=====
 +
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.
  
  There are a number of options that are used to control the Shutdown /
+
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:
  Wakeup feature.
+
<code>
 +
#! /bin/sh
 +
echo $@ | nc $SERVER $PORT
 +
</code>
  
  Shutdown/Wakeup Options:
+
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:
 
 
  o  "Idle timeout (secs)" is the time the server waits while idle until
 
    a shutdown occurs.
 
 
 
  o  "Max. wait for recording (min)" is the time the Master backend
 
    waits for a recording without shutting down. For example, this
 
    would be used to prevent a 10 minute system shutdown if a recording
 
    is set to start 15 minutes from now.
 
 
 
  o  "Startup before rec. (secs)" Sets how long before a programmed
 
    recording the MythTV system will be woken up. This should be
 
    roughly be the time your systems need to bootup, and if you have
 
    Slave backends, you'll need to ensure this value is long enough for
 
    all your machines to perform their bootup cycle.
 
 
 
  o  "Wakeup time format" is the format of the wakeup time that is given
 
    in the "Set wakeuptime command" as a parameter "$time". You need to
 
    set this according to your wakeup mechanism. If you need seconds
 
    since the epoch (1970-01-01) set the "Wakeup time format" to
 
    "time_t".
 
 
 
  o  "Set wakeuptime command" is the command executed to set the new
 
    wakeuptime.
 
 
 
  o  "Server Halt Command" is the command executed to shutdown the
 
    Master backend and the Slave backends.
 
 
 
  o  "pre Shutdown check-command" is used to give a "Go/NO-GO" decision
 
    from a non-MythTV source. This command is executed immediately
 
    before the shutdown would occur. The return value is use to make
 
    the following choices:
 
 
 
    o  If it returns a "0" the shutdown will occur as scheduled.
 
 
 
    o  If it returns a "1" the "idle timeout" will be reset and the
 
        system waits again for the timeout.
 
 
 
    o  If it returns a "2" the entire shutdown sequence is reset. This
 
        means that a new client connect is needed before a shutdown
 
        occurs, unless you have the "Wait for client connect" setting
 
        disabled, in which case this is the same as returning "1". An
 
        example of a use for this return value is to prevent the
 
        shutdown if a user is currently logged in, or if a specific
 
        program (i.e. transcode, automatic updates, etc.) is currently
 
        running. If you don't need it, leave the field blank.
 
 
 
  The "WakeOnLan settings": These settings have nothing to do with using
 
  BIOS or WOL wakeup, they are the same for both.
 
 
 
  o  "Master backend" This setting defines timings for the frontends to
 
    wakeup the Master backend using WOL. Useful if your frontend can
 
    emit a WOL packet so you don't need to physically go to the Master
 
    backend if you're trying to watch TV.
 
 
 
  o  "Reconnect wait time (secs)" is the time the frontend waits after
 
    executing the "Wake command" before attempting to retry the
 
    connection. This should be roughly the amount of time your Master
 
    backend needs for bootup.  Set to "0" to disable. The frontends
 
    will retry to connect for "Count of reconnect tries" times before
 
    giving up.
 
 
 
  o  "Wake command for slaves" is the one command executed to wake your
 
    Slave backends. This should be a script that contains the calls to
 
    wakeup all Slave backend systems.
 
 
 
  11.4.2.1.  Using WOL to wake your Master backend.
 
 
 
  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 nec-
 
  essary 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:
 
  
 +
If you use inetd:
 +
In /etc/inetd.conf add:
 +
<code>
 +
mythwake stream tcp nowait mythtv /usr/sbin/tcpd /usr/local/bin/mythwake
 +
</code>
  
 +
If you use xinetd, save the following as mythwake in your /etc/xinet.d/ directory:
 +
<code>
 
       service mythwake
 
       service mythwake
 
         {
 
         {
Line 1,884: Line 1,390:
 
               server          = /usr/local/bin/mythwake
 
               server          = /usr/local/bin/mythwake
 
         }
 
         }
 
+
</code>
 
+
and add the following to /etc/services:
 
+
<code>
  and add the following to /etc/services:
 
 
 
 
 
 
       mythwake        $PORT/tcp
 
       mythwake        $PORT/tcp
 +
</code>
  
 
+
Finally, /usr/local/bin/mythwake looks like:
 
+
<code>
  Finally, /usr/local/bin/mythwake looks like:
 
 
 
 
 
 
       #! /bin/bash
 
       #! /bin/bash
 
       #this should be a command to wake your server
 
       #this should be a command to wake your server
Line 1,908: Line 1,409:
 
       #now set the atjob
 
       #now set the atjob
 
       echo -e "$WAKECMD" | at $date ;
 
       echo -e "$WAKECMD" | at $date ;
 +
</code>
  
  SECURITY WARNING: Be sure to secure $SERVER:$PORT from untrusted net-
+
SECURITY WARNING: Be sure to secure $SERVER:$PORT from untrusted networks, because this allows 3rd parties to run arbitrary code on your server!
  works, because this allows 3rd parties to run arbitrary code on your
 
  server!
 
 
 
  11.4.2.2.  Using BIOS wakeup to wake your Master backend.
 
 
 
  See http://www.mythtv.org/wiki/ACPI_Wakeup
 
  <http://www.mythtv.org/wiki/ACPI_Wakeup> for the best ways to
 
  accomplish this.
 
 
 
  11.4.3.  Wakeup the MySQL server using WOL
 
 
 
  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.
 
 
 
  11.4.4.  Tips/Tricks:
 
 
 
  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.
 
 
 
  11.5.  Controlling the mythfrontend via telnet
 
  
  To use this feature you must first enable it in
+
=====Using BIOS wakeup to wake your Master backend=====
  Settings>General>General
+
See http://www.mythtv.org/wiki/ACPI_Wakeup <http://www.mythtv.org/wiki/ACPI_Wakeup> for the best ways to accomplish this.
 
+
====Wakeup the MySQL server using WOL====
  The network control listens on port 6546, as demonstrated below:
+
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.
 +
====Tips/Tricks:====
 +
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 ''cdialog'', 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.
  
 +
===Controlling the mythfrontend via telnet===
 +
To use this feature you must first enable it in Settings>General>General
  
 +
The network control listens on port 6546, as demonstrated below:
 +
<code>
 
   $ telnet basement 6546
 
   $ telnet basement 6546
 
   Connected to basement.
 
   Connected to basement.
Line 1,981: Line 1,459:
 
   # exit
 
   # exit
 
   $
 
   $
 +
</code>
  
 +
Please note that this feature only allows one connection at a time, so any new connections will automatically terminate prior ones.
 +
==Scheduling Recordings==
 +
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.
 +
===Record Types===
 +
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.
 +
*Single Record -- record only this title at this specific time and this station. This is the best way to be sure that a certain showing will be recorded. However, if the TV listings change and the show is not broadcast at that time, the show will not be recorded but will be marked as Not Listed to let you know that you should investigate.
 +
*Find One -- this will record a title once from any of the times that appear in the TV listings. This is useful for recording a movie or special that has multiple showings because it allows the scheduler to choose one that doesn't conflict. It is not a good choice for recording a single episode of a series because it records the first available showing of the title without regard to the episode information.
 +
*Record Weekly -- this records a show whenever the title is listed on the same channel, weekday and time. Note that if the TV station changes the schedule for a special episode, it would not be recorded. However, you can add a Single record for the special episode. If there are no matching showings in the TV listings, a Not Listed item will be added to your schedule for the next time slot to let you know that you should investigate.
 +
*Find Weekly -- this will record a title once per week from any of the times that appear in the TV listings beginning from the time of the showing that was selected when the rule was set. This is useful for news, current events or other programs where the same episode is shown several times each week but the listings may not include descriptive information. This may not be a good choice if there are different episodes shown during the week.
 +
*Record Daily -- this records a show whenever the title is listed for the time and station on any day of the week. Here again, a show will not be recorded if the time was altered by the station. If there are no matching showings in the TV listings, a Not Listed item will be added to your schedule for the next time slot to let you know that you should investigate.
 +
*Find Daily -- this will record a title once per day from any of the times that appear in the TV listings beginning from the time of the showing that was selected when the rule was set. This is useful for news, current events or other programs where the same episode is shown several times each day but the listings may not include descriptive information. This may not be a good choice if there are different episodes shown during the day.
 +
*Channel Record -- records one showing of each unique episode from any of the times the title is listed on this station. This is perhaps the most common rule to use for most shows.
 +
*Record All -- records one showing of each unique episode from any of the times this title is listed on any channel. This can be useful if a station has sister stations where shows are rebroadcast allowing the scheduler to record rebroadcasts on the other station when the original airing cannot be recorded.
 +
===Scheduling Options===
 +
====Priority====
 +
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.
  
  Please note that this feature only allows one connection at a time, so
+
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.
  any new connections will automatically terminate prior ones.
+
;Per record rule
 
+
:this is the "priority" selection in the "Scheduling Options" section of the options page and this value is included for any showings that match the recording rule. You may choose to only use these values and not use the other factors for the sake of simplicity and clarity.
  12.  Scheduling Recordings.
+
;Per record type
 
+
:Setup->TV Settings->Recording Priorities->General allows you to add to the priority based on the type. It may make sense to increase the value for "Single" so that by default they have an extra advantage over other shows. The default is +1. You may want to decrease the value for Find rules so that they will be less likely to interfere with regularly scheduled shows and will be more likely to record in a non-conflicting time instead.  The default is -1.
  The MythTV master backend is responsible for managing the schedule for
+
;Per channel
  all TV tuner cards on the master and any slave. Its job is to search
+
:Setup->TV Settings->Recording Priorities->Channel Priorities can be useful if you believe that you prefer any of the shows on certain channels. This would give all shows on a channel an advantage by default.
  the TV listing for the shows you have requested and assign recordings
+
;Input priority
  to the TV tuner cards. If none of the shows that you've chosen
+
:in the "mythtv-setup" program, the "Input Connections" section allows you to add additional priority in the "Input priority".  This is simply another priority factor but has an interesting effect. If a card input has a higher value than the other cards, the scheduler will see that you would rather record showings of episodes on this input rather than a showing on other inputs. If you have multiple cards of different quality, you may want to set input priority to encourage the scheduler to record shows on your best card(s) whenever possible. This can also be useful if you have multiple video sources which include the same stations. For example, with digital and analog cable you could increase the digital cable input preference by 1 to tell the scheduler that you want to record from the digital channel whenever possible but the channel on the analog input could still be used when the digital input is busy.
  overlap, it simply records all of them. However, if there are shows
+
;Custom Priority
  where the beginning and end times overlap, the scheduler follows rules
+
:this allows you to add any specialized factors you would like in order to influence scheduling decisions. See the Custom Priority section below.
  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.
 
 
 
  12.1.  Record Types
 
 
 
  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.
 
 
 
 
 
  o  Single Record -- record only this title at this specific time and
 
    this station. This is the best way to be sure that a certain
 
    showing will be recorded. However, if the TV listings change and
 
    the show is not broadcast at that time, the show will not be
 
    recorded but will be marked as Not Listed to let you know that you
 
    should investigate.
 
 
 
  o  Find One -- this will record a title once from any of the times
 
    that appear in the TV listings. This is useful for recording a
 
    movie or special that has multiple showings because it allows the
 
    scheduler to choose one that doesn't conflict. It is not a good
 
    choice for recording a single episode of a series because it
 
    records the first available showing of the title without regard to
 
    the episode information.
 
 
 
  o  Record Weekly -- this records a show whenever the title is listed
 
    on the same channel, weekday and time. Note that if the TV station
 
    changes the schedule for a special episode, it would not be
 
    recorded. However, you can add a Single record for the special
 
    episode. If there are no matching showings in the TV listings, a
 
    Not Listed item will be added to your schedule for the next time
 
    slot to let you know that you should investigate.
 
 
 
  o  Find Weekly -- this will record a title once per week from any of
 
    the times that appear in the TV listings beginning from the time of
 
    the showing that was selected when the rule was set. This is useful
 
    for news, current events or other programs where the same episode
 
    is shown several times each week but the listings may not include
 
    descriptive information. This may not be a good choice if there are
 
    different episodes shown during the week.
 
 
 
  o  Record Daily -- this records a show whenever the title is listed
 
    for the time and station on any day of the week. Here again, a show
 
    will not be recorded if the time was altered by the station. If
 
    there are no matching showings in the TV listings, a Not Listed
 
    item will be added to your schedule for the next time slot to let
 
    you know that you should investigate.
 
 
 
  o  Find Daily -- this will record a title once per day from any of the
 
    times that appear in the TV listings beginning from the time of the
 
    showing that was selected when the rule was set. This is useful for
 
    news, current events or other programs where the same episode is
 
    shown several times each day but the listings may not include
 
    descriptive information. This may not be a good choice if there are
 
    different episodes shown during the day.
 
 
 
  o  Channel Record -- records one showing of each unique episode from
 
    any of the times the title is listed on this station. This is
 
    perhaps the most common rule to use for most shows.
 
 
 
  o  Record All -- records one showing of each unique episode from any
 
    of the times this title is listed on any channel. This can be
 
    useful if a station has sister stations where shows are rebroadcast
 
    allowing the scheduler to record rebroadcasts on the other station
 
    when the original airing cannot be recorded.
 
 
 
  12.2.  Scheduling Options
 
 
 
  12.2.1.  Priority
 
 
 
  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.
 
 
 
 
 
  o  Per record rule -- this is the "priority" selection in the
 
    "Scheduling Options" section of the options page and this value is
 
    included for any showings that match the recording rule. You may
 
    choose to only use these values and not use the other factors for
 
    the sake of simplicity and clarity.
 
 
 
  o  Per record type -- Setup->TV Settings->Recording
 
    Priorities->General allows you to add to the priority based on the
 
    type. It may make sense to increase the value for "Single" so that
 
    by default they have an extra advantage over other shows. The
 
    default is +1. You may want to decrease the value for Find rules so
 
    that they will be less likely to interfere with regularly scheduled
 
    shows and will be more likely to record in a non-conflicting time
 
    instead.  The default is -1.
 
 
 
  o  Per channel -- Setup->TV Settings->Recording Priorities->Channel
 
    Priorities can be useful if you believe that you prefer any of the
 
    shows on certain channels. This would give all shows on a channel
 
    an advantage by default.
 
 
 
  o  Input priority -- in the "mythtv-setup" program, the "Input
 
    Connections" section allows you to add additional priority in the
 
    "Input priority".  This is simply another priority factor but has
 
    an interesting effect. If a card input has a higher value than the
 
    other cards, the scheduler will see that you would rather record
 
    showings of episodes on this input rather than a showing on other
 
    inputs. If you have multiple cards of different quality, you may
 
    want to set input priority to encourage the scheduler to record
 
    shows on your best card(s) whenever possible. This can also be
 
    useful if you have multiple video sources which include the same
 
    stations. For example, with digital and analog cable you could
 
    increase the digital cable input preference by 1 to tell the
 
    scheduler that you want to record from the digital channel whenever
 
    possible but the channel on the analog input could still be used
 
    when the digital input is busy.
 
 
 
  o  Custom Priority -- this allows you to add any specialized factors
 
    you would like in order to influence scheduling decisions. See the
 
    ``Custom Priority'' section below.
 
 
 
    For any single showing of any show you've chosen to record, these
 
    factors are added together to find the "total priority". This is
 
    the priority that the scheduler uses to decide which showings are
 
    given the first choice when filling in the schedule.
 
 
 
  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).
 
 
 
  12.2.2.  Duplicates
 
 
 
  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.
 
  
  12.2.3.  Conflicts
+
For any single showing of any show you've chosen to record, these factors are added together to find the "total priority". This is the priority that the scheduler uses to decide which showings are given the first choice when filling in the schedule.
  
  As you add more shows that you would like to record, the scheduler
+
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).
  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.
 
  
  12.2.4.  Scheduling decisions
+
====Duplicates====
 +
Singles will record without regard to duplicate matching.
  
  Here are the actual decisions made by the scheduler as it fills in the
+
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.
  schedule.
 
  
 +
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.
  
  o  Currently recording beats not currently recording -- A recording in
+
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.
    progress can not be moved to another input or time so it "wins" its
 
    current timeslot.
 
  
  o  Single, Daily, or Weekly rules with no match are marked Not Listed
+
====Conflicts====
    -- If these or Overrides do not match the current listings because
+
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.
 +
====Scheduling decisions====
 +
Here are the actual decisions made by the scheduler as it fills in the schedule.
 +
;Currently recording beats not currently recording
 +
:A recording in progress can not be moved to another input or time so it "wins" its current timeslot.
 +
*Single, Daily, or Weekly rules with no match are marked Not Listed
 +
If these or Overrides do not match the current listings because
 
     the listings have changed, they are added to the schedule and
 
     the listings have changed, they are added to the schedule and
 
     marked to indicate that they will not record.
 
     marked to indicate that they will not record.

Revision as of 19:42, 25 February 2011

Contents

First things first

NOTE: Please note that I, Robert Kulagowski, am NOT the author/programmer of the MythTV application! I can not give you personalized installation support. If you are having issues installing MythTV you should examine the archives, or post your question to the MythTV-users mailing list. If you send me "Does MythTV work with 'X'"? messages - I will simply instruct you to ask your question on the mythtv-users mailing list.

What is MythTV

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:

  • You may pause, fast-forward and rewind live Television.
  • You may install multiple video capture cards to record more than one program at a time.
  • You can have multiple servers (called "backends"), each with multiple capture cards in them. All scheduling is performed by the Master backend, which arbitrates which recording will be performed by each device. All recording requests are managed by the Master backend, so you can schedule a recording from any client.
  • You can have multiple clients (called "frontends" in MythTV parlance), each with a common view of all available programs. Any client can watch any program that was recorded by any of the servers, assuming that they have the hardware capabilities to view the content; a low-powered frontend will not be able to watch HDTV, for example. Clients can be diskless and controlled entirely by a remote control.
  • You may use any combination of standard analog capture card, MPEG-2, MJPEG, DVB, HDTV, USB and firewire capture devices. With appropriate hardware, MythTV can control set top boxes, often found in digital cable and satellite TV systems.
  • Program Guide Data in North America is downloaded from schedulesdirect.org, a non-profit organization which has licensed data from Tribune Media Services. This service provides almost two weeks of scheduling information. Program Guide Data in other countries is obtained using XMLTV. MythTV uses this information to create a schedule that maximizes the number of programs that can be recorded if you don't have enough tuners.
  • MythTV implements a UPNP server, so a UPNP client should automatically see content from your MythTV system.


Other modules in MythTV include:
  • MythArchive, a tool to create DVDs
  • MythBrowser, a web browser
  • MythFlix, a Netflix module
  • MythGallery, a picture-viewing application
  • MythGame
  • MythMusic, a music playing / ripping application which supports MP3 and FLAC
  • MythNews, a RSS news grabber
  • MythVideo, DVD ripper and a media-viewer for content not created within MythTV
  • MythWeather
  • MythWeb, which allows you to control your MythTV system using a web browser. With MythWeb, you can schedule and delete recordings, change keybindings and more. With proper security, you may even schedule a program over the Internet and have it immediately acted on by the Master backend.

QuickStart

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 Arch Linux optimized for MythTV.

See http://www.minimyth.org for a small MythTV distribution which can be booted over a network.

See http://wilsonet.com/mythtv/ for instructions tailored to RedHat's Fedora Core distribution.

See http://www.mythbuntu.org/ for a distribution using a customized Ubuntu.

See http://www.mythdora.com/ for a distribution using a customized Fedora Core.

Upgrading from previous versions

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.

How to obtain this document / PDF versions of this document

This HOWTO document is maintained at the primary MythTV website: http://www.mythtv.org <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 <http://www.mythtv.org/docs/mythtv-HOWTO-singlehtml.html> or as a PDF at http://www.mythtv.org/docs/mythtv-HOWTO.pdf <http://www.mythtv.org/docs/mythtv-HOWTO.pdf>.

This HOWTO is for MythTV v0.24

Release notes for this version may be found in the MythTV Wiki at http://www.mythtv.org/wiki/Release_Notes_-_0.24 <http://www.mythtv.org/wiki/Release_Notes_-_0.24>

Books about MythTV

If you would like to purchase a book specifically about MythTV:

Note that these books cover earlier versions of MythTV.

Document conventions

The following conventions are used throughout this document.

boldface - used for program names.

typewriter - used for program paths.

emphasis - Pay attention here. Pay more attention. Ignore at your own peril.

Feature that has been added to SVN (subversion, a revision control system) but is not available in the current release.

Mailing lists / getting help

It's recommended that you join the user list at http://www.mythtv.org/mailman/listinfo/mythtv-users <http://www.mythtv.org/mailman/listinfo/mythtv-users>. The developer list is at http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev <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/ <http://www.gossamer-threads.com/lists/mythtv/>.

IRC

There are two IRC channels dedicated to MythTV which can be found on irc.freenode.net

  • mythtv
  • mythtv-users

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.

Really. Even if there's no one in the mythtv-users IRC group or everyone seems to be ignoring you.

Bug database

If you feel you need to contribute to a bug database, use the MythTV bug ticketing system at http://svn.mythtv.org/trac <http://svn.mythtv.org/trac>.

Good entries will contain the following:

  1. Qt version
  2. Linux distribution
  3. gcc version
  4. the last entry in config.log to detail how you compiled
  5. MythTV version numbers (e.g.from mythfrontend --version)
  6. Hardware
  7. How you are able to reproduce the bug

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/Feature_Wishlist <http://www.mythtv.org/wiki/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.

Introduction

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.

Checking prerequisites

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

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.

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/ <http://www.gossamer-threads.com/lists/mythtv/> or post a question to the list.

CPU Type and Speed

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.

Software / CPU-based encoding

MythTV has two modes of operation for capturing video. First, it can function as a software video encoder, which means that it can use 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.

That being said, due to the digital conversion in the United States, there are fewer sources of NTSC analog video, and cheap silicon has made it easier to include MPEG-2 encoders into hardware capture cards. In addition, the sale of "analog-only" cards has been severely curtailed in the United States, and one vendor received a fine for failing to include notification that their device was analog-only. http://hraunfoss.fcc.gov/edocs_public/attachmatch/DA-08-493A1.txt <http://hraunfoss.fcc.gov/edocs_public/attachmatch/DA-08-493A1.txt>

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:

  • A PIII/733MHz system can encode one video stream using the MPEG-4 codec using 480x480 capture resolution. This does not allow for live TV watching, but does allow for encoding video and then watching it later.
  • A developer states that his AMD1800+ system can almost encode two MPEG-4 video streams and watch one program simultaneously.
  • A PIII/800MHz system with 512MB RAM can encode one video stream using the RTjpeg codec with 480x480 capture resolution and play it back simultaneously, thereby allowing live TV watching.
  • A dual Celeron/450MHz is able to view a 480x480 MPEG-4/3300kbps file created on a different system with 30% CPU usage.
  • A P4 2.4GHz machine can encode two 3300Kbps 480x480 MPEG-4 files and simultaneously serve content to a remote frontend.

Hardware based encoding

The second mode of operation is where MythTV is paired with a hardware-based video encoder, in which case MythTV will primarily be I/O bound. There are several examples of such devices, like the Hauppauge WinTV-PVR-150/250/350/500 series, the Hauppauge HD-PVR (H.264 High-Def capture using Component inputs), or the Silicon Dust HDHomerun. In this mode, because the video encoding is being done by a dedicated video processor (the Hauppauge encoders), or the device is simply writing the data to disk (the HDHR and other digital devices, such as DVB cards) the host CPU requirements are quite low. See the Video Capture Device section for details.


Primary development in MythTV has transitioned to supporting MPEG-2 capture devices, H.264 and HDTV, so if given the option, go with the hardware encoder or choose a ATSC capture device. Because of the transition to digital broadcast in the United States, most television stations are now digital-only. There are still analog stations in the U.S., but a majority are low-powered. Canada still has analog broadcasts.

Analog encoding or hardware MPEG-2 encoding may still be required if you are trying to capture standard definition video sources, such as set-top-boxes.

Memory

A MythTV host that is both a backend and a frontend and using software encoding with a single capture card should run adequately in 512MB of RAM. Additional RAM above 512MB will not necessarily increase performance, but may be useful if you are running multiple encoders.

Hard Disk(s)

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.

Filesystems

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 them 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 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. NOTE: You must not use ReiserFS v3 for your recordings. You will get corrupted recordings if you do. 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 ``Advanced Partition Formatting sections for some pointers.

Video Capture Device

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.

Frame Grabbers

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 (http://listman.redhat.com/mailman/listinfo/video4linux-list <http://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.

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.

Hardware MPEG-2 encoders

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 <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. Using the on-board MPEG-2 encoder greatly reduces the CPU requirements for encoding.

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 <http://ivtvdriver.org> for the latest information on what works and what doesn't.

Here are some data points for encoding:

  • A Celeron 450 uses 2% CPU for encoding a 480x480 16Mbps MPEG-2 stream.

Here are some data points for decoding:

  • An Athlon 1800XP can decode a 720x480 8Mbps MPEG-2 file using 10% CPU
  • An Athlon 1GHz can decode a 720x480 16Mbps MPEG-2 file using 30-50% CPU, can decode a 480x480 16Mbps MPEG-2 using 30% CPU and approximately 30% for Live TV at 416x480.
DVB capture cards

DVB is a video standard primarily found in Europe (where it comes in DVB-C, DVB-T and DVB-S and -S2 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 <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/ <http://www.lyngsat.com/> for the types of content which are available.

HDTV

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/ <http://www.linuxtv.org/> Some cards support capture of unencrypted digital cable TV (utilizing QAM64 or QAM256), others will only work with Over The Air signals captured with an antenna (with 8VSB).

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.

Hauppauge HD PVR

Hauppuage makes a device called the HD PVR, which accepts component HDTV signals and TOSLINK / SPDIF audio and performs a real-time encode into H.264. See http://www.hauppauge.com/site/products/data_hdpvr.html <http://www.hauppauge.com/site/products/data_hdpvr.html> for additional information.

Playback of HDTV using CPU

To playback HDTV content, plan on a powerful CPU if your video card does not provide support for offloading video decode. (See below for a description of VDPAU)

"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 video decode acceleration.

Playback of HDTV using VDPAU

NVIDIA now incorporates MPEG-2 and H.264 decode acceleration in their binary driver; this is now officially supported in MythTV 0.22 or later. Use of VDPAU offloads the decompression and deinterlacing of video to the video GPU rather than the CPU of the frontend, so the CPU requirements are drastically lowered. A fanless frontend using an Intel Atom CPU running a single-core at 1.6Ghz is sufficient to decode and deinterlace MPEG-2 and H.264 if it has VDPAU supported video.

Firewire

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. Many users have resorted to using Firewire to change channels on their set-top-box and capture the High Def video using the Component output fed into a Hauppauge HD PVR.

DBoxII or other devices running Neutrino

You may use the Ethernet port of an DBoxII or a similar device to capture MPEG-2. Your set top box has to be running the Neutrino GUI.

USB Capture Devices

The Plextor ConvertX PVR devices are supported through Linux drivers available from http://go7007.imploder.org/ <http://go7007.imploder.org/>. MythTV uses the Plextor to capture hardware encoded MPEG-4, so the host CPU requirements are low.

Hauppauge WinTV-PVR-USB2 and variants are supported by the Linux Kernel as of 2.6.18. Additional information is available at http://www.isely.net/pvrusb2/ <http://www.isely.net/pvrusb2/>).

IP Recorder (RTSP, RTS, UDP)

MPEG-2, MPEG-4 and H.264 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 it can also be read 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.

Sound card

The system needs a sound card or an on-board equivalent on the motherboard to play back and in some 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.

NOTE: Analog video capture cards are the only ones which require a sound card for capturing audio. DVB, HDTV, and other hardware encoder cards all provide a combined audio / video stream. If you're not using a V4L analog device, you may skip this section.

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.


NOTE: Plugging a Line-level device into the Mic input is not recommended. Line-level devices have higher voltages and can damage the sound card. In addition, even if it doesn't break your card, you will be getting Mono sound. See the Linux MP3 HOWTO at http://www.tldp.org/HOWTO/MP3-HOWTO.html <http://www.tldp.org/HOWTO/MP3-HOWTO.html> for additional information.

Video Display Card

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.

Cards with TV-out

This 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/ <http://www.gossamer-threads.com/lists/mythtv/> using the card name in your search string.

NVIDIA

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/ <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 <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. VDPAU is another new feature and it provides an API for offloading MPEG-2 and H.264 to the GPU.

External Adapters

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:

  • AITech Web Cable Plus, powered by external transformer or takes power from PS/2 keyboard connector, support resolutions up to 1024x768, outputs composite and SVideo, provides position adjustment.
  • Averkey lite, powered by a USB port, has Composite, SVideo, YPbPr outputs; pan, brightness, overscan/underscan controls; supports up to 1024x768 outputs; and supports PAL and NTSC.
  • ADS TV Elite XGA
  • AverKey iMicro (comments are generally favorable)
  • AITech Web Cable (comments are generally unfavorable, different than the "Plus" version above)
  • TVIEW Gold (mentioned once, favorably)

Software

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. NOTE: you must have the MySQL database software installed on a system to store the master database. This does not necessarily mean that MySQL must run on one of the MythTV boxes. The minimum MySQL version is 5.0.15.

Pre-compiled packages

A number of people have created pre-compiled packages for MythTV that may make your installation easier.

BIG FAT WARNING: This HOWTO assumes that you have not installed MythTV from a package. All example command lines and file locations are based on the MythTV tarball defaults. Some packagers have modified the filenames, binaries and file locations to match what is commonly found in that distribution. Any issues with MythTV installed via a pre-compiled package MUST be raised with the packager.

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.

Red Hat Linux / Fedora Core / MythDora

The definitive documentation on installing MythTV on Red Hat Linux / Fedora Core can be found in Jarod Wilson's (mailto:jcw@wilsonet.com <mailto:jcw@wilsonet.com>) HOWTO at http://wilsonet.com/mythtv/ <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.).

Debian

Debian packages for MythTV and most of its add-on modules are maintained by Christian Marillat mailto:marillat@free.fr <mailto:marillat@free.fr> and are available at http://www.debian-multimedia.org/ <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.

After adding the appropriate commands to your /etc/apt/sources.list file you can run apt-get update and then execute apt-get build-dep mythtv which should install all the pre-requisites required to compile MythTV.

Manual installation

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 v4.4 or higher is required.

NOTE: If you are going to be using packages 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.


Command-line installation

This section details the various methods for installing prerequisites from the command line.

Fedora / Mythdora

Assuming that you've configured ATrpms, you can execute:

# yum-builddep mythtv

Alternatively, you may use the build script located in packaging/rpm, or install the "requires" found in the mythtv.spec file located in the same directory.

Mythbuntu

You can run

$ sudo apt-get build-dep mythtv

Debian

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

System Configuration Requirements for Compiling MythTV

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.

Software requirements for compiling MythTV

General requirements

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.

Shared-Library requirements for MythTV

Modifying /etc/ld.so.conf

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 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; to determine the way that your distribution is configured, type:

$ cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf

If you see that your .conf file consists of just the "include" line, then execute the following as root:

$ sudo bash
# echo /usr/local/lib >> /etc/ld.so.conf.d/mythtv.conf
# /sbin/ldconfig
# exit
$

If your .conf file has many individual entries in it, then type:

$ sudo bash
# echo /usr/local/lib >> /etc/ld.so.conf
# /sbin/ldconfig
# exit

Environment variable requirements for MythTV

General requirements

QT libraries and binaries

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 to open a shell and execute the following:

$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games:/usr/lib/qt4/bin:/home/mythtv/bin:
$ echo $QTDIR
/usr/lib/qt4
$ which qmake
/usr/bin/qmake

If you don't see values like those above, 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/qt4/mkspecs called default. If not, you'll get errors during the compile. See the Troubleshooting Section for more information.

Downloading and compiling

Get MythTV from the http://www.mythtv.org <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, but this is really only valid if you're reading this HOWTO on the very first day that a new release has been made, because the tarball is a static file and won't include any fixes for issues discovered after the tarball was created.

The recommended solution is to download the source using subversion to ensure that you've got the latest fixes.

When using subversion, there are some other choices that need to be made:

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://sourceforge.net/projects/xmltv/files/ <http://sourceforge.net/projects/xmltv/files/>. Download the latest version (0.5.51).

Configuring the Schedules Direct service

Schedules Direct is a non-profit organization which has licensed Television program data from Tribune Media Services and makes 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 <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.

Manually building MythTV

If you are going to use subversion, execute the following instructions to obtain the latest trunk version of MythTV.

To use the release version, you can execute the following. You are strongly encouraged to use the release version.

$ svn co http://svn.mythtv.org/svn/branches/release-0-23-fixes/ mythtv-0.23
$ cd mythtv-0.23

To download trunk:

$ svn co http://svn.mythtv.org/svn/trunk/ mythtv-trunk
$ cd mythtv-trunk

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.23 release and you originally obtained it using svn, you could enter the mythtv-0.23 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.23 code.

If you are using the tarball, then unpack it:

$ tar -xjf mythtv-0.23.tar.bz2
$ cd mythtv-0.23
$ ./configure

If you wish to change options, run ./configure --help to see what is available and to override any 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.

Once the compile is done, switch to superuser:

$ sudo bash
# make install
# exit

NOTE: subsequent configuration steps assume that you are within the MythTV directory that you cd'd to above.

Enabling real-time scheduling of the display thread

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.

rlimits

The rlimits method is the preferred method and is included in Linux 2.6.12 and above and requires PAM version 0.79 or above. 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

realtime module

The second option is to use the Linux realtime kernel module. This 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 Capabilities

You may also need to install the realtime module, using your distribution's realtime package. Assuming the users who will be running myth-frontend 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

run as root option (not safe)

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, do the following as root:

# chmod a+s /usr/local/bin/mythfrontend /usr/local/bin/mythtv

Frontend-only configuration

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:

  • You do NOT need the MySQL server installed on your remote frontend
  • You do NOT need XMLTV installed on your remote frontend
  • You do NOT need to run the mythtv-setup program on your frontend machine

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:

Run the mythtv-setup program on your Master backend. Under the "General" menu, change the IP address of the current machine (by default, "127.0.0.1") to the real external IP address - 127.0.0.1 is the internal loopback address and no external machine can access it. Change the Master Server IP setting to the same IP address as well.

Run the mythfrontend program on your frontend machine, and a "Database Configuration" screen should appear. Set the "Host name" field to point to your Master backend's IP address.

MySQL

You will also want to comment out any "log-bin" or "log_bin" lines 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.

Distribution-specific information

Red Hat Linux and Fedora Core

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

Setting up the initial database

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

Mandriva and Red Hat Linux/Fedora Core

$ mysql -u root < mc.sql

Debian

$ mysql < mc.sql

Gentoo

$ su
# mysql < /usr/share/mythtv/database/mc.sql

NOTE: It is good practice to set a root password for MySQL. Instructions for doing so can be found on MySQL's web site at http://dev.mysql.com/doc/refman/5.1/en/default-privileges.html <http://dev.mysql.com/doc/refman/5.1/en/default-privileges.html>.

Modifying access to the MySQL database for multiple systems

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 configure MySQL database access with no security or with additional granularity.

NOTE: The "no security" option is very dangerous unless you're in a controlled environment.

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, either remove that line or comment it out. 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.

Configuring Sound

TODO: UPDATE FOR NEW SOUND CODE in 0.24

Setting up a remote control

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.

Compilation of lirc is outside the scope of this document.

You can dispense with lirc altogether by purchasing an IR keyboard and a learning remote control. The IR keyboard receiver plugs into 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 consideration - your remote will be sending keypresses that your PC "sees" on the keyboard port.

The "Big Picture" for lirc is that there are a few different things that fit together.

First, lirc has a portion which is connected to an IR receiver. The IR receiver senses the pulses and sends them to the lirc daemon. The lircd loads a file called lircd.conf which instructs it how interpret the IR pulses that it received and convert them to a human-readable name.

For example, the hardware may receive 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 part is lircrc, which takes the name of the button which was pressed ("ChannelUp") in the above example, and associates 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.

Look for pre-made lircd.conf configuration files at http://lirc.sourceforge.net/remotes/ <http://lirc.sourceforge.net/remotes/>. If you find one of your remotes either on the website or on your system, 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

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 it.

$ cd mythtv/contrib/config_files/lirc
$ 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.

Additional information for lirc

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/config_files/lirc/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.

Configuring MythTV

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.

Configuring the Master backend system

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, so 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, because the "video" directory doesn't exist.

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 hen there are two overlapping recordings, the third when there are three, and so on.

NOTE: It is possible to not have the cards on the Master backend be the first ones used. However, if you are new to MythTV it is easier to configure the Master backend first before moving on to the Slaves, at least until you become more familiar with the MythTV system. See Advanced Backend Configurations for information on configuring multiple backend systems in various ways.

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. 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 the following choices:

  1. General
  2. Capture Cards
  3. Video Sources
  4. Input connections
  5. Channel Editor
  6. Storage Directories

Use the arrow keys to move around, and press the space bar to select which option you wish to configure.

General

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.

Capture Cards

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. NOTE: If you have a dual digital/analog card, such as the pcHDTV cards and some DViCO cards, then you should not configure this as two separate cards. Configure the digital portion as a DVB card, then click on the "Analog Options" button within the DVB configuration panel for the card and configure the analog portion of the card there.

Video Sources

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.

Input Connections

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.

NOTE: If you have a Hauppauge PVR-500, you must think of it as two PVR-150's on a single PCI card. For example, if you have a single PVR-500 card, it will appear as /dev/video0 and /dev/video1. Each /dev/video device will have a Tuner input. 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.

NOTE: Don't add a video source to a hardware input if you don't actually have anything connected there. For example, adding "Cable" to the Tuner and to the Composite inputs without having something connected to Composite will lead to blank recordings.

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.

Channel Editor

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

Introduction

Storage Groups are lists of directories that are used to hold MythTV recording files, giving you a flexible way 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.

How to use Storage Groups

By default, there is only one Storage Group called "Default", and it is used for all recordings and Live TV. NOTE: You need to add at least one directory to the Default Storage Group or else you will not be able to record anything with MythTV.

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 subdirectory 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.

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.

Or, say that you originally installed MythTV to a 750GB 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 the 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.

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 and will allow you to put your LiveTV recordings on their own filesystem.

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

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.

Advanced: Algorithm used by the Storage Group

This section details the logic of the Storage Group allocation engine.

The current load-balancing preferences (in order) are:

  • Local filesystems over remote
  • Less-busy (less weight) over more-busy (more weight)
  • More Free Space over Less Free Space

The "busyness" of a filesystem is determined by weights. The following weights are added to a filesystem if it is in use for the following things:

  • recording = +10
  • playback = +5 (mythfrontend)
  • comm flagging = +5 (mythcommflag)
  • transcoding = +5 (mythtranscode)

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.

Post-configuration

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.23, 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.

Configuring a non-master backend

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.

NOTE: Slave backends must not run a local MySQL daemon. By default, they will connect to their local daemon rather than the central database, causing unexpected behavior such as empty "Watch Recordings" lists and a failure to locate the Video Sources defined on the master backend. Modify the /usr/local/share/mythtv/mysql.txt file on all slave backends to ensure that the DBHostName has the address of the MySQL server. Caveat: You may make a slave backend the primary MySQL server, or run a non-MythTV database on a slave backend as long as you have edited the mysql.txt file on all systems and made it consistent. There can be only one authoritative MySQL database in a MythTV system - errors such as the one above ensue if backends and frontends have differing ideas of which MySQL database they should talk to.

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.

NOTE: Do not run mythfilldatabase on a non-master backend.

Configuring and running mythfilldatabase

NOTE: mythfilldatabase might take a while to complete, depending on any number of factors, most of which you can't control. It's best to just let the program run to completion. 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).

Periodically running mythfilldatabase

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.

Grabbing channel icons for Schedules Direct users

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/icons/master_iconmap directory which will generate this file for you. Run the command:

      $ mkdir ~/.mythtv/channels
      $ ./channel_icons.pl --find-missing --rescan

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

Configuring mythfrontend

Once you have completed the 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.

NOTE: You should go through the various setup screens in mythfrontend before using any other modules to ensure that the the database is correctly initialized.

General

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.

Appearance

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.

Program Guide

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.

Playback

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.

Video Filters

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.

Applying filters

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".

Currently Available 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.

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.
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.
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.
NOTE: This filter requires the frame rate to be doubled
 and therefore can only be used with the "Deinterlace Playback"
 checkbox.  Do not include this in your filter chain.
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.
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.
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.

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.
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:
luma spatial filter strength
chroma spatial filter strength
luma temporal filter strength

Reasonable defaults will be selected for omitted parameters. The chroma temporal filter strength is calculated from the other filter strengths.

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"

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.

Usage Considerations

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)"

Recording

Depending on your capture card, MythTV offers different video encoders. The following types of hardware encoding cards are supported:

For cards without hardware encoding capabilities (all cards supported by V4L not listed above), Myth includes two methods for software encoding: RTjpeg and MPEG-4. RTjpeg has significantly fewer CPU demands than MPEG-4, but it generates larger files than MPEG-4 for a given recording.

Any cards which simply demodulate MPEG-2 which has been encoded by the broadcaster (HDTV/ATSC/DVB cards) will not offer much in the way of configuration because the broadcaster will be choosing the bitrate, etc.

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 two 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:

  • Default
  • Live TV
  • Low Quality
  • High Quality

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.

NOTE: although the width and height can be changed to almost anything, if you start MythTV and don't see video or you get "segmentation fault" errors, it is likely that the video4linux (v4l) subsystem did not like the height and width parameters specified. It's best to leave the default as-is until you're sure that MythTV is operational.

See the What capture resolution should I use? How does video work? section for more information.

Using MythTV

Keyboard commands

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.

mythfrontend

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.

Watching TV or a recording

Watching TV only

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.)

LiveTV Browse Mode

Playback Recording Zoom Mode

If you have two or more tuner cards

Watching a recording only

 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

EPG

Setting Program or Channel Recording Priorities

        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
               U     bring up more information about a show
               I     allow you to schedule a recording. If you select "Record this showing" while watching Live TV you can "Instant Record" a program.
     Space/Enter     when watching LiveTV will change to that channel and exit the EPG if the selected show is in progress or starts within 15 minutes; or otherwise will allow you to resolve conflicts or change overrides. If the program is not already scheduled to record, it will instead act like pressing I
               X     change the channel to the currently selected channel without leaving the EPG (Most useful in the alternate EPG)
        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.
               ?     mark/unmark the current channel as a "favorite"
          / or 4     toggle the guide listing between all channels and filtered "favorites"

Viewing Scheduled Recordings/Resolving Conflicts

                  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

Viewing Search Listings

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.

Recording Profiles Setup Screen

D on a custom profile group displays a popup to delete the group

Recording Groups

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

Watch Recordings Screen

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.

Remote Controls

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

Using themes with MythTV

TODO - this is all over the web now.

Adding support for an external tuner

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 <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/ <http://www.dtvcontrol.com/> for cable pinouts.

Using Shutdown/Wakeup

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:

  • Use another server that runs 24/7 and have it send a WakeOnLAN (WOL) packet to wake the Master backend. This assumes that you have the WOL tools installed, and that your Master backend motherboard supports WOL.
  • Use your motherboard's BIOS wakeup capability. You'll need a motherboard that supports BIOS wakeup, and some tools. See http://www.mythtv.org/wiki/ACPI_Wakeup <http://www.mythtv.org/wiki/ACPI_Wakeup> for details on the best ways to accomplish this.

A deeper look into the operation

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.

  • no client is connected to the server
  • no recording (neither LiveTV nor a regular recording) is currently taking place
  • no recording starts within a definable amount of time ("Max. wait for recording (min)")
  • the "pre Shutdown check-command" returns 0

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.

Setting up the MythTV side of this extension

There are a number of options that are used to control the Shutdown / Wakeup feature.

Shutdown/Wakeup Options:

  • "Idle timeout (secs)" is the time the server waits while idle until a shutdown occurs.
  • "Max. wait for recording (min)" is the time the Master backend waits for a recording without shutting down. For example, this would be used to prevent a 10 minute system shutdown if a recording is set to start 15 minutes from now.
  • "Startup before rec. (secs)" Sets how long before a programmed recording the MythTV system will be woken up. This should be roughly be the time your systems need to bootup, and if you have Slave backends, you'll need to ensure this value is long enough for all your machines to perform their bootup cycle.
  • "Wakeup time format" is the format of the wakeup time that is given in the "Set wakeuptime command" as a parameter "$time". You need to set this according to your wakeup mechanism. If you need seconds since the epoch (1970-01-01) set the "Wakeup time format" to "time_t".
  • "Set wakeuptime command" is the command executed to set the new wakeuptime.
  • "Server Halt Command" is the command executed to shutdown the Master backend and the Slave backends.
  • "pre Shutdown check-command" is used to give a "Go/NO-GO" decision from a non-MythTV source. This command is executed immediately before the shutdown would occur. The return value is use to make the following choices:
  • If it returns a "0" the shutdown will occur as scheduled.
  • If it returns a "1" the "idle timeout" will be reset and the system waits again for the timeout.
  • If it returns a "2" the entire shutdown sequence is reset. This means that a new client connect is needed before a shutdown occurs, unless you have the "Wait for client connect" setting disabled, in which case this is the same as returning "1". An example of a use for this return value is to prevent the shutdown if a user is currently logged in, or if a specific program (i.e. transcode, automatic updates, etc.) is currently running. If you don't need it, leave the field blank.

The "WakeOnLan settings": These settings have nothing to do with using BIOS or WOL wakeup, they are the same for both.

  • "Master backend" This setting defines timings for the frontends to wakeup the Master backend using WOL. Useful if your frontend can emit a WOL packet so you don't need to physically go to the Master backend if you're trying to watch TV.
  • "Reconnect wait time (secs)" is the time the frontend waits after executing the "Wake command" before attempting to retry the connection. This should be roughly the amount of time your Master backend needs for bootup. Set to "0" to disable. The frontends will retry to connect for "Count of reconnect tries" times before giving up.
  • "Wake command for slaves" is the one command executed to wake your Slave backends. This should be a script that contains the calls to wakeup all Slave backend systems.
Using WOL to wake your Master backend

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:

  1. ! /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!

Using BIOS wakeup to wake your Master backend

See http://www.mythtv.org/wiki/ACPI_Wakeup <http://www.mythtv.org/wiki/ACPI_Wakeup> for the best ways to accomplish this.

Wakeup the MySQL server using WOL

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.

Tips/Tricks:

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 cdialog, 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.

Controlling the mythfrontend via telnet

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.

Scheduling Recordings

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.

Record Types

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.

  • Single Record -- record only this title at this specific time and this station. This is the best way to be sure that a certain showing will be recorded. However, if the TV listings change and the show is not broadcast at that time, the show will not be recorded but will be marked as Not Listed to let you know that you should investigate.
  • Find One -- this will record a title once from any of the times that appear in the TV listings. This is useful for recording a movie or special that has multiple showings because it allows the scheduler to choose one that doesn't conflict. It is not a good choice for recording a single episode of a series because it records the first available showing of the title without regard to the episode information.
  • Record Weekly -- this records a show whenever the title is listed on the same channel, weekday and time. Note that if the TV station changes the schedule for a special episode, it would not be recorded. However, you can add a Single record for the special episode. If there are no matching showings in the TV listings, a Not Listed item will be added to your schedule for the next time slot to let you know that you should investigate.
  • Find Weekly -- this will record a title once per week from any of the times that appear in the TV listings beginning from the time of the showing that was selected when the rule was set. This is useful for news, current events or other programs where the same episode is shown several times each week but the listings may not include descriptive information. This may not be a good choice if there are different episodes shown during the week.
  • Record Daily -- this records a show whenever the title is listed for the time and station on any day of the week. Here again, a show will not be recorded if the time was altered by the station. If there are no matching showings in the TV listings, a Not Listed item will be added to your schedule for the next time slot to let you know that you should investigate.
  • Find Daily -- this will record a title once per day from any of the times that appear in the TV listings beginning from the time of the showing that was selected when the rule was set. This is useful for news, current events or other programs where the same episode is shown several times each day but the listings may not include descriptive information. This may not be a good choice if there are different episodes shown during the day.
  • Channel Record -- records one showing of each unique episode from any of the times the title is listed on this station. This is perhaps the most common rule to use for most shows.
  • Record All -- records one showing of each unique episode from any of the times this title is listed on any channel. This can be useful if a station has sister stations where shows are rebroadcast allowing the scheduler to record rebroadcasts on the other station when the original airing cannot be recorded.

Scheduling Options

Priority

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.

Per record rule
this is the "priority" selection in the "Scheduling Options" section of the options page and this value is included for any showings that match the recording rule. You may choose to only use these values and not use the other factors for the sake of simplicity and clarity.
Per record type
Setup->TV Settings->Recording Priorities->General allows you to add to the priority based on the type. It may make sense to increase the value for "Single" so that by default they have an extra advantage over other shows. The default is +1. You may want to decrease the value for Find rules so that they will be less likely to interfere with regularly scheduled shows and will be more likely to record in a non-conflicting time instead. The default is -1.
Per channel
Setup->TV Settings->Recording Priorities->Channel Priorities can be useful if you believe that you prefer any of the shows on certain channels. This would give all shows on a channel an advantage by default.
Input priority
in the "mythtv-setup" program, the "Input Connections" section allows you to add additional priority in the "Input priority". This is simply another priority factor but has an interesting effect. If a card input has a higher value than the other cards, the scheduler will see that you would rather record showings of episodes on this input rather than a showing on other inputs. If you have multiple cards of different quality, you may want to set input priority to encourage the scheduler to record shows on your best card(s) whenever possible. This can also be useful if you have multiple video sources which include the same stations. For example, with digital and analog cable you could increase the digital cable input preference by 1 to tell the scheduler that you want to record from the digital channel whenever possible but the channel on the analog input could still be used when the digital input is busy.
Custom Priority
this allows you to add any specialized factors you would like in order to influence scheduling decisions. See the Custom Priority section below.

For any single showing of any show you've chosen to record, these factors are added together to find the "total priority". This is the priority that the scheduler uses to decide which showings are given the first choice when filling in the schedule.

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).

Duplicates

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.

Conflicts

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.

Scheduling decisions

Here are the actual decisions made by the scheduler as it fills in the schedule.

Currently recording beats not currently recording
A recording in progress can not be moved to another input or time so it "wins" its current timeslot.
  • Single, Daily, or Weekly rules with no match are marked Not Listed

If these or Overrides do not match the current listings because

    the listings have changed, they are added to the schedule and
    marked to indicate that they will not record.
 o  Rules that could record beat rules that can not record a showing --
    If two rules match the same showing of a program, a rule marked as
    inactive or a showing marked as a repeat, for example, yield to the
    other rule.
 o  More specific record type is used in place of less specific -- If
    two rules match the same showing of a program, preference is given
    to Don't Record then Override, Single, Find One, Record Weekly,
    Find Weekly, Record Daily, Find Daily, Channel and finally All.
 o  Higher total priority beats lower total priority -- This is the
    core of the scheduling process. Episodes of the highest priority
    show are placed on the first available input followed by the next
    highest priority show and so on.
 o  Future start time beats past start time -- If there is an episode
    in progress and also a later showing of the same episode, it is
    better to record the complete episode. If there isn't another
    showing, it will start recording immediately to record the
    remaining portion. This should only happen if you add a new rule
    while the show is in progress or if the master backend is started
    after the start time of a scheduled show.
 o  More specific record type beats less specific record type -- If two
    shows are on at the same time and have the same total priority but
    different types they will be sorted by Single then Find One, Record
    Weekly, Find Weekly, Record Daily, Find Daily, Channel and finally
    All. This only applies if the priorities are the same.
 o  If both start times have passed, later start time beats earlier
    start time -- This attempts to miss the least amount of time.
 o  If neither start time has passed, earlier start time beats later
    start time -- This helps assure that the earliest showing of an
    episode has the advantage.
 o  Lower input id beats higher input id -- The scheduler fills in open
    time slots on the first available input for the video source. The
    next input is used when there is another show already placed for
    the card of the first input.
 o  Older record rule beats newer record rule -- If two shows are still
    equal after all of these other checks, the show whose record rule
    was added first is preferred over a more recent addition.
 o  Postpone showings to resolve conflicts -- If Reschedule Higher
    Priorities is set or if a conflict has the same priority as a show
    that was scheduled at the same time, the scheduler will check to
    see if a scheduled show can be moved to another input or later
    matching showing without creating a new conflict so that the
    conflicting show can be scheduled to record.
 12.2.5.  Reschedule Higher Priorities
 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".


 12.2.6.  Controlling Your Schedule
 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.
 12.3.  Storage Options
 12.3.1.  Recording Profile
 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).
 12.3.2.  Recording Group
 For organization of the "Watch Recordings" screen and the MythWeb
 interface, recordings can be assigned into "recording groups".
 12.3.3.  ``Storage 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.
 12.3.4.  Playback Group
 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.
 12.3.5.  Auto-Expire
 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.


 12.3.6.  Episode Limit
 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.
 12.4.  Post Recording Processing
 12.4.1.  Commercial Detection
 Select whether or not to automatically detect commercials for these
 recordings. Commercial Detection parameters can be set in Setup->TV
 Settings->General.
 12.4.2.  Transcoding
 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.
 12.4.3.  User Jobs
 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:


 o  %DIR% - the directory component of the recording's filename
 o  %FILE% - the filename component of the recording's filename
 o  %TITLE% - the title of the recording (e.g., name of the series)
 o  %SUBTITLE% - the subtitle of the recording (e.g., name of the
    episode)
 o  %DESCRIPTION% - description text for the recording (from guide
    data)
 o  %HOSTNAME% - the backend making the recording
 o  %CATEGORY% - the category of the recording (from guide data)
 o  %RECGROUP% - the ``recording group
 o  %CHANID% - the MythTV channel ID making the recording
 o  %STARTTIME% - the recording start time (YYYYMMDDhhmmss)
 o  %ENDTIME% - the recording end time (YYYYMMDDhhmmss)
 o  %STARTTIMEISO% - the recording start time in ISO 8601 format (YYYY-
    MM-DDTHH:MM:SS)
 o  %ENDTIMEISO% - the recording end time in ISO 8601 format
 o  %PROGSTART% - the recording's start time (from guide data;
    YYYYMMDDhhmmss)
 o  %PROGEND% - the recording's end time (from guide data)
 o  %PROGSTARTISO%, %PROGENDISO% - the recording's start and end time
    in ISO 8601 format.
 12.5.  Advanced Recording Options
 12.5.1.  Creating Power Search rules with Custom Record
 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.
 12.5.2.  Getting Started
 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 "OK" 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".
 12.5.3.  How it Works
 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.
 12.5.4.  Common Tricks and Tips
 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 show-
 ings 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%".
 12.5.5.  Working with SQL
 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/
 <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.
 o  "program.category_type" holds one of these exact four strings:
    "movie", "series", "sports" or "tvshow".
 o  "program.airdate" is a string representing the year of release for
    movies and may have no meaning for other types of shows.
 o  "program.stars" is a floating point number from 0.0 to 1.0. On a
    four star scale, 1.0 would be four stars, 0.75 would be three stars
    and so on.
 o  "program.originalairdate" if provided is the date when a show was,
    or will be, first televised. This may be useful for finding
    episodes before or after a certain date such as finding just the
    original series of "Battlestar Galactica".
 o  "program.previouslyshown" is a column created by MythTV to try to
    determine if a showing is more than 14 days after its original air
    date or if the show was marked as a repeat and did not have a date
    for the first airing. If this is "0" it usually means that this is
    a brand new show or a rebroadcast within the first two weeks.
 o  "program.generic" is a column created by MythTV to try mark
    showings for a series where the specific episode information is not
    included. When these generic showings appear, it is impossible for
    the system to determine if they are repeats of the same episode(s)
    or if they are all different episodes.
 o  "program.first" is a column created by MythTV to mark the first
    showing in the current listings for each episode, movie or special.
    Choosing to match only the "first" showing can be useful for sports
    that are brodcast live then repeated.
 o  "program.last" is a column created by MythTV to mark the last
    showing in the current listings for each episode, movie or special.
    If a showing is marked both "first" and "last" then it is the only
    showing of that program in the current TV listings.
 o  "program.programid" is the Tribune Media Service database record
    identifier for each program description. In general, these start
    with a two letter prefix, MV, EP, SP or SH that correspond to the
    "program.category_type". For most, the last four digits are "0000"
    except EP where the last four digits are the episode number in the
    series. Note that these are generated by TMS and not the show's
    producers but they are usually in the same order as the original
    air dates for the episodes.
 o  "program.videoprop" also "audioprop" and "subtitletypes".  These
    columns contain bit flags for a variety of attributes that may be
    associated with a program. These are filled with information
    offered by the TV listings provider. However, your listings source
    will not have information for all of the available flags.
    Therefore, some of these may not be useful for your search rules.
    This information is organized in "sets" and the MySQL function
    FIND_IN_SET() can be used to test for any of these flags. For
    example:
      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


 Finally, if you are doing something very experimental and a column is
 not giving you the results you had anticipated, you can always check
 the MythTV source code to see exactly how a column is used. The open
 source for MythTV is available from http://www.mythtv.org/
 <http://www.mythtv.org/> .
 12.6.  Scheduling with more than one Input
 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.
 12.6.1.  Mutually Exclusive Inputs
 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.
 12.6.2.  Stations, Channels and Video Sources
 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.


 o  Station: building
 o  Channel: frequency
 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.
 12.6.3.  Order of Inputs
 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.
 12.6.4.  Matching Callsigns
 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".
 12.6.5.  Using Priorities to Prefer an Input
 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.
 12.6.6.  Input 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.
 12.6.7.  Channel Priority
 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.
 12.6.8.  Preferred Input
 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.
 12.6.9.  HDTV Priority
 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":


 12.6.10.  Custom Priority
 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.23 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.
 13.  MythPlugins.
 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.23.tar.bz2
 $ cd mythplugins-0.23
 $ ./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]
 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.23/ 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.23
 $ ./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.
 14.  MythWeb.
 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.
 14.1.  Installation and prerequisites
 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.
 14.1.1.  Mandriva
 Mandriva has apache and PHP pre-packaged, so installation is quite
 simple.


            NOTE: Mandriva 9.1 users, perform the following:


      # urpmi apache2 apache2-mod_php php-mysql
      # chkconfig --level 345 httpd on
      # /etc/rc.d/init.d/httpd restart


 14.2.  Completing the installation


      $ cd ~/mythplugins-0.23/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/


       NOTE: Make sure that you have a trailing slash on the URL,
 otherwise you will get a 404 Page not Found error.
 14.3.  Resetting the key binding table
 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


 14.4.  Resetting the theme.
 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
 15.  MythGallery.
 MythGallery is a photo and slideshow application. MythGallery is a
 separate application, but it's dependent on MythTV being installed and
 operational.
 15.1.  Installation and prerequisites
 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.23
      $ ./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.
 15.2.  Using MythGallery
 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:
 o  Slideshow - Will cycle through all the pictures in the current
    folder.  The currently selected item must be a picture (not a
    folder) for this to work. It does not currently traverse
    subfolders.
 o  Rotate CW - Rotate the current image 90 degrees in the clockwise
    direction. This change persists if the current directory is
    writable.
 o  Rotate CCW - As above except the direction of rotation is
    counter(anti) clockwise.
 o  Import - Import pictures into your Gallery Dir. This option is
    described in the next section.
 o  Settings - Access the MythGallery settings screen.
 15.3.  Importing Pictures
 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 <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


 16.  MythGame.
 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://mameworld.info/ <http://mameworld.info/> is an excellent
 resource for all things mame.
 Installation overview:
 1. Setup directory structure
 2. Download and install xmame
 3. Download and place extra files (artwork/catver.ini/etc..)
 4. Download and install MythGame plugin
 5. Setup xmame in MythGame
 6. Hints
 16.1.  Setup Directory Structure
 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}


 16.2.  Download and Install xmame
 NOTE: There may be pre-packaged versions of xmame available for your
 distribution. Check http://mamedev.org/release.html
 <http://mamedev.org/release.html> for the latest version.  Also, see
 http://sdlmame.wallyweek.org/ <http://sdlmame.wallyweek.org/>
 Download the source to xmame from http://mamedev.org/release.html
 <http://mamedev.org/release.html>


      $ tar -xjf filename_from_above
      $ cd xmame-version


 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.


      ### 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 public domain ROM sets available at
 http://mamedev.org/roms/ <http://mamedev.org/roms/>
 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 >


 16.3.  Download extra files
 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://catlist.mameworld.info/
 <http://catlist.mameworld.info/>
 - Screenshots aka "snaps"
 These may be downloaded from http://www.mamechannel.it/pages/snaps.php
 <http://www.mamechannel.it/pages/snaps.php>
 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/ <http://www.arcade-
 history.com/> This file fills in a bit of background about each ROM.
 - hiscore.dat
 Download from http://highscore.mameworld.info/
 <http://highscore.mameworld.info/>
 - Cheats
 Download from http://cheat.retrogames.com/
 <http://cheat.retrogames.com/>
 16.4.  Download and Install MythGame.
 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.23


 Compile and install mythgame:


      $ ./configure --disable-all --enable-mythgame
      $ qmake mythplugins.pro
      $ make
      $ su
      (enter password)
      # make install
      # exit


 16.5.  Setup xmame in MythGame
 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)
 16.6.  Hints:


 o  Rom name before options: %s can be used as a standin for rom names
    on the command line.
 o  Multiple disk/rom games: %d1 %d2 etc can be used as standins for
    multiple disc games on the command line.
 o  Associating a rom with an emulator: Browse to the desired rom and
    press 'M' to enter the settings page for that rom.
 o  Assign a Game Favorite Status: Browse to the desired game and press
    "/".
 17.  MythMusic.
 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:
 o  MAD
 o  taglib
 o  libogg and libvorbis
 o  FLAC
 o  libcdaudio
 o  CDParanoia
 17.1.  Manual installation of prerequisites
 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
 <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
 <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
 <http://www.xiph.org/downloads> and install in a similar manner to the
 above packages.
 Download FLAC from http://flac.sourceforge.net
 <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
 <http://sourceforge.net/project/showfiles.php?group_id=27134> 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
 <http://www.xiph.org/paranoia/download/cdparanoia-III-
 alpha9.8.src.tgz>.


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


 17.2.  Mandriva
 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://wiki.mandriva.com/en/urpmi <http://wiki.mandriva.com/en/urpmi>


      # urpmi libmad0 libmad0-devel libflac4 libflac4-devel libcdaudio1 cdparanoia
      # urpmi libcdda0 libcdda0-devel libvorbis0 libvorbis0-devel
      # urpmi libcdaudio1-devel libid3tag0 libid3tag0-devel


 17.2.1.  Additional options with MythMusic
 Additional visualizations have been added to MythMusic. If you wish to
 use these, there are some prerequisites you must install prior to
 compiling.


 o  fftw
 o  OpenGL
 o  SDL
 fftw may be obtained from http://www.fftw.org/ <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
 <http://www.libsdl.org>. In Mandriva it may be installed by typing:


      # urpmi libSDL1.2 libSDL1.2-devel


 17.3.  Red Hat Linux 9
 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.


 NOTE: you can use the instructions given at the ``automated
       installation section to install all of MythMusic in one
 step.
 17.4.  Compiling MythMusic
 Once all the prerequisites have been installed, you can proceed with
 compiling MythMusic.


      $ cd ~/mythplugins-0.23
      $ ./configure --disable-all --enable-mythmusic --enable-fftw --enable-sdl --enable-aac
      $ qmake mythplugins.pro
      $ make
      $ su
      # make install
      # exit


 17.5.  Configuring MythMusic
 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.
 17.6.  Using MythMusic
 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.
 17.7.  Troubleshooting MythMusic
 You may run into errors when running MythMusic.
 17.7.1.  When I run MythMusic and try and look up a CD, I get an error
 message
 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.
 18.  MythWeather.
 MythWeather is a part of the mythplugins package. See ``MythPlugins
 for instructions on downloading the tarball.


      $ cd ~/mythplugins-0.23
      $ ./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.
 19.  MythVideo.
 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.23
      $ ./configure --disable-all --enable-mythvideo
      $ qmake mythplugins.pro
      $ make
      $ su
      # make install
      # exit


 See MythVideo's README file for additional information.
 20.  MythDVD.
 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.
 20.1.  Manual Compilation of Prerequisites
 20.2.  Pre-compiled binaries
 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


 20.3.  Running the Myth Transcoding Daemon
 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.
 21.  MythNews.
 MythNews is a part of the mythplugins package. See ``MythPlugins for
 instructions on downloading the tarball. MythNews is a RSS reader.


      $ cd ~/mythplugins-0.23
      $ ./configure --disable-all --enable-mythnews
      $ qmake mythplugins.pro
      $ make
      $ su
      # make install


 22.  Troubleshooting.
 22.1.  Compiling
 22.1.1.  Compile errors
 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.
 22.1.2.  make: *** No rule to make target
 /usr/lib/qt3/mkspecs/default/qmake.conf', needed by Makefile'. Stop.
 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.
 22.1.3.  make: *** No rule to make target
 /mkspecs/default/qmake.conf', needed by Makefile'. Stop.
 You didn't set your QTDIR. Re-read the section on ``Setting up
 paths.
 22.1.4.  Internal Segmentation Fault.
 This is most likely to be caused by an overheating processor rather
 than an actual programming fault within gcc.
 22.2.  Debugging
 22.2.1.  MythTV segfaults
 22.2.2.  MythTV isn't doing anything
 22.2.3.  Debugging with GDB
 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 breakpoint pending on
 break qFatal
 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.
 22.2.4.  MythTV is crashing your system
 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.
 22.3.  Installing
 22.3.1.  When trying to run mythtv-setup, you get an error like this:
 "mythtv-setup: error while loading shared libraries:"
 You didn't add /usr/local/lib to /etc/ld.so.conf. See the section on
 modifying ``/etc/ld.so.conf.
 22.4.  Using
 22.4.1.  No programs are displayed in "Watch Recordings"
 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.
 22.4.2.  MySQL not connecting correctly
 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.
 22.4.3.  MySQL database is corrupt
 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
 22.4.4.  Using a MPEG-2 encoder card and the video appears "jittery"
 22.4.5.  Using a MPEG-2 encoder card and the video is jumping up and
 down
 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.
 22.4.6.  Screen goes blank but returns when mouse is moved or keyboard
 is used
 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.
 22.5.  Miscellaneous
 22.5.1.  mythfilldatabase failing
 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 Schedules Direct
 subscription is still valid, otherwise, check to see what version of
 XMLTV you're running and that it's the latest version.


         NOTE: It is highly recommended that you run the latest
 version of XMLTV available. Your listings provider may have made
 changes which negatively impact XMLTV.
 22.5.2.  Frontend appears to be slow at jumping / seeking.
 22.5.3.  On-screen Display shows incorrect program length.
 This may occur when MythTV doesn't have an accurate seek table. Run
 mythcommflag --rebuild
 22.5.4.  Troubleshooting audio


      NOTE: the following instructions do not apply to PVR-250/350
 encoders; the MPEG-2 file will have the audio embedded in the stream
 so it is not accessible using /dev/dsp.
 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.
 22.5.5.  Mythbackend reports that your card is not reporting full
 duplex capabilities
 22.5.6.  The mythbackend program told me to look at this section
 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.
 22.5.7.  My remote doesn't work / works sometimes and not others /
 "ghost" keypresses
 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:


 o  fvwm
 o  blackbox (using "Sloppy Focus" and "Focus New Windows")
 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.
 22.5.8.  Where's "canada-cable"?
 22.5.9.  Channels are off by one
 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
 (http://listman.redhat.com/mailman/listinfo/video4linux-list
 <http://listman.redhat.com/mailman/listinfo/video4linux-list>) for
 more information.
 22.5.10.  Mythweb is showing a db_open error when I connect to it
 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.
 22.5.11.  Mouse pointer disappears when placed over the MythTV windows
 This is the intended behavior. The MythTV interface is meant for use
 with a remote control or a keyboard.
 22.5.12.  What does "strange error flushing buffer" mean on the con-
 sole?
 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.
 22.5.13.  Can't change the channel when watching Live TV.
 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.
 22.5.14.  Screen goes black when you try to play something
 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.
 22.5.15.  Computer is loading a media player application when you
 insert a CD or DVD
 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


 23.  Miscellaneous.
 23.1.  I'd like to watch the files without using MythTV / I'd like to
 convert the files to some other format
 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/ <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.
 23.1.1.  mythtranscode example
 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


         NOTE: You must use mencoder 1.0PRE1 or later. mencoder
 version 0.9x WILL NOT WORK!  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
 23.2.  Using a different window manager
 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.
 23.3.  What capture resolution should I use? How does video work?
 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:
 o  720x480 "DVD" resolution. ReplayTV High and medium resolution
 o  704x480 DVD standalone recorder standard resolution
 o  640x480 4:3
 o  544x480 TiVo Best resolution
 o  480x480 SuperVCD (SVCD) Video CD resolution, TiVo High resolution
 o  352x480 ReplayTV "Standard" quality, TiVo Basic and Medium
    resolution, DVD "LP" resolution
 o  320x480
 o  544x240
 o  480x240
 o  352x240 Video CD (VCD) resolution
 o  320x240
 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 VideoHelp website at
 http://forum.videohelp.com/threads/43902-Simply-FAQ-for-video-
 resolutions <http://forum.videohelp.com/threads/43902-Simply-FAQ-for-
 video-resolutions>.
 23.4.  MythTV GUI and X Display Sizes
 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.
 23.4.1.  X Dimensions
 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.
 23.4.2.  MythTV Dimensions
 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.


     NOTE: When the GUI is full screen, you may see windows rapidly
 flipping on top of each other. If this happens you will need to set
 your window manager to 'Click to Focus' for windows to stack properly.
 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.


 23.4.3.  Overscan Dimensions
 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.
 23.5.  Saving or restoring the database
 MythTV includes one script for backing up the MythTV database and
 another for restoring it. Generally, the scripts are easiest to use
 after configuring the backup directory in a backup resouce file:


      $ echo "DBBackupDirectory=/home/mythtv" > $HOME/.mythtv/backuprc


 changing the directory location as desired.
 Once the backup directory is configured, you may back up your database
 by simply running the backup script. The backup and restore scripts
 will be installed in your MythTV share directory
 ($PREFIX/share/mythtv, where $PREFIX is usually either /usr or
 /usr/local). Ensure you have a link to the scripts in an executable
 directory (such as /usr/local/bin) or use the entire path when
 executing the scripts.


      $ mythconverg_backup.pl


 The script will compress and rotate backups. For more information on
 usage and details, see the help output:


      $ mythconverg_backup.pl --help


 To restore:


      $ mythconverg_restore.pl --filename mythconverg-1214-20091010150513.sql.gz \
                               --drop_database --create_database
 For more information on usage and details of the restore script, see
 the help output:


      $ mythconverg_restore.pl --help


 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.
 23.6.  btaudio
 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:


 o  Hauppauge WinTV-radio with dbx-TV stereo, model 401
 o  Hauppauge WinTV-Theater, model 495, 498 (Europe)
 o  ATI TV Wonder
 The following cards do not work:
 o  Pinnacle Studio PCTV Pro - note: this has a MSP34xx, but it's not
    wired correctly to the BT878 chip.
 o  ATI TV Wonder VE
 o  Leadtek Winfast 2000 XP (PAL, UK and NTSC)
 o  I/O Magic PC-PVR. No MSP34xx chip.
 The following cards have been reported to work, but have issues:
 o  Avermedia AVerTV Studio (no digital DSP output, "whiney noise" on
    analog)
 Once btaudio loads, it should register additional /dev/dsp and
 /dev/mixer devices. Typing $ dmesg will let you know what's going on.
 23.7.  Removing unwanted channels
 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/ <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;


 23.8.  NFS
 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 hard,intr,nfsvers=3,actimeo=0


 Then run # mount -a to re-read the file to mount the file system.
 NOTE: Previous versions of this HOWTO gave specific values for
 variables like the "rsize". Best common practice at this point is to
 not specify these and allow the server and the client to
 autonegotiate.
 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". "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/Optimizing_Performance
 <http://www.mythtv.org/wiki/Optimizing_Performance> for additional
 information regarding performance optimization.
 23.9.  Automatically starting mythfrontend at system boot time
 Here's an example submitted to the mythtv-dev list by Pat Pflaum
 mailto:pat@netburp.com <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.
 23.10.  Automatically starting mythbackend at system boot time
 23.10.1.  Red Hat And Mandriva
 Here's a method for automatically starting mythbackend submitted by
 Mike Thomson (mailto:linux@m-thomson.net <mailto:linux@m-thomson.net>)
 and Stu Tomlinson (mailto:stu@nosnilmot.com
 <mailto:stu@nosnilmot.com>).
 Copy the files from the MythTV contrib directory or from Mike's web
 site (http://m-thomson.net/mythtv/ <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
      $


 23.10.1.1.  Log files
 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
      #


 23.10.1.2.  Mandriva
 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
      $


       NOTE: msec can only reduce the permissions of files, so if
 you don't get the results you expect, check that you're not asking
 msec to add missing permissions to the files or directories you
 created.
 23.10.2.  Gentoo
 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


 23.11.  Advanced Backend Configurations
 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.
 1. Add the first capture card on one of the slaves. Complete the
    configuration, connecting the input source to the card. This will
    get cardid #1 in the database. Exit mythtv-setup.
 2. Configure the first capture card on the master backend. This will
    get cardid #2 in the database. Exit mythtv-setup.
 3. Configure the first capture card on the second slave. This will be
    cardid #3 in the database. Exit mythtv-setup.
 4. Configure the second capture card on the master backend. This will
    get cardid #4 in the database. Exit mythtv-setup.
 Using this scheme, the master backend will not use both capture cards
 until one of the following happens:
 o  There are four recordings scheduled for the same time
 o  Both slaves are unavailable
 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.


 23.12.  Using the transcoder
 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:


 o  Automatically transcode the file once it has completed recording.
 o  Manually choosing to transcode a recording, usually after importing
    a cutlist or manually marking commercials to be removed.
 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:
 1. Configure recording profile for your capture source and enable
    transcoding on one or more profiles.
 2. Configure one or more transcoding profiles.
 3. Create or alter existing scheduled recordings to enable transcoding
    for that recording.
 23.12.1.  Configuring Recording Profiles to Allow Transcoding
 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.
 23.12.2.  Configure Transcoding Profiles
 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.org/ffmpeg-doc.html
 <http://ffmpeg.org/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.
 23.12.3.  Create/Alter Scheduled Recordings to Enable Transcoding
 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.


 23.12.4.  Manual Transcoding
 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.
 23.13.  Changing your hostname
 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".


   NOTE: Changing the hostname using direct SQL update commands will
 break things. You MUST use this indirect method.
 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)


 To alter the hostname in the current session, run:


      # hostname kidsroom


 3. Back up the database in case something goes wrong. See ``Saving or
 Restoring the database for instructions.
 4. Rename the host in the database. First, ensure that the new
 hostname you'll be using isn't already in the database.


      $ mysql -umythtv -p mythconverg -e "SELECT COUNT(*) FROM settings WHERE hostname LIKE '%kidsroom%';"


 If the count is anything other than 0, you'll need to choose another
 hostname.
 Now we're actually going to change the name. The following should all
 be typed on the same line:


      $ mythconverg_restore.pl --change_hostname --old_hostname="frontend1" --new_hostname="kidsroom"


 See ``Saving or Restoring the database for information on configur-
 ing the script.
 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.
 5. Start the backends. If you use init scripts, do the following,
 otherwise start them from terminal consoles.


      # /etc/init.d/mythbackend start


 6. Quit and restart all frontends.
 23.14.  Can I run MythTV on my TiVo?


 23.15.  Can I run MythTV on my ReplayTV?
 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.
 23.16.  Can a wireless connection be used between the frontend and the
 backend?
 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.
 23.17.  How can I burn shows that I have recorded to a DVD?
 Use the mytharchive plugin.
 23.18.  Using the DBoxII within MythTV
 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 <http://www.tuxbox.org>. Additionally, you need
 to enable the SPTS mode in Neutrino.


 o  Add a new "Capture Card" in the setup. The "Card type" is "DBOX2
    Input", the other values have to be adjusted according to your
    setup.  The default values, except for the "DBOX2 host ip", should
    work fine.
 o  Define a new video source. It doesn't need to be configured, you
    just need to define it. MythTV grabs the EPG from the DBoxII.
 o  Connect the DBoxII to the newly defined input source in "input
    connections".
 o  Since channel scanning is not implemented yet, you need to define
    channels in the "Channel Editor". Make sure that you use the same
    value for "Channel Name" as on the DBoxII. You can get a list of
    available channels from the web interface of Neutrino at http://ip-
    of-your-box:80/.  Associate the channel with your new video source
    and repeat when needed.
 You may leave the Setup now and proceed as usual.
 23.19.  What do the icons on the Watch Recordings screen mean?
 Press "1" or F1 to get a popup.


 23.20.  What do the letters mean when I change channels?
 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
 o  l/L = Lock : This could be seen by PVR-250/BTTV users
 o  a/A = PAT : Any recording transmitted in MPEG
 o  m/M = PMT : Any recording transmitted in MPEG
 o  g/G = MGT : ATSC only
 o  v/V = VCT : ATSC only
 o  n/N = NIT : DVB only
 o  s/S = SDT : DVB only
 23.21.  What is the difference between the various Hauppauge PVR mod-
 els?
 This is covered in the hardware section, and extensively covered on
 the Hauppauge website.
 (http://www.hauppauge.com/site/compare/compare_pvr.html
 <http://www.hauppauge.com/site/compare/compare_pvr.html>) Please check
 the Hauppauge website for the most accurate information.
 A PVR-150 comes in a number of versions:
 o  The PVR-150 (Model 1045) is the retail kit. It comes with a remote
    control and an IR Blaster. It does not have a radio tuner.
 o  The PVR-150 MCE (Model 1042) will usually come in a plain white box
    and is sold as an OEM device. It does not come with a remote
    control, since it's usually used as the second, third, etc capture
    device.
 o  The PVR-150 MCE Kit (Model 1062) does not have a radio tuner and
    comes with a Microsoft Media Center remote control instead of
    Hauppauge's.
 o  The PVR-150 low profile (Model 1086) is a low-profile card. It has
    a radio tuner and is approximately half the height of a standard
    card.  However, it comes with a low-profile PCI bracket, so it is
    not suitable for use in a standard PCI slot without removing the
    bracket, which may not be worth the trouble.
 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. 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. Finally, support for the
 MPEG-2 video decoding offload has been removed from within MythTV.
 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.
 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.
 23.22.  Changing channels on an external Set Top Box
 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:
 1. Use an IR blaster. An IR blaster is an infrared transmitter
    connected to your computer. When MythTV needs to change channels it
    will send IR pulses, thereby emulating a remote control.
 2. Use a direct serial connection. Some STB's have a serial port on
    the back, although it may not look like a serial port. It may look
    like a phone jack, or a strange VGA connector. It may be labeled
    "Low Speed Data". A direct serial connection is more reliable than
    an IR blaster. Not all STB's that have a Low Speed Data port have
    it enabled; you may need to convince your service provider to turn
    it on. Stating that you have a Tivo may help; the Tivo has a
    direct-connect capability.
 3. Use a firewire connection. There is a 6200ch.c in the MythTV
    contrib directory which may work for you.
 23.23.  Configuring one machine to flag all commercials
 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.
 24.  Example Configurations.
 24.1.  Advanced Partition Formatting
 The partitions that your distribution sets up for you may not be
 optimized for large files.
 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.
 Although done in 2006, there are published tests (http://www.debian-
 administration.org/articles/388 <http://www.debian-
 administration.org/articles/388> and
 http://linuxgazette.net/122/TWDT.html#piszcz
 <http://linuxgazette.net/122/TWDT.html#piszcz> ) 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 <http://www.gossamer-
 threads.com/lists/mythtv/users/52672>) with very large files (10
 gigabytes) was reported in the MythTV Users mailing list.
 24.1.1.  Ext2
 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.
 24.1.2.  Ext3
 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.
 24.1.3.  ReiserFS
 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.
 24.1.4.  JFS
 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.
 24.1.5.  XFS
 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.  XFS file systems 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.
 24.2.  Caching support for Schedules Direct
 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:
 1. A PVR-150 MPEG-2 encoder card connected directly to a CATV source.
 2. A PVR-250 MPEG-2 encoder card connected via S-Video to a CATV Set
    Top Box.
 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.