Welcome to yet another MythTV Setup Guide
Just wanted to capture my experiences in writing to help everyone else out
This is the result of about 50 person hours, hopefully it takes you less!
This is the result of about 50 person hours, hopefully it takes you less!
Software/Hardware chosen:
Case
Inwin
BP655 mITX Case
TV
Existing
RCA 42" TV with HDMI input
Motherboard
Asus
AT5IONT-I (onboard NVidia card)
180$
from NCIX
Memory
Kingston
Value Ram
2
x 2GB of KVR1333D3S9/2G
30$
for 2 from NCIX
Tuner
Hauppauge
HVR-2250 board only
120$
from NCIX
Hard
drive
Seagate
Barracuda 80GB Drive 7200 RPM
0$
from inventory
Remote
ATI
Remote Wonder II
0$
from inventory
Software
Mythbuntu
12.04 with MythTV 0.25 with fixes
Video
Feed
Regular
old analog cable - digital is coming at a later time
Assembly
There were no challenges to assembling the computer, everything
fit well and plug and play. I connected the Mythbuntu computer to the TV using
the HDMI output of the video card. I also connected the coaxial cable from my
cable feed into the HVR-2250.
Getting Setup Started
I loaded the Mythbuntu 12.04 iso image onto a 1 GB USB stick using
LinuxLive USB Creator. I plugged that into the computer, pressed F8 to get the
boot options for my BIOS to select boot from USB, and from there I was brought
to the setup of MythBuntu.
Setting up Mythbuntu
During setup, if using an NVidia card, it will ask what Video
driver to use, select the NVidia Proprietary Driver. This allows further
configuration especially with resolutions.
Install the bootloader to the drive itself (/sda, not /sda1)
Booted into Mythbuntu
When it boots it will load to the MythFrontend. Exit Mythtv by
pushing Escape and configure the following:
Go to Applications, System, NVidia XServer settings, go to Display Configuration, change the resolution to whatever it is you like, in my case I chose 1920x1080, refresh rate stayed at Auto.
First I setup some stuff to allow me to play videos from my network
Go to Applications, System, NVidia XServer settings, go to Display Configuration, change the resolution to whatever it is you like, in my case I chose 1920x1080, refresh rate stayed at Auto.
First I setup some stuff to allow me to play videos from my network
In Mythtv frontend:
Go to Setup, Video, Playback, Playback Profiles (3/8), change the Playback Profile to VDPAU High Quality (this allows smooth playback of 1080p content, without this change the system is unusable, extremely choppy)
Go to Setup, Media Settings, Video Settings, General Settings and add the directory that you want in the "Directories that hold videos" using a semicolon after the existing entry. For example "/var/lib/mythtv/videos;/mnt/luc-computer/Video/Folders/Video Workshop", no quotes
When browsing Videos in the Video Gallery, press the Menu key (m) and go to File Extension Settings, add in new Ignore entries for mta, cos2, scn
Go to Setup, Audio, change the Audio Output device to ALSA:dmix:CARD=NVidia,DEV=7 (may differ for your use, this is likely motherboard specific)
I tried using djmount to watch videos through DLNA/upnp from Serviio on my Windows machine. I found the djmount + Serviio combination to be unstable and just resulted to regular SMB shares, works great.
Go to Setup, Video, Playback, Playback Profiles (3/8), change the Playback Profile to VDPAU High Quality (this allows smooth playback of 1080p content, without this change the system is unusable, extremely choppy)
Go to Setup, Media Settings, Video Settings, General Settings and add the directory that you want in the "Directories that hold videos" using a semicolon after the existing entry. For example "/var/lib/mythtv/videos;/mnt/luc-computer/Video/Folders/Video Workshop", no quotes
When browsing Videos in the Video Gallery, press the Menu key (m) and go to File Extension Settings, add in new Ignore entries for mta, cos2, scn
Go to Setup, Audio, change the Audio Output device to ALSA:dmix:CARD=NVidia,DEV=7 (may differ for your use, this is likely motherboard specific)
I tried using djmount to watch videos through DLNA/upnp from Serviio on my Windows machine. I found the djmount + Serviio combination to be unstable and just resulted to regular SMB shares, works great.
Setting up
the Hauppauge HVR-2250
The only thing that needs to be done to get the Hauppauge HVR-2250
working is to supply the firmware file. The name of the file is NXP7164-2010-03-10.1.fw
At the time of writing this it can be found here: http://www.steventoth.net/linux/hvr22xx/firmwares/4019072/NXP7164-2010-03-10.1.fw
Place the file in /lib/firmware/<current kernel> and reboot. Devices /video0 and /video1 will be created and MythTV will detect them. Use uname to figure out your "current kernel" directory, in my case there are two directories, so I needed to know which one was currently running.
They need to be added as Capture Cards as MPEG-2
Encoders, not V4L2 Devices. There's a lot of discussion on forums about
creating input groups and putting one digital and one analog in each, etc... I
never had to do that, it worked right out of the box so to speak.
One very key thing is that when using an analog input,
don't bother trying to scan for channels in mythbackend-setup. Instead, in the
Channel Editor, don't click "Scan for channels", it is of no use,
click "Fetch channels from listings source". If you do try to scan for channels it won't find anything and you'll scratch your head and recompile the v4l2 drivers like I did. So to fetch channels, you need a listings source! You'll need to add that first using the previous
menu item and SchedulesDirect. I wasted a significant amount of time
troubleshooting why it would not scan for channels, only to discover that it
won't.
When I watched Live TV or Recordings, the volume sounded as though
it was being played on very crappy speakers. Turns out that the volume on the
card was set way too loud. I created a script called volume.sh and placed it in
/usr/bin. Then, in mythbackend-setup, go to System Events and under
"Master Backend Startup", type in /usr/bin/volume.sh... This way, the
script will be ran when the backend starts. Make sure to do a "chmod +x
volume.sh" that file otherwise it will not be executable.
The contents of this script is:
***************************************
htpc@gallant-HTPC:~$ v4l2-ctl -d /dev/video0 --set-ctrl volume=-10
htpc@gallant-HTPC:~$ v4l2-ctl -d /dev/video1 --set-ctrl volume=-10
nvidia-settings -a '[gpu:0]/GPUPowerMizerMode=1'
***************************************
The nvidia-settings line is to make the GPU not use PowerMizer
mode, ensuring it is ready to process video at all times.
Before going into mythtv, you'll want to test your tuner to make
sure it works. I had a lot of trouble with this as every time I tried the
following command:
mplayer /dev/video0
I would just get a blue screen. You have to tune the tuner to a
channel before you can play it. To do this, use this command:
v4l2-ctl -d /dev/video1 --set-freq=55.250
Frequencies are available here: http://en.wikipedia.org/wiki/North_American_cable_television_frequencies#North_America_cable_television_frequencies
To get current settings of your capture card use this command:
htpc@gallant-HTPC:~$ v4l2-ctl -d /dev/video0 -l
To mount
Windows and WD MyBook network shares
To mount network shares, for those that aren't Linux experts...:
As super user edit the /etc/fstab file and add in the following
content:
//192.168.0.101/Download /mnt/luc-computer/Download cifs
username=guest,iocharset=utf8 0 0
At bootup, Mythbuntu will automatically mount the Download share located at //192.168.0.101 and mount it to /mnt/luc-computer/Download. The /mnt/luc-computer/Download directory needs to exist, it can't mount if the directory is not already created.
This is a Windows share for me, and guest viewing is enabled,
which is why I use username=guest.
I also have a WD MyBook Live, and to mount one of its shares I added
the following entry in the fstab file:
192.168.0.140:/nfs/Recordings /mnt/gallantFatDrive/Recordings nfs
rw,hard,intr,nfsvers=3 0 0
(source for the WD Mount (http://community.wdc.com/t5/WD-ShareSpace/WD-ShareSpace-NFS-and-Linux-Here-is-how-it-is-done/td-p/181344)
This corresponds to a Recordings share with anonymous write
access.
To test if your fstab entries work, use 'mount -a' and 'umount-a'
I wanted my recordings to record onto my NAS (MyBook), so I
removed the /var/lib/mythtv/recordings folder from the Default Storage Group
and added /mnt/gallantFatDrive/Recordings
Use the iftop command to monitor network throughput if you're
wondering.
I also changed "Max simultaneous jobs on backend" from 1
to 4 (general settings of backend setup) just to allow the backend to process a
bit more at a time.
Setting up
the ATI Remote Wonder II
To setup the remote control, I followed rough instructions on these
two pages:
http://www.mythtv.org/wiki/ATI_Remote_Wonder_II#MythTV.2C_ATI_Remote_Wonder_II_and_Kernel_Keymap_Modification
http://www.mythtv.org/wiki/Keybindings#Without_the_stickykeys_option_selected
LIRC is not required for this remote with recent kernels.
The remote is essentially plug and play. Once you plug it in
(might need a reboot), run the lsmod (lsmode | grep remote) command to confirm that ati_remote2 has
loaded into the modules. It should be there, otherwise use modprobe ati_remote2
to load it in. I did not have to do anything to get it to load at bootup.
In order to map the keys over, put these lines into /etc/rc.local
as this script runs as sudo
*************************************
setkeycodes 0x005C 28 0x015C 28 0x025C
28 0x035C 28 0x045C 28 #//this maps
the OK key to the enter key
setkeycodes 0x0020 103 0x0120 103
0x0220 103 0x0320 103 0x0420 103
#//this maps the CH+ key to the up key
setkeycodes 0x0021 108 0x0121 108
0x0221 108 0x0321 108 0x0421 108
#//this maps the CH- key to the down key
setkeycodes 0x0030 25 0x0130 25 0x0230
25 0x0330 25 0x0430 25 #//pause key
to the letter P
setkeycodes 0x002c 25 0x012c 25 0x022c
25 0x032c 25 0x042c 25 #//play key to
the letter P
setkeycodes 0x0031 1 0x0131 1 0x0231 1
0x0331 1 0x0431 1 #//stop key to
the letter ESC
setkeycodes 0x0037 19 0x0137 19 0x0237
19 0x0337 19 0x0437 19 #//map the
record key to the letter R
setkeycodes 0x000d 67 0x010d 67 0x020d
67 0x030d 67 0x040d 67 #//mute key
to F9
setkeycodes 0x0010 87 0x0110 87 0x0210
87 0x0310 87 0x0410 87 #//volume up
to F11
setkeycodes 0x0011 68 0x0111 68 0x0211
68 0x0311 68 0x0411 68 #//volume
down to F10 ---- Set the mixer device
to software so that these controls actually work!!!
#setkeycodes 0x0428 106 #//map the fast forward key to the right
key ---- not using this since they only jump around, see below
#setkeycodes 0x0429 105 #//map the rewind key to the left key
setkeycodes 0x0028 52 0x0128 52 0x0228
52 0x0328 52 0x0428 52 #//map the
fast forward key to the period
setkeycodes 0x0029 51 0x0129 51 0x0229
51 0x0329 51 0x0429 51 #//map the
rewind key to the comma
setkeycodes 0x0054 50 0x0154 50 0x0254
50 0x0354 50 0x0454 50 #// map the
menu key to the 'm' (key to the left of the zero button)
setkeycodes 0x00f9 23 0x01f9 23 0x02f9
23 0x03f9 23 0x04f9 23 #// map the i
key to the letter I (to the right of the up button)
setkeycodes 0x00be 31 0x01be 31 0x02be
31 0x03be 31 0x04be 31 #//map the
question mark key to the S key for bringing up the EPG
setkeycodes 0x00d0 46 0x01d0 46 0x02d0
46 0x03d0 46 0x04d0 46 #//map the hand
key to the change tuner button
setkeycodes 0x008e 65 0x018e 65 0x028e 65 0x038e 65 0x048e 65 #//map the ATI button to the terminal (F7
key shortcut)
*************************************
Setting up
Mythwelcome
Setting up Mythwelcome sounds a lot worse then it actually is. The wiki makes it seem scary but it is suited for many different situations.
Block the HWClock Save (may not even be required, but just do it
unless you feel like testing etc).
All below instructions copied from http://www.mythtv.org/wiki/ACPI_Wakeup
Disable
the exec line in /etc/init/hwclock-save.conf
/etc/init/hwclock-save.conf
#
hwclock-save - save system clock to hardware clock
#
# This
task saves the time from the system clock back to the hardware
# clock
on shutdown.
description "save system clock to
hardware clock"
start
on runlevel [06]
task
script
. /etc/default/rcS
[ "$UTC" = "yes" ]
&& tz="--utc" || tz="--localtime"
[ "$BADYEAR" = "yes" ]
&& badyear="--badyear"
# exec hwclock --rtc=/dev/rtc0 --systohc $tz
--noadjfile $badyear
end
script
Manually test the wakealarm using the instructions here (http://www.mythtv.org/wiki/ACPI_Wakeup#Manually_test_wakealarm)
Simple test to wake the machine 5 minutes from now
sudo sh
-c "echo 0 > /sys/class/rtc/rtc0/wakealarm"
sudo sh
-c "echo `date '+%s' -d '+ 5 minutes'` >
/sys/class/rtc/rtc0/wakealarm"
cat
/sys/class/rtc/rtc0/wakealarm
Check
cat
/proc/driver/rtc
This
should return a list of parameters. Check the "alrm_time" is 5
minutes into the future and the "alrm_date" is appropriate (which
could be but might not be "today," if now + 5 minutes is the next day
UTC).
Shut down your computer and see if it comes back up in
~5 minutes.
sudo shutdown -h now
For the motherboard I used, I did not even need to enable the RTC
portion in the BIOS. It stays disabled but the computer still boots itself.
If your computer starts in 5 minutes, then you're good to move on
to the last step.
The last step to getting this setup is on the same http://www.mythtv.org/wiki/ACPI_Wakeup
website, under the "Mythwelcome users" heading... It takes a bit of
effort to filter through it, here's a summary:
Change the system so that mythwelcome is started
instead of mythfrontend. In Mythbuntu to start mythwelcome instead of mythfrontend you just need to uncomment the MYTHWELCOME line in /etc/mythtv/session-settings.
Change
these mythbackend Shutdown/Wakeup Options (mythtv-setup) options
Block
shutdown before client connected : unchecked
Idle
shutdown timeout (secs) : 300
(if using active EIT this may need to be set to a lower value)
Max.
wait for recording (min) :
15 (mythshutdown will ignore values less than 15. If less than
15
minutes to next scheduled recording or wakeup period the shutdown
will
always be blocked)
Startup
before rec. (secs) : 300
(make this time long enough to complete the boot & disk check
before
the recording should start)
Wakeup
time format :
yyyy-MM-ddThh:mm:ss (Must be this format for mythshutdown)
Command
to set Wakeup Time :
mythshutdown --setwakeup $time
Server
halt command :
mythshutdown --shutdown
Pre
Shutdown check-command :
mythshutdown --check
MythShutdown/MythWelcome Settings (mythwelcome --setup or F11 in mythwelcome)
Command
to set wakeup time :
sudo /usr/bin/setwakeup.sh $time
Wakeup
time format :
time_t
nvram-wakeup
Restart command : (Must
be blank)
Command
to shutdown : sudo
shutdown -h now (some systems may need "sudo shutdown -P now"
instead (-h may cause system to restart))
Command
to start the frontend :
/usr/bin/mythfrontend
setwakeup.sh
with option for bios in UTC or local time.
setwakeup.sh
#!/bin/sh
#
# set
ACPI Wakeup time
#
usage: setwakeup.sh seconds
# seconds - number of seconds from epoch to
UTC time (time_t time format)
#
# set
UTCBIOS to true if bios is using UTC time
# set
UTCBIOS to false if bios is using local time
UTCBIOS=true
if
$UTCBIOS
then
#utc bios - use supplied seconds
SECS=$1
else
#non utc bios - convert supplied seconds to
seconds from
#epoch to local time
SECS=`date -u --date "\`date --date
@$1 +%F" "%T\`" +%s`
fi
echo 0
> /sys/class/rtc/rtc0/wakealarm #
clear alarm
echo
$SECS > /sys/class/rtc/rtc0/wakealarm
# write the waketime
Setup your /etc/sudoers permissions by running "sudo visudo" and pasting the line at the end of the file.
%mythtv
ALL = NOPASSWD: /sbin/shutdown, /usr/bin/setwakeup.sh, /usr/bin/mythshutdown
It
might be that sudo is configured to require a real tty to run commands as a
user (i.e. mythtv). In this case add this line
Defaults:mythtv !requiretty
Don't do like me and make a typo when creating the wakeup.sh file.
I forgot the "e" after wak and troubleshot it for about 4 hours!
Anyway, Mythwelcome works pretty good, the only annoying thing is
that you can't bring it in focus when any other windows are open, all other
windows must be closed so that you can see what Mythwelcome is saying. Not sure
if this is by design, it must be.
Power
Consumption
From a power consumption standpoint, this setup is great. I
measured it using my ammeter and here's what I get:
Peak
power during bootup: 97 W
Power
during bootup: 75
W
Power
during LiveTV 84
W
Power
at idle: 75
W
Power
watching HD Video through the network: 86 W
Power
at rest with computer turned off: 5
W (quite surprising)
Random
Small Things
This posting hits a lot of the main points in a much more succinct
way than I did... http://dreamlayers.blogspot.ca/2012/10/mythtv-notes.html
If you want to add extra keys, use the showkey command and follow
the instructions in the two links above.
I also read that the Intel CPU had issues where it would be slow
so I found this command and added it to /etc/default/grub. Not really sure if
it did anything but the command is still there. Replace existing line with
GRUB_CMDLINE_LINUX="intel_idle.max_cstate=0 processor.max_cstate=1"
The commercials aren't really being detected, I haven't
investigated that extensively. Maybe 1 in 6 commercials get detected. Strict
commercial detection is in fact turned off.
I tried doing the upgrade to 0.26 through Repositories, that did not go
well. Luckily I had done a full disc image before trying that, and I was able
to revert. Since then I've turned off repo updates but it still keeps bugging
me to do it, I have to keep saying no.
In the post in dreamlayers above he mentions turning off all
logging in SQL. To do this, edit these files:
/etc/init/mythtv-backend.conf
/usr/bin/mythfrontend
and change all local7 references to none to disable logging.
I did not see any huge improvements from this, maybe I did it
incorrectly?
I've had two freezeups when watching recordings, the videos freeze right after starting them. I have not investigated this yet. A reboot is required to resolve the problem.
I messed around trying to get a script working to make thumbnails of my videos on the network so that browsing them would be more visually appealing. If anyone is interested in this let me know.
Satisfaction
Level
Overall excellent. Had it not been for a few minor
things it would have probably taken me one third the time to set this up.
My only complaint is performance during LiveTV. As everyone else
reports, it takes a long time to change channels (maybe 5 seconds), and I read
all over that LiveTV is kind of an afterthought, so I just accepted this as is.
The other complaint (I know I said I only had one), is that when
browsing up and down through the EPG, the video stutters. These posts describe
it well, and I did try doing the SQL improvements, but it did not resolve the
problem: http://www.mentby.com/Group/mythtv-users/livetv-stutter-while-in-epgguide.html
Next steps
for me
The minute I finished setting up the box (literally), I saw a
banner across the TV stating that these analog channels would no longer be working as
our cable provider is moving to full digital except for channels 1-13, so I
have to get a STB. I've ordered an IRBlaster from Hauppauge and will be setting
that up next.
I am aiming to have channels 1-13 still available through
coax and the STB through component (red/white/yellow), so that I could record
three things at once.
I will probably post details of my progress and if I find anything out along the way. Good luck with your own setup, I hope this post can help at least a little bit!
For any questions please contact me at lucgallant /// gmail///com
where the slashes should be replaced with the appropriate symbols. Or, just
make a comment in the comments below.