February 27, 2008

Use Kaffeine to receive free-to-air TV on your Linux box

Author: Colin Beckingham

Free-to-air (FTA) ethnic television in a variety of languages beamed from satellite straight to your Linux PC? No problem -- here's how.

FTA provides programming that is quite different from the channels beamed by the regular commercial providers. Looking for the latest news from Germany or Spain or Greece? How about a program describing the Canary Islands, the news from Radio France International in Portuguese, or a channel from Argentina dedicated to the tango? Students of languages or Latin American studies, expatriates seeking the flavor of their homeland, people interested in a world news perspective -- all can find interesting programs on FTA at no subscription cost.

Satellite viewing on a PC offers some interesting advantages. Favorite channels are a mouse click away, and a powerful PC makes a fast TV recorder, can decode Dolby AC-3 audio signals on the fly, or play DVD and CD disks. PCs can also receive standard or high-definition terrestrial broadcasting with the right adapter card. When a better technology comes along, you just upgrade your card, not the whole TV.

So how can your little desktop PC tap into programming from orbiting satellites? GNOME enthusiasts may use MythTV for much of the heavy lifting; KDE users can use Kaffeine, as we'll see.

Do you have a signal?

Geostationary satellites hovering high above the equator receive and retransmit television and radio signals from uplinks across the world. Some of them have a footprint that drops a signal into your backyard. The closer you are to the hot zone in the footprint, the more easily you can get the signal. For information on satellites and footprints, see the LyngSat Web site.

In this article, I'm focusing on the Hispasat 1C/1D satellite, which lives at 30° west. This puts it over the Atlantic Ocean, a bit closer to Brazil than Africa. Since this satellite transmits in the Ku band, with a reasonably small elliptical dish (but somewhat larger than regular pizza dishes), you can pick up a number of channels via this bird from Spain, the Canary Islands, the Basque Country, the Principality of Asturias, Galicia, Catalonia, Cuba, Colombia, Argentina, and a number of Arab countries. A recent scan of a few transponders netted about 40 TV and 60 radio channels, most of which are free.

The signal is just waiting to be picked up, but you need some equipment to capture and decode it. You must collect the signal in a parabolic dish and focus it on a low-noise block downconverter (LNB), which translates very high frequencies to lower frequencies. These longer wavelength signals travel along the conductor in a coaxial cable and enter the receiver, which can be a Linux box equipped with a Digital Video Broadcasting - Satellite (DVB-S) PCI card. Many such PCI cards and USB units are available; make sure the Linux kernel supports your card.

A number of Linux applications decode DVB-S signals, including DVB Dream, MythTV, and the xine multimedia engine used in the KDE environment. I'm using Kaffeine, which is a front end to xine, to perform the tuning and display, simply because it worked for me the first time.

It pays to have the most recent version of all your software to minimize problems with installation and tuning. You can update the kernel by following the advice from the Linux Kernel Archives. The guys at LinuxTV.org work to keep the kernel updated as new cards appear on the market, and tuning and display bugs are constantly being squeezed out of Kaffeine and xine.

First, the hardware

With a recent kernel, a compatible card will likely be recognized automatically. Since I am looking for much more than the one satellite, I am using two cards: Skystar 2 and Geniatech 103G, both of which are supported in the most recent kernel. Only one card is necessary for one satellite. When both cards are successfully installed I see this when I run dmesg:

# dmesg | grep DVB
DVB: registering new adapter (FlexCop Digital TV device)
DVB: registering frontend 0 (ST STV0299 DVB-S)...
b2c2-flexcop: initialization of 'Sky2PC/SkyStar 2 DVB-S' at the 'PCI' bus controlled by a 'FlexCopIIb' complete
cx88[0]: subsystem: 14f1:0084, board: Geniatech DVB-S [card=52,autodetected]
cx88[0]/2: subsystem: 14f1:0084, board: Geniatech DVB-S [card=52]
cx88[0]/2: cx2388x based DVB/ATSC card
DVB: registering new adapter (cx88[0])
DVB: registering frontend 1 (Conexant CX24123/CX24109)...

In addition, some devices will have been created, which looks something like this:


Here, N is an integer starting from 0.

Next, the software

You can install Kaffeine from source with the usual ./configure && make && make install commands. After install, you may find that KDE has put the launch button from the control panel under the Multimedia Players group.

When Kaffeine opens, you can check that your card is visible from Main -> DVB -> Configure DVB. On the left side, you should see DVB Device 0:0 and/or DVB Device 1:0 (if you have two DVB devices). Kaffeine indicates which adapter belongs to which card.

Now for the nitty-gritty. You need a dish is pointed correctly at the satellite and receiving a strong signal. You can get some assistance in achieving this from Satellite Finder, which shows how a dish should be set up and pointed at a satellite, and further assistance from enthusiastic Web forums such as the free-to-air discussion at SatelliteGuys. Locating the satellite and maximizing (peaking) the signal is an art; you can accomplish it with a few technical aids.

Unlike some standalone receivers, Kaffeine and xine cannot simply take an incoming signal and decode the raw information. It needs some hints regarding the frequency, polarization, and symbol rate of each transponder you're hoping to tune. These hints come from a collection of text files stored in your .kde/share/apps/kaffeine/dvb-s/ directory. You can obtain a reasonably up-to-date set of files from JoshyFun's Transponders Lists in Kaffeine Format. Because in this case we're attempting to tune in on only one satellite, we need only one file in the dvb-s directory: the one that relates to Hispasat.

You're now ready to scan for channels. From DVB -> Configure DVB, select your Hispasat entry from the drop-down list. Click Start Scan to start Kaffeine working through the list of transponders, examining channels from each one. As it tunes each transponder, the lock indicator changes color from dark green to light green when the signal and signal-to-noise ratio (SNR) are sufficient (SNR > ~55). It finds all the channels it can -- including TV, radio, encrypted (which is indicated with a lock icon), and non-encrypted channels -- and puts them in the right-hand pane.

When it finishes, you can go through the list of found channels and select those you wish to move to the playlist. You can select them individually or as a group (using the Ctrl key) or by using the filter options (Free to air, TV, and Radio).

If you have trouble with Kaffeine along the way, check out the forums at Nabble and Kaffeine Forum.


FTA is an inexpensive hobby that provides fun and unusual rewards, including information from a homeland far away or descriptions of remote and tantalizing countries. Putting FTA on your Linux box puts the enjoyment into a highly configurable and adaptable package.


  • Desktop Software