Welcome to my VDR page

During the summer 2006 I installed VDR on an old box in order to receive the new DVB-T channels here in Denmark. Previously we had free access to the danish channels through our digital satellite receiver, but that access was revoked with the introduction of DVB-T.

We could of course have bought a commercial DVB-T decoder box, but since we had to spend money in any case I opted for the far more flexible VDR solution.

Building my first Personal Video Recorder

I dug up my old spare Athlon 1400MHz box and incidentally it already had a Creative MPEG-2 decoder card installed - the dxr3 which can be used as output device for VDR with a "budget" receiver card.
So I decided to go for the dxr3+budget card setup. This was more or less meant as a testbed system to get an impression of the possibilities and feasibility of building a PVR without spending too much money in the process: I bought a budget Hauppauge Nova-T PCI receiver card and fitted it in the box. The Nova-T came with a medium sized remote control and a matching sensor to plug into the an outlet on the PCI card. The motherboard was a Via based Tyan S2390B Trinity KT-A with 512MB of SDRAM and graphics was handled by a Geforce 2 AGP card. A small but relatively silent Seagate hard disk provided 30GB of storage, which translates to less than 15 hours of MPEG-2 encoded movies and programs.
I'd replaced the original PSU and CPU cooler with low-noise versions long ago in order to avoid the original "helicopter" noise level. This was even more important when I moved the box into the living room as a PVR.

Installing the software

I use Debian on most of my systems, so with the great support for VDR in base Debian and in various spin offs (linVDR, ctvdr, etc.) it was the obvious solution here: I simply used the existing Sarge installation (from a time when I used the box as an internet gateway/router) and added additional repositories to my /etc/apt/sources.list:
Debian Sarge
base system and security updates
Debian Backports (backports.org)
Latest kernel source (2.6.16)
Marillats multimedia repository
Mplayer, FFMPEG, etc
Tobias Grimm's VDR repository
Latest VDR, addons and plugins including: cdda, clock, dvd, dxr3, epgsearch, extrecmenu, femon, games, image, lcdproc, mp3, mplayer, osdpip, osdteletext, podcatcher, remote, skinsoppalusikka, softdevice, subtitles, sudoku, surfer, sysinfo, timeline, ttxtsubs, tvonscreen, acpiwakeup and vdrconvert
I use "pinning" in order to get only the package versions that I want. This is achieved by creating a /etc/apt/preferences file.

Debian does provide driver source packages for the dxr3 card (em8300 driver), but I ended up downloading the latest source directly from theDXR3 page at Sourceforge. I needed to modify a few paths in the driver source to get it compiled during the traditional Debian make-dpkg kernel build process. The resulting kernel-2.6.16 and em8300-modules packages worked quite well here apart from the small problems with DVB subtitles mentioned below.

The remote works out of the box with the VDR remote plugin.
... more details to follow ...

The end of my first PVR

After my success with building a cheap but powerful VDR based PVR mostly reusing old parts, I wanted to take a step further. An Athlon based solution is a bit noisy and draws a lot of power, the old Tyan motherboard refused to enter CMOS/BIOS setup, disk space was very limited, I had some problems with subtitles as well as automatic wakeup for recording timers and the old ATX case was quite ugly. To address those issues I built a Celeron-M based system with a more HIFI-looking case, but still using the Nova-T tuner card, the dxr3. By the way, I still use the 300W Silent Systems PSU in my new system and I've taken apart the old Silent Twin CPU cooler and mounted one of the cooler fans on the CPU heatsink in my new system. I simply transferred the disk contents to my new 250GB SATA II disk, booted it up on the old K7 optimized kernel and recompiled the kernel with Pentium-M optimizations instead - a very fast migration indeed! Unfortunately the new system did not solve all problems. As described below the dxr3 problem with subtitles and channel logos is still unsolved, but I did get a nicer box which is better prepared for the future and finally I got automatic acpi wake up to work. The latter is quite useful since I can now simply turn off the box when I want to without caring about missing recordings.

Remaining problems

Output device: dxr3 vs. softdevice

With the dxr3 setup DVB subtitles are very hard to read. In Denmark most foreign movies and programs use subtitles rather than voice translation. Thus subtitles probably more important than in other countries. Another possibly related problem is visible when channel logos are enabled. The logos are only partially visible because of white stripes similar to those on the subtitles.
Using softdevice instead of dxr3 removes the subtitles and logo problems but introduces OSD problems instead.
I've taken some photos of the subtitles, channel logos and osd with both setups.
With the dxr3 the OSD generally works, but since it uses the subpicture unit for OSD, etc. the number of simultaneous OSD colors is quite limited. As a result some of the extra OSD skins won't work. With softdevice OSD isn't limited in the same ways, but at least with my VESA FB the OSD tends to often not be rendered correctly. As the photos show, both the menu and program info bar sometimes shows up as a freeze of the background image and with only partial OSD contents. In the menu the contents are shown when navigating or after about 5 seconds of waiting. The CPU is not maxed out, so it looks more like a problem with refresh/redraw rather than a lack of resources.

Latest news

During my search for a solution to the OSD update problems i noticed that the automatic mtrr settings didn't include anything for the display controller.
An e-mail to the xorg mailing list gives the exact details that I needed to setup my MTRR. Output from lspci -v includes the lines:
0000:00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller (rev 03) (prog-if 00 [VGA])
Subsystem: Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller
Flags: bus master, fast devsel, latency 0, IRQ 11
Memory at fde80000 (32-bit, non-prefetchable) [size=512K]
I/O ports at ff00 [size=8]
Memory at d0000000 (32-bit, prefetchable) [size=256M]
Memory at fdf80000 (32-bit, non-prefetchable) [size=256K]
Capabilities: [90] Message Signalled Interrupts: 64bit- Queue=0/0 Enable-
Capabilities: [d0] Power Management version 2
The 6th line contains the hardware MTRR address of the 256MB of frame buffer memory. This should be reflected in the ooutput of cat /proc/mtrr in order to achieve a speedup, but it wasn't automatically configured. Since my hardware address and memory size are identical to those in the post, I could simply copy the solution of running the command:
echo "base=0xd0000000 size=0x10000000 type=write-combining" >| /proc/mtrr
The result was great: I immediately saw a drop in CPU load. Before the load was at least 50% and sometimes wen't as high as 70%, but afterwards it has settled at about 40% with only small fluctuations. So now I've added the command to the boot sequence along with another useful command:
setterm -blank -powerdown -cursor off -store > /dev/tty1
which i also came across. The latter command removes the small blinking cursor from the VDR softdevice output and disables automatic screen blanking.