Intro
Basic freevo setup is easy, but if you want some special features or lots of additional plugins it gets harder. I especially like the idlebar plugins - if it was for me, we could have two idlebars ;-) But first things first, lets start with the basic setup.
Basic Setup
Since I'm receiving analog cabel tv instead of analog free-to-air via antenna for a few weeks now it makes sense to record tv. I can even watch soccer now - with tv via antenna I always thought there are 44 players on the sports field and it was snowing even in July! Basic setup also includes music- (audio cd, mp3), movie- (dvd, vcd, xvid) and image-configuration.
Watch TV
First step is to get the program guide information. Not having a dsl flatrate I don't want to use xmltv. So I choosed nxtvegp, which grabs this info directly from the cable tv. In Germany there are three channels providing epg data. You can configure nxtvepg to grab the data from all three channels and merge the information to receive as much epg data as possible. This step has to be done with the nxtvepg-gui. See [1] for details. Once configured, you can refresh the epg data from within command line. I grab the epg data on system startup. Therefore add:/usr/bin/nxtvepg -dump xml -provider ff -rcfile /root/.nxtvepgrc > /tmp/TV.xml
Next step is to set up basic freevo variables for tv. I downloaded a channel list from my cabel tv provider, but soone I had to realise that it doesn't fit with the channels I'm able to watch.... So I copied the frequency of each channel from my tv tuner to TV_CHANNELS in local_conf.py. My TV_CHANNELS looks like:
( 'CNI0DC2', 'ZDF', '196.00MHz' ),
( 'CNI0DD4', 'NDR', '189.00MHz' ),
...
]
plugin.activate('tv.tvtime')
<station name='ARD' band='Custom' active='1' position='0' xmltvid='CNI0DC1' channel='210.00MHz'/>
<station name='ZDF' band='Custom' active='1' position='1' xmltvid='CNI0DC2' channel='196.00MHz'/>
<station name='NDR' band='Custom' active='1' position='2' xmltvid='CNI0DD4' channel='189.00MHz'/>
...
</list>
TV_VIEW_SIZE = (768, 576)
Depending on your system setup (nvidia driver version, graphic card, etc.) you'll maybe facing nasty blue borders around the live tv picture (or only on one or two borders). That has something to do with xv overlay; didn't wanted to go into detail there so I just addded:
One last hint on the tv guide: If you want station logos to show up instead of the channel names you can download them e.g. from http://www.tvtv.de and save them as PNG-file. Rename them so that the filename fits the xmltv-id. For my setup I would need:
CNI0DC2.png
CNI0DD4.png
...
Record TV
There is not much to do to get recording working. I moved the whole recording stuff from local_conf.py to my own bash script record.sh. For me it gets more cleary this way, besides bash is the language I like most. Adding:DSP="adevice=${ADEV}:audiorate=32000:buffersize=64:forceaudio:forcechan=2"
When using frequencies in TV_CHANNELS you have to cut the "MHz" of before you start mencoder. If you use channel-ids instead of frequencies just replace freq=${CHAN} with channel=${CHAN}. On my system recording eats about 30% cpu, so there's enough performance left to watch a dvd while recording. To watch the recorded stuff with xine, change ratio manually to 4:3 (press "a" twice).
Watch a movie
I prefer xine to watch movies. I can change subtitles and audio on the fly, zoom in and out of the picture and change the aspect ratio. Xine setup has been done while setting up the system, it depends on your hardware config. The only thing do to is add:
Listen to music
Mplayer and xine have both all the capabilities that are necessary to play the full range of digital audio media. Nevertheless I encountered the following problems: Using xine I wasn't able to play audio cds in a way I expected. When a new title starts, the dvd-drive starts spinning up to maximum rpms and returning to normal after two seconds. Awful! I wasn't able to change this by neither xine settings nor hdparm settings. So I removed xine for audio and set mplayer as preferred player:plugin.remove('audio.xine')
Look at pictures
Nothing to say here. It all worked out of the box.
Freevo plugins
Now that we have the basic setup completed, we can switch to the plugins. Some of them come with the freevo-package, some have to be downloaded from the freevo addons page [3]. In my opinion the plugins are what makes the system really interesting when up and running. It's a bit like playing with the old model railway. It's never complete and you can always enhance your system. And with a lot of plugins up and running, it's really impressive if you want to show off when your friends visit ;-)
Main menu plugins
Every htpc comes with a weather plugin. It seems as it is one of the most important functionalities of a media pc :-). I don't watch the weather forecast on the tv news, but I like the way it is presented on a htpc. The icons of the weather plugin are afaik from mythtv. I replaced them with the ones from MediaPortal, which provides far more icons for different weather status'. The headline-plugin is extremely valuable if you find rss-feeds which provide more than only headline and url, meaning content! The amount of content that the "Tagesschau"-feed provides is excellent. Do you know any other content-rich rss-feed either in German or English language?PLUGIN_WEATHER_LOCATIONS = [ ("GMXX0049", 1, "Hamburg") ]
plugin.activate('headlines', level=40)
HEADLINES_LOCATIONS = [ ("Tagesschau","http://www.tagesschau.de/newsticker.rdf"),
("SPIEGEL ONLINE","http://www.spiegel.de/schlagzeilen/rss/0,5291,,00.xml"),
("FAZ.NET","http://www.faz.net/s/Rub/Tpl~Epartner~SRss_.xml"),
("NETZEITUNG.DE","http://www.netzeitung.de/export/news/rss/titelseite.xml"),
("STERN.DE","http://www.stern.de/standard/rss.php?channel=all"),
("Pressedienst, News, Analysen zu Inet-Marketing + Suchmaschinen","http://www.marketingman.de/rss.php"),
("GEO.DE","http://www.geo.de/rss/GEO/index.xml"),
("TheGeek.de - Coding, Culture and Arts","http://www.thegeek.de/blog/rss2.php"),
("Heise News","http://www.heise.de/newsticker/heise.rdf"),
("Heise Security","http://www.heise.de/security/news/news.rdf"),
("Heise Mobil","http://www.heise.de/mobil/newsticker/heise.rdf"),
("Pro-Linux","http://www.pl-forum.de/backend/pro-linux.rdf"),
("Telepolis","http://www.heise.de/tp/news-xl.rdf"),
("PHP-HOMEPAGE.DE","http://www.php-homepage.de/backend/rss/1.0/"),
("Polarluft - Neue Webseiten und Online-Artikel zum Thema Computer und Internet","http://www.polarluft.de/all.rss") ]
Submenu plugins
I have two usb sticks which are mounted automagically by the automounter. If they are plugged in, a new submenu item appears and you can access the stick, delete old files or copy new files from hdd/dvd to the stick (see shoppingcart-plugin). If you plug in one of the sticks, both menu items appear - this behaviour will change with freevo 2.0.plugin.activate('usbstorage', type='video', args=('USB Stick CruzerMini', '/media/usb-SNDK3EE5941133000104:0:0:0p1'))
plugin.activate('usbstorage', type='audio', args=('USB Stick CruzerMini', '/media/usb-SNDK3EE5941133000104:0:0:0p1'))
plugin.activate('usbstorage', type='image', args=('USB Stick CruzerMini', '/media/usb-SNDK3EE5941133000104:0:0:0p1'))
plugin.activate('usbstorage', type='video', args=('USB MP3-Player', '/media/usb-0002F5CB080E4D88:0:0:0p1'))
plugin.activate('usbstorage', type='audio', args=('USB MP3-Player', '/media/usb-0002F5CB080E4D88:0:0:0p1'))
plugin.activate('usbstorage', type='image', args=('USB MP3-Player', '/media/usb-0002F5CB080E4D88:0:0:0p1'))
DILBERT_DIR='/medialib/images/dilbert'
plugin.activate('audio.radio')
RADIO_CMD='/usr/X11R6/bin/radio'
RADIO_STATIONS = [ ('Radio Hamburg','88.05'),
('DeutschlandRadio Berlin','88.50'),
...
('Radio Bremen 4','107.80') ]
Option menu plugins
These plugins show up if you press "e" (for d"e"tails ?) on a selected file in each submenu. "df" shows free disk space of the current partition, "shoppingcart" activates a mechanism to collect files and copy them into a directory. For me it crashes when I try to copy a whole directory.plugin.activate('shoppingcart')
CD_RIP_PN_PREF = '%(artist)s/%(album)s/%(track)s - %(artist)s - %(song)s'
LAME_CMD = 'lame'
CD_RIP_LAME_OPTS = '--vbr-new -b 192 -h'
CDPAR_CMD = 'cdparanoia'
plugin.activate('audio.cdbackup')
plugin.activate('video.dvdimage')
Idlebar plugins
I like the idlebar to get a quick and extensive overwiev of my system status. Of course it looks very "computerized" (for a tv application), but I like it anyway. First activate the idlebar and afterwards load the plugins:plugin.activate('idlebar.clock',level=50, args=('%a %H:%M', ))
plugin.activate('idlebar.cdstatus',level=10)
plugin.activate('idlebar.holidays',level=20)
plugin.activate('idlebar.system.sensors',level=30,args=('temp2','temp1','Active'))
plugin.activate('idlebar.system.procstats',level=40,args=(-1,1,1))
plugin.activate( 'idlebar.tv', level=50, args=( 24) )
HOLIDAYS = [ ('01-01', 'newyear.png'),
('01-15', 'birthday.png'),
...
('12-26', 'christmas.png'),
]
plugin.activate('idlebar.volume', level=50)
HDDTEMP_POLL = 120
HDDTEMP_HOST = "localhost"
HDDTEMP_PORT = 7634
plugin.activate('idlebar.hddtemp',level=10,args=(["/dev/hda"], 30, 45))
Activate the hddtemp-daemon on system startup with:
For the holiday plugin I copied some icons from the kde crystal directory to /usr/share/freevo/icons/holidays/. Anyone interested ?
Links
[1] http://nxtvepg.sourceforge.net/man.html[2] http://freevo.sourceforge.net/cgi-bin/doc
[3] http://freevo.sf.net/addons
[4] http://www.guzu.net/linux/hddtemp.php