This section describes the different technologies used to build your own Linux VCR.
<sect1>Tuner or Capture Card
<p>
You will need to install a supported video4linux capture card in your computer. I currently use the Hauppauge
WinTV tuner card which I purchased from Best Buy, but many other cards should work just as well. I don't have
a suggestion for which is best, I can only comment that the one I own works for me.
<sect1>Kernel video4linux driver
<p>
Many GNU/Linux distributions already provide a Linux kernel that is configured to support video4linux devices.
The Hauppauge WinTV card is supported by the 'bttv' driver. I have to load two modules into the linux kernel
to support my card, namely the 'tuner' and 'bttv' modules. Check out the <url url="http://roadrunner.swansea.linux.org.uk/v4l.shtml" name="V4L homepage"> for details on
supported tuner cards. Also check out <url url="http://lhd.zdnet.com/db/searchproduct.cgi?_catid=17" name="ZDnet Linux Hardware"> for
information about Linux tuner cards.
<p>
<sect1>Frame Capture Software
<p>
Recording with your digital VCR of course requires frame capture software. As I become aware of available software
for capturing audio/video to mpeg/avi formats, I will place it in this list. If you have any suggestions for good
software please let me know and I'll add it here.
<p>
<sect>Implementation
<p>
<nidx>VCRHOWTO!implementation</nidx>
Now lets go through the steps of actually configuring your computer as a VCR.
<sect1>Install and Configure Tuner Card
<p>
My particular tuner card required special parameters to the 'tuner' and
'bttv' modules because it was an older model and wasn't properly auto-detected.
If you can watch TV through your card via xawtv, then you have correctly
configured your card. Here are the configuration lines from my /etc/modules.conf
(or /etc/conf.modules for older distributions).
<verb>
options -k bttv radio=1 card=2
options -k tuner debug=0 type=6
</verb>
These parameters will vary depending on the model of your card, see the documentation
found in the linux source (linux/Documentation/video4linux) to figure out exactly
how to configure your card. I added these modules to /etc/modules so they would
automatically load on bootup. You can also manually load them with 'modprobe modulename'
as root. I'm currently using the 2.4.2 kernel, but I have had success with this
card with all of the 2.2.x kernels as well. Hint: the user may need to have
ownership of the /dev/video /dev/video0 files (and maybe other devices as well)
before the tuner card will function. As always, I suggest not running any apps
as root.
<sect1>Configure xawtv to function properly.
<p>
You can either use xawtv from a reasonably current distribution, or download
the source code from the <url url="http://www.strusel007.de/linux/xawtv/" name="xawtv Homepage">
Make sure xawtv functions for your tuner card before proceeding.
<sect2>Sample .xawtv configuration file.
<p>
Here is a sample ".xawtv" configureation file. This should be placed within the
home directory for the user who will be doing the VCR recording. I suggest adding
presets to your .xawtv file for all channels(0-NNN) (even non-existing ones) because you
will use the "v4lctl" command to switch channels later. This command makes use
of 'preset number' rather than 'channel number', so it's conveniant to have preset
numbers be the same as actual channel numbers. The following configuration file
was designed for US-cable, your mileage may vary.
<verb>
[global]
freqtab = us-cable
pixsize = 128 x 96
pixcols = 1
jpeg-quality = 75
mjpeg-quality = 75
toggle-mouse = 0
keypad-ntsc = no
osd = yes
# [Station name]
# capture = overlay | grabdisplay | on | off
# input = Television | Composite1 | S-Video | ...
# norm = PAL | NTSC | SECAM | ...
# channel = #
# fine = # (-128..+127)
# key = keysym | modifier+keysym
# color = #
# bright = #
# hue = #
# contrast = #
[defaults]
norm = NTSC
capture = over
input = Television
[CH0 0]
channel = 0
fine = 0
[CH1 1]
channel = 1
fine = 0
[CH2 2]
channel = 2
fine = 0
[CH3 3]
channel = 3
fine = 0
[CH4 4]
channel = 4
fine = 0
[CH5 5]
channel = 5
fine = 0
[CH6 6]
channel = 6
fine = 0
[CH7 7]
channel = 7
fine = 0
[CH8 8]
channel = 8
fine = 0
[CH9 9]
channel = 9
fine = 0
[CH10 10]
channel = 10
fine = 0
[CH11 11]
channel = 11
fine = 0
[CH12 12]
channel = 12
fine = 0
[CH13 13]
channel = 13
fine = 0
[CH14 14]
channel = 14
fine = 0
[CH15 15]
channel = 15
fine = 0
[CH16 16]
channel = 16
fine = 0
[CH17 17]
channel = 17
fine = 0
[CH18 18]
channel = 18
fine = 0
[CH19 19]
channel = 19
fine = 0
[CH20 20]
channel = 20
fine = 0
[CH21 21]
channel = 21
fine = 0
[CH22 22]
channel = 22
fine = 0
[CH23 23]
channel = 23
fine = 0
[CH24 24]
channel = 24
fine = 0
[CH25 25]
channel = 25
fine = 0
[CH26 26]
channel = 26
fine = 0
[CH27 27]
channel = 27
fine = 0
[CH28 28]
channel = 28
fine = 0
[CH29 29]
channel = 29
fine = 0
[CH30 30]
channel = 30
fine = 0
[CH31 31]
channel = 31
fine = 0
[CH32 32]
channel = 32
fine = 0
[CH33 33]
channel = 33
fine = 0
[CH34 34]
channel = 34
fine = 0
[CH35 35]
channel = 35
fine = 0
[CH36 36]
channel = 36
fine = 0
[CH37 37]
channel = 37
fine = 0
[CH38 38]
channel = 38
fine = 0
[CH39 39]
channel = 39
fine = 0
[CH40 40]
channel = 40
fine = 0
[CH41 41]
channel = 41
fine = 0
[CH42 42]
channel = 42
fine = 0
[CH43 43]
channel = 43
fine = 0
[CH44 44]
channel = 44
fine = 0
[CH45 45]
channel = 45
fine = 0
[CH46 46]
channel = 46
fine = 0
[CH47 47]
channel = 47
fine = 0
[CH48 48]
channel = 48
fine = 0
[CH49 49]
channel = 49
fine = 0
[CH50 50]
channel = 50
fine = 0
[CH51 51]
channel = 51
fine = 0
[CH52 52]
channel = 52
fine = 0
[CH53 53]
channel = 53
fine = 0
[CH54 54]
channel = 54
fine = 0
[CH55 55]
channel = 55
fine = 0
[CH56 56]
channel = 56
fine = 0
[CH57 57]
channel = 57
fine = 0
[CH58 58]
channel = 58
fine = 0
[CH59 59]
channel = 59
fine = 0
</verb>
<p>
<sect1>Install the avifile library
<p>
Download the latest avifile package from <url url="http://divx.euro.ru" name="DiVX :-) Homepage">.
You will need avifile-0.5x and binaries-xxxxxx.zip. You should extract the binaries to
/usr/lib/win32. The next section describes compiling and installing avifile-0.53-5.
<p>
<sect2>Compiling and installing avifile-0.53-5
<p>
<verb>
# tar xvfz avifile-0.53-5.tar.gz
# cd avifile-0.53-5
# ./configure
# make
# make install
# mkdir /usr/lib/win32
# cd /usr/lib/win32
# unzip /path/to/binaries-010122.zip
</verb>
You will need to be root for the make install step to work.
If you receive any errors, they were probably due to a missing dependancy during
the configure step. Resolve any dependancies and try again. This should work
smoothly on any recent distribution that was installed with 'development' tools.
<p>
<sect1>Installing the VCR frame-grabber program
<p>
You can get the latest vcr program (vcr-1.05 at the time I wrote this) from