Watch TV on Your Computer

Choose from a variety of Linux programs to watch TV from your desktop.

Your TV tuner is installed, all the cables are connected, and the card is recognized by Linux, but how do you actually watch TV with it? This hack covers some of the Linux tools you can use to configure your TV tuner and watch TV with it from your Linux desktop.

The most basic program you can use to watch TV under Linux is xawtv, which started as an application specifically for the bttv driver, but since then has been expanded to work with video4linux, so you can use it with a number of tuners. xawtv is a good place to start when you want to test your tuner because it has been around for quite a while, so it is not only well tested, it also is likely to be packaged by your distribution. To install it, find the xawtv package in your distribution’s package manager. If for some reason your distribution doesn’t package it, download the latest version of xawtv from the official download page at and follow the installation documentation to compile and install it.

With xawtv installed, you could just immediately launch it; however, no channel frequencies for your particular tuner have been configured yet, so you won’t be able to tune into a channel. It’s possible to configure everything by hand, but xawtv includes a utility called scantv that scans the tuner for available channels (much like the scan function on many car stereos) and generates a configuration file for xawtv. Open up a terminal and type:

	$ scantv -o ~/.xawtv

	please select your TV norm
	0: PAL
		1: NTSC
		2: SECAM
		3: PAL-Nc
		4: PAL-M
		5: PAL-N
		6: NTSC-JP
		7: PAL-60
	nr ? 1

	please select a frequency table
		0: us-bcast
		1: us-cable
		2: us-cable-hrc
		3: japan-bcast
		4: japan-cable
		5: europe-west
		6: europe-east
		7: italy
		8: newzealand
	9: australia
		10: ireland
		11: france				
		12: china-bcast
	13: southafrica
		14: argentina
		15: australia-optus
		16: russia
	nr ? 1

	scanning channel list us-cable…
	1 ( 73.25 MHz): no station

Since I’m in the United States, I selected NTSC for the TV norm and us-cable as the frequency table. scantv then scans through every channel at that frequency table for valid channels and makes a note of any it detects. It then outputs everything into ~/.xawtv. Now start xawtv:

	$ xawtv

There isn’t much to the interface by default—just a basic window with no extra buttons. Table 4-1 lists keyboard shortcuts you can use to navigate through xawtv. Use the up and down arrows to move through the channels, and left and right keys to fine-tune the frequency of a channel if it’s a bit off.

Table 4-1. xawtv key bindings




Tune up/down one channel.



pgup, spacebar / pgdown, backspace

Change the stations in the config file up/down.


Scan for the next station.


Adjust bright/hue/contrast/color.

Esc, q



Volume up/down.

Enter (keypad)



Toggle full screen.


Grab screenshot (full-size ppm).


Grab screenshot (full-size jpg).


Options window.


Channels window.


AVI recording window.

To configure xawtv, right-click on the window and choose from the number of configuration options in the menu that appears. If you didn’t run scantv, you can change the frequency table and TV norm from this menu instead. Remember to save your changes before you close xawtv so they will be there the next time you start.


xawtv works fine, but it doesn’t have much of a GUI. Zapping is a TV viewing program designed for the GNOME environment, but it will work on either GNOME or KDE. Zapping is already packaged for a number of distributions, so check with your package installation tool first, and if it isn’t there, download and compile Zapping from the source package at

To start Zapping, launch it from your desktop menu or type zapping in a terminal window. Zapping will automatically scan for valid video4linux devices and connect to the first one found. You must initially configure which video standard to use, so click Channels → Video standards and choose your standard from the list (I’m in the United States, so I would choose NTSC). If you have more than one video4linux device in your computer, click Edit → Preferences to open the preferences window, and then click Devices → Video. You can change the video device to use from this window, and click Devices → Audio to change your audio device. One nice feature of Zapping is that it supports OSS as well as ESD and aRts audio output. The preferences window also lets you configure a lot of other general options such as keyboard shortcuts and on-screen display settings.

Next you need to configure the channels for your tuner device. Click Edit → Channels to bring up the channel configuration window. Choose your region from the region drop-down menu, and then click “Automatic station search” to let Zapping search for channels for you. Alternatively you can have Zapping load the channel information from a xawtv configuration file. In this window, you can also assign names for each of the channels and a key binding so you can quickly switch to a certain channel.

You can change channels in the main interface either with the buttons on the toolbar, or by pressing PgUp and PgDown. The + and - keys control the volume. You can even take a quick screenshot with the s key.

Get Linux Multimedia Hacks now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.