Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 26 Mar 2011 20:28:38 +0100
From:      Juergen Lock <nox@jelal.kn-bremen.de>
To:        freebsd-multimedia@FreeBSD.org
Cc:        lme@FreeBSD.org, Alexander Leidinger <Alexander@Leidinger.net>, freebsd-ports@FreeBSD.org
Subject:   some vdr intro/installation notes (watch/record/stream tv)
Message-ID:  <20110326192838.GA68179@triton8.kn-bremen.de>

next in thread | raw e-mail | index | archive | help
Hi, now that the vdr ports are finally committed here are some
updated notes:

 So what is vdr?  It's something like a luxury settop box/pvr on a pc
to receive/watch/record/stream digital tv channels with epg (electronic
program guide), timers, client/server networking, webinterface etc pp.
So if you have a FreeBSD (or Linux, but that's not covered here :)
server you can add one or more dvb/atsc tuner(s) connected to a
satellite dish, cable tv or just a dvb-t antenna (or receive iptv
streams without a tuner if your isp provides those tho I don't know
if anyone tested `real' iptv on FreeBSD yet), browse/search epg,
set timers for automated or manual recordings, and watch the
streams/recordings elsewhere on your lan.  Or if you have a FreeBSD
desktop you can also connect a tuner there and do it all on one
box - or just run a vdr client like vdr-sxfe (installed by the
multimedia/vdr-plugin-xineliboutput port) or a client vdr instance
using the streamdev-client plugin connected to a (possibly Linux)
vdr server elsewhere on your lan.

 So if your isp doesn't provide iptv,

	https://secure.wikimedia.org/wikipedia/en/wiki/IPTV

(german info page:

	http://www.iptv-anbieter.info/

) then you'll need a dvb tuner (or atsc, tho I have no idea if
anyone tested that with vdr on FreeBSD yet) with corresponding
v4l/dvb (`v4b') drivers, in most cases that means an usb tuner
supported by the webcamd port:

	http://www.freshports.org/multimedia/webcamd

 And finally, if you want to compare vdr to other existing ports,
it's a bit like mythtv - only most Linux users _I_ know prefer vdr
over mythtv. :)  (and vdr also doesn't use a rdbms so you don't
have to worry about mysql etc.)

----snip---previous-notes-with-minor-updates:-------

 I started with jpulz' vdr 1.7.14 patches: (now updated to 1.7.17)

	ftp://ftp.frm2.tum.de/pub/jpulz/VDR/
	ftp://ftp.frm2.tum.de/pub/jpulz/pictures/

and made q&d ports of those and of a few more plugins and two
webinterfaces so I can now use FreeBSD as a pc hdtv dvb-s2 and also
dvb-t dvr.

 Note: vdr 1.7.17 is the development branch so expect bugs!
(I mostly used it because the stable branch (1.6) doesn't support
dvb-s2 and h264...)

 FreeBSD notes:

0. See my earlier threads on the freebsd-multimedia list about webcamd
   and the usb dvb-s2 and dvb-t tuners I tested; the relevant webcamd
   ports and frieds have been updated now so you _should_ be able
   to just use those.  (dvb-c or atsc(?) tuners should also work
   as long as webcamd supports them and there aren't other bugs.)
   Links to the more important posts are also here:

	http://people.freebsd.org/~nox/dvb/

1. Before you start installing these ports either mount an extra
   fs with enough space for the recordings on /video or create a
   video dir elsewhere where there is space, symlink it to /video
   and make it writable for the vdr user.  (or if you do have one
   big / then you can create the dir on there too of course, I just
   disabled the mkdir in the port to avoid inadvertently filling
   up ppl's small / fs.)

   Or if you don't like a symlink you can also add your video dir
   as -v <dir> to vdr's startup args, see below.

2. There is a multimedia/vdr-plugins metaport that allows
   you to select and install the plugins you want (and vdr itself
   as a dependency), so you don't have to install numerous vdr/plugin
   ports individually.

3. I have rc.d scripts for vdr and vdradmin-am but even if you
   use those you still need to add plugins and their options similar
   to this to your /etc/rc.conf:

---snip----
# vdr
vdr_flags="'-Pxineliboutput --local=none --remote=127.1:37890' \
     -Pskinenigmang -Pfemon -Posdpip \
     '-Posdteletext --cache-system=packed --max-cache=128' \
     -Pstreamdev-server '-Plive -i127.1' -Pepgsearch -Pcontrol \
     -Pinfosatepg -Piptv '-Pupnp -i lo0'"
---snip----

   look in the README.s of the individual plugin ports for any
   needed options.  (should get installed below /usr/local/share/doc/vdr*)
   And if you want vdr to start at boot (instead of just manually
   by doing:

	/usr/local/etc/rc.d/vdr onestart

   ) you need to set:

	vdr_enable="YES"

   too of course.  And for vdradmin_am its:

	vdradmind_enable="YES"

   If you want to start vdr manually in the foreground instead you
   need to be root (or the vdr user but vdr also drops to the vdr
   uid itself if started as root), and then run it like:

	vdr '-Pxineliboutput --local=none --remote=127.1:37890' -Pskinenigmang -Pfemon -Posdpip '-Posdteletext --cache-system=packed --max-cache=128' -Pstreamdev-server '-Plive -i127.1' -Pepgsearch -Pcontrol -Pinfosatepg -Piptv '-Pupnp -i lo0'

4. Of all the video output methods only xineliboutput and streamdev
   seem to work (and the vdr-live webinterface browser streaming which
   also uses streamdev), jpulz also has patches for softdevice so I made
   a port for that too but it only gave me a black screen...  streamdev
   doesn't have an osd so you probably want xineliboutput at least for
   the first setup.

   I only very recently was able to test xineliboutput's vdpau/vaapi
   support and it turned out I had to add patches to the libxine
   port, so if you want to use that make sure it and ffmpeg are up
   to date and built with the VDPAU and VAAPI knobs on.  To test
   vdpau you can try something like: (vdr-sxfe gets installed by
   the xineliboutput plugin port)

	vdr-sxfe --hotkeys --video=vdpau --post tvtime:method=use_vo_driver,use_progressive_frame_flag=1 --audio=oss --reconnect xvdr+tcp://127.1

   if that looks jerky or doesn't work with hd material maybe your
   card cannot handle the default vdpau deinterlacing method, you
   can change that in ~/.xine/config_xineliboutput, for an `old'
   ION I use:

	video.output.vdpau_deinterlace_method:half temporal

   And vaapi is used via xv, just for nvidia this needs the
   multimedia/vdpau-video port installed (other cards I think we
   don't have support for yet), and in ~/.xine/config_xineliboutput
   video.processing.ffmpeg_enable_vaapi should not be set to 0:

	vdr-sxfe --hotkeys --video=xv --post=tvtime:method=Linear,cheap_mode=1,pulldown=0,use_progressive_frame_flag=1 --audio=oss --reconnect xvdr+tcp://127.1:37890

   An overview of which nvidia cards support which vdpau feature
   is here:

	http://www.mythtv.org/wiki/VDPAU

   On the radeon here using xorg 7.4's video-ati driver with the
   same xineliboutput xv settings but without vaapi vdr-sxfe as
   well as all other players I tested that knew the xvdr protocol
   (xineliboutput with osd) can also play h264 hd channels on this
   PhenomII box after the ffmpeg updates last year(?), with the
   only exception of kaffeine that still has issues with h264 1080i
   streams when deinterlacing is enabled:

	xine "xvdr://127.0.0.1#nocache"
	kaffeine "xvdr+tcp://127.0.0.1:37890"
	/usr/local/kde4/bin/kaffeine "xvdr+tcp://127.0.0.1:37890"

   (kaffeine also has no provision for vdr keyboard control...)

   If you don't use vdpau (I think that conflicts with compositing)
   you can now also try compositing and running vdr-sxfe with --hud
   for a somewhat nicer rendered osd, --video opengl (and vdpau as
   mentioned) support is now also in the build.

   Btw I use software volume control with xineliboutput (Setup ->
   Plugins -> xineliboutput -> Volume control in the osd) because
   selecting `hardware' there doesn't work so well with snd(4)'s
   volume-per-channel feature (hint.pcm.X.vpc, which also in fact
   is software) that I want to keep enabled for other apps...
   And in case you didn't know about this snd(4) feature you can
   read more here:

	http://people.freebsd.org/~ariff/SOUND_4.TXT.html

   You can also use other players like mplayer or totem/gstreamer
   (incluing the totem browser plugin invoked by the vdr-live
   webinterface), only those don't know the xvdr protocol and thus
   wont display an osd:

	mplayer -mc 10 -cache 8192 -demuxer lavf http://127.0.0.1:37890/
	totem http://127.0.0.1:37890/

   (or using streamdev:

	mplayer -mc 10 -cache 8192 -demuxer lavf http://127.0.0.1:3000/302
	totem http://127.0.0.1:3000/302

   - channel 302 is arte hd in my channels.conf.)

5. And if you want to try out the xbmc port that recently has been
   committed with live tv via vdr you can do that too even tho it
   is not the pvr-testing2 branch, you just won't get the fast
   channel switching etc you'd get via the vnsi protocol (that I
   also ported the plugin for but couldn't test it) - watching live
   channels and recordings done by vdr (possibly scheduled via
   webinterface) is still possible.  Just make sure you run vdr
   with the streamdev-server plugin enabled and that it is listening
   on the vdr-to-vdr server port (thats 2004 and may be disabled by
   default, see in the osd under Setup -> Plugins -> streamdev-server.)
   Then in xbmc you can add vdr streamdev as a video source either
   via the gui or manually by putting something like this in
   ~/.xbmc/userdata/mediasources.xml:

<mediasources>
    <network>
        <location id="0">vtp://127.0.0.1:2004/</location>
    </network>
</mediasources>

   Note you'll have to add the /video dir to xbmc seperately via
   the filesystem (possibly using nfs when remote) if you want to be
   able to play recordings from xbmc (or test the upnp plugin with
   xbmc but that is still alpha and at least atm also cannot stream
   h264 recordings.)

6. Unless you want to get lirc or the (experimental) FreeBSD uhid(4)
   patches in the vdr remote plugin working first (and your remote
   has enough buttons for vdr, some of those coming with dvb tuners
   are really quite `minimal', see below), you probably will at
   least initially want to use keyboard control.  I have
   included an example remote.conf for vdr-sxfe and the
   multimedia/vdr-plugin-control plugin that you can access
   by telnet (default port is 2002), I have put the menu button
   on the tab and insert keys and OK on the return key, see

	/usr/local/etc/vdr/remote.conf

   for the full keybindings list.  (If you start vdr in the foreground
   and keep that shell open you should be able to use that for keyboard
   control also, the control plugin just gives you an osd too over
   telnet.)

   And if you use xine

	xine "xvdr://127.0.0.1#nocache"

   instead of vdr-sxfe

	vdr-sxfe --video=xv --hotkeys --audio=oss xvdr+tcp://127.0.0.1:37890

   you probably want to use a ~/.xine/keymap that includes vdr controls,
   I've put mine here:

	http://people.freebsd.org/~nox/dvb/xine/keymap

   and the xineliboutput plugin port now also installs it under:

	/usr/local/share/examples/vdr-plugin-xineliboutput/xine/keymap

   Oh and the webinterfaces have point-and-click remotes too but those
   are pretty clunky to use...

7. And for those that want to use lirc:  See the comms/lirc port's
   pkg-message for its setup notes, they can be shown like this:

	pkg_info -D lirc\* |less

   Once you have verified that irw correctly reports buttons pressed
   on the remote you can start vdr with --lirc, if the osd then
   doesn't prompt you to assign buttons on the remote stop vdr and do:

	touch /usr/local/etc/vdr/channels.conf

   and/or remove previous lirc-related entries out of

	/usr/local/etc/vdr/remote.conf .

   I think the minimal buttons you need to assign for vdr are menu,
   back, ok, the cursor buttons (up, down, left, right), the digits
   (0-9), and the colours (red, green, yellow, blue) - and you
   probably also want at least volume up/down/mute and buttons to
   invoke the audio channel and subtitle submenus.  (and next on
   the list are record, play, pause, stop, fast forward, rewind.)
   See

	/usr/local/share/doc/vdr/MANUAL

   for more info.

   Once the remote.conf is setup for lirc you can also start vdr-sxfe
   with --lirc instead of passing --lirc to vdr itself so you can
   use the remote to control other apps when vdr-sxfe isn't running
   (like xbmc), otherwise vdr would be interpreting the buttons all
   the time.  Or you can disable lirc control temporarily in vdr
   by invoking:

	svdrpsend.pl remo off

   and enable it again by:

	svdrpsend.pl remo on

   - see here for some other things you can control that way:

	http://www.linuxtv.org/vdrwiki/index.php/SVDRP

8. The example /usr/local/etc/vdr/channels.conf is the one that
   comes with the vdr sources, its for Astra 19.2E and a little
   outdated (also doesn't have hd channels yet), if you receive
   something else and don't want to go hunting for a suitable
   channels.conf on the web you can use the multimedia/w_scan port.
   Remember to use -o7 for vdr 1.7.x, see the w_scan(1) manpage and
   its homepage for options and examples:

	http://wirbel.htpc-forum.de/w_scan/index_en.html

   (the w_scan start script hasn't been ported to FreeBSD yet.)

   Also note you probably will only need to use w_scan once initially,
   this vdr version by default should look for new transponders
   itself when it does its epg scan during idle times unles you
   disable that feature.

   And if you install the iptv plugin and want to test it with some
   internet streams if your isp dosn't provide `real' iptv (or you
   just want to be able to press `r'ecord while watching web streams
   like nasatv), you can merge example /usr/local/etc/vdr/channels.conf
   entries from here:

	/usr/local/share/examples/vdr-plugin-iptv/channels.conf.iptv

   (I don't have `real' iptv here so that's all I can test.  Also
   don't expect 100% performance with these examples, live transcoding
   streams to mpeg-ts that vdr expects still is kinda fragile and
   sometimes needs to be manually restarted by e.g. hitting OK
   (return) in the channel list (c) before it works, and startup is
   usually slow too...  Transcoding uses vlc with those examples,
   you can see vlc's messages if you start vdr in the foreground
   instead of via the rc.d script as explained above.  Also see

	/usr/local/etc/vdr/plugins/iptv

   and

	/usr/local/etc/vdr/plugins/iptv/vlcinput

   and the plugin homepage:

	http://www.saunalahti.fi/~rahrenbe/vdr/iptv/

   for configurations.  And there seems to be a `feature' that
   sometimes causes vdr to start receiving streams without anyone
   watching/recording just because the iptv plugin is enabled,
   the `fix' for that is the IPTVPATCH option in the vdr port.)

9. I ported two webinterfaces because I only learned about vdr-live
   later which seems to be faster and uses fewer resources meaning
   you could probably turn a pretty wimpy box into a vdr server as
   long as you keep the actual watching (especially of h264 hd) to
   a faster box connected over the network. (or use something like
   vdpau.)  The vdr-plugin-live webinterface by default listens on
   port 8008:

	http://127.1:8008/

   Default login/pw is admin/live as also mentioned in:

	/usr/local/share/doc/vdr-plugin-live/README

   vdradmin_am listens on 8001:

	http://127.1:8001/

   Default login/pw for that is vdr/vdr.

   And the streamdev-server plugin has a (simple) webinterface too
   if you point a browser at it: (instead of a player)

	http://127.1:3000/

10.I may have forgot some other manual installation steps, if you
   notice something just post a followup...  Most of vdr's own
   configuration including plugins should be available in the
   osd under `Setup', some things like allowed hosts/subnets
   for network plugins need to be manually configured under
   /usr/local/etc/vdr/plugins tho.

 And here are some links about vdr and the plugins and webinterfaces
I made ports for:

0. vdr 1.7.17:
	http://www.tvdr.de/
	http://www.linuxtv.org/vdrwiki/index.php/Main_Page
   See also
	/usr/local/share/doc/vdr/MANUAL
   and the vdr(1) manpage.

1. xineliboutput-1.0.90s20110308.2305 cvs snapshot:
	http://sourceforge.net/projects/xineliboutput/
	http://www.linuxtv.org/vdrwiki/index.php/Xineliboutput-plugin
	/usr/local/share/doc/vdr-plugin-xineliboutput/README

2. streamdev-0.5.1:
	http://streamdev.vdr-developer.org/
	http://www.linuxtv.org/vdrwiki/index.php/Streamdev-plugin
	/usr/local/share/doc/vdr-plugin-streamdev/README

3. live-0.2.0s20110303 git snapshot:
	http://live.vdr-developer.org/
	/usr/local/share/doc/vdr-plugin-live/README

4. live also depends on cxxtools and tntnet which I also had to port:
	http://www.tntnet.org/cxxtools.html
	http://www.tntnet.org/index.html

5. epgsearch-0.9.25b20s20110221 git snapshot:
	http://winni.vdr-developer.org/epgsearch/index_eng.html
	http://www.linuxtv.org/vdrwiki/index.php/Epgsearch-plugin

6. femon-1.7.7:
	http://www.saunalahti.fi/~rahrenbe/vdr/femon/
	http://www.linuxtv.org/vdrwiki/index.php/Femon-plugin
	/usr/local/share/doc/vdr-plugin-femon/README

7. osdpip-0.1.0:
	http://projects.vdr-developer.org/projects/show/plg-osdpip
	http://www.linuxtv.org/vdrwiki/index.php/Osdpip-plugin
	/usr/local/share/doc/vdr-plugin-osdpip/README

8. osdteletext-0.9.0:
	http://projects.vdr-developer.org/projects/show/plg-osdteletext
	http://www.linuxtv.org/vdrwiki/index.php/Osdteletext-plugin
	/usr/local/share/doc/vdr-plugin-osdteletext/README

9. skinenigmang-0.1.1:
	http://andreas.vdr-developer.org/enigmang/index.html
	http://www.vdr-wiki.de/wiki/index.php/Skinenigmang-plugin
	(sorry for de in the second link but at least there are pics...)
	/usr/local/share/doc/vdr-plugin-skinenigmang/README

10. softdevice 0.5.0 cvs snapshot from 20100414:
	http://softdevice.berlios.de/
	http://www.linuxtv.org/vdrwiki/index.php/Softdevice-plugin
	/usr/local/share/doc/vdr-plugin-softdevice/README

11. control-0.0.2a-45yavdr1 with ubuntu yavdr patches: (and a patch by
    me to fix a segfault on vdr exit)
	http://ricomp.de/vdr/down_en.html
	http://www.linuxtv.org/vdrwiki/index.php/Control-plugin
	/usr/local/share/doc/vdr-plugin-control/README

12. vdradmin_am-3.6.7:
	http://andreas.vdr-developer.org/vdradmin-am/
	/usr/local/share/doc/vdradmin-am/README

13. infosatepg-0.0.11:
	http://projects.vdr-developer.org/projects/show/plg-infosatepg
	http://vdr-wiki.de/wiki/index.php/Infosatepg-plugin
    My post including notes about how I got it receiving and using
    the infosat epg data quickly:
	http://lists.freebsd.org/pipermail/freebsd-multimedia/2010-July/011158.html

14. remote-0.4.0:  (with experimental FreeBSD uhid(4) support, some
    notes are in the port's pkg-descr)
	http://escape-edv.de/endriss/vdr
	http://www.linuxtv.org/vdrwiki/index.php/Remote-plugin
	/usr/local/share/doc/vdr-plugin-remote/README

15. iptv-0.4.2:
	http://www.saunalahti.fi/~rahrenbe/vdr/iptv/
	/usr/local/share/doc/vdr-plugin-iptv/README

16. vnsiserver-0.0.2s20100808.0952:
	http://www.vdr-wiki.de/wiki/index.php/Vnsi-server-plugin
	http://www.vdr-portal.de/board/thread.php?threadid=95292
    (sorry about the german but as I said this is only useful with
     the xbmc pvr-testing2 branch anyway and its untested too.)
	/usr/local/share/doc/vdr-plugin-vnsiserver/README

17. upnp-0.0.2a2 (alpha!) with a few bugfixes done by me:
	http://upnp.vdr-developer.org/
	http://lists.freebsd.org/pipermail/freebsd-multimedia/2011-January/011531.html
	/usr/local/share/doc/vdr-plugin-upnp/README


TROUBLESHOOTING:

- If vdr behaves strangely check syslog (/var/log/messages) for hints
  as to what might be the problem.

- If vdr crashes/exits at start check permissions of files/dirs it
  needs write access to (below /usr/local/etc/vdr, /var/cache/vdr, /video)

- If you want to stop vdr exiting when e.g. it can't tune a channel
  scheduled for recording change the osd setting `Setup -> Miscellaneous
  -> Emergency exit'.

- Small bug:  if playback of a recording doesn't start try pressing Green.
  (or F6 with my example remote.conf keyboard mapping.)

- More help is available e.g. at the vdr wiki:

	http://www.linuxtv.org/vdrwiki/

  the vdr mailinglist:

	http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr

  (I think you need to be subscribed to be able to post) and a
  (nicer) archive of it:

	http://dir.gmane.org/gmane.linux.vdr

  And there also is the mostly german-language vdr portal:

	http://vdr-portal.de/

  and I think I saw at least a russian-language vdr webforum too.
  (tho I don't speak russian.)


TODO:  (Help highly welcome!)

- The ports still could use quite some cleanup work, also to make
  upgrading them or adding new plugins easier.  (I just didn't want
  to delay committing them any longer...)

- Submit the rest of the non-hacky FreeBSD patches back to the
  individual upstream maintainers (that should be pretty much all
  of the patches for *.[ch] source files, only Makefile/configure
  scripts patches less so.)

- Someone(tm) may want to write a `real' step-by-step guide how to
  get a FreeBSD vdr going...  (preferably someone who has never
  used vdr before to make sure important stuff I never think about
  isn't left out.)

- Port more plugins that people might want to use...

 Enjoy, :)
	Juergen



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110326192838.GA68179>