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.