Testing your DVB device

From LinuxTVWiki
Revision as of 01:13, 2 May 2007 by CityK (Talk | contribs)

Jump to: navigation, search

This page provides a few suggestions on how to test that a DVB card installed on your system is functioning properly. It won't tell you how to install the specific hardware that you have (see How to install DVB device drivers for some generic instructions). Nor does this page describe the use of feature rich viewing software. But it will describe to you some steps on the command line that are indispensable for quick setup and viewing with DVB hardware.

Again, this article assumes that you have already physically installed the device into your system, and have also installed the driver for your hardware and have the proper modules loaded i.e. you should at least have a /dev/dvb/adapter0/ directory. Additional DVB devices installed on your system will be assigned an increased adapter number accordingly.

Using dvb-apps

1. Obtain the dvb-apps package
See the LinuxTV dvb-apps article for details on how to obtain the package. The dvb-apps package contains several useful tools.

2. Scan for the channels you can receive
Refer to the scan article for details of how to perform this step. Once familiar with that content, you will recognize that a general form summary of this step is given by:

mkdir ~/.{a,c,s,t}zap
dvbscan /path_to_the_initial_channel_file > ./{a,c,s,t}zap/channels.conf

3. Tune a frequncy and program
Use the command tzap for DVB-T, czap for DVB-C, szap for DVB-S and azap with ATSC.

As an example, to automatically tune both channel and PIDs for video and audio to the channel called "KPAX-DT" produced in the ATSC scan output above, run:

 $ /usr/bin/azap  -r -c ~/.azap/channels.conf "KPAX-DT"

The output of that azap command would be something like:

 using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
 tuning to 177028615 Hz
 video pid 0x0031, audio pid 0x0034
 status 00 | signal edc0 | snr a122 | ber 00000000 | unc 000000ff |
 status 1f | signal 0000 | snr ff28 | ber 00000000 | unc 00000000 | FE_HAS_LOCK
   ...(repeated updated output) ...

Note: The output will continue to update endlessly, but you can terminate it with Ctrl C

Not all the numbers are implemented in some drivers, but good is signal > 8000, status 1f (all bits set), snr (Signal to Noise Ratio) should be > 8000, ber (bit error rate) - low is good, unc (Uncorrectable blocks) - low is good.

Then you can try to tune in one of the channels:

 $ /usr/bin/czap  -r -c ~/.czap/channels.conf "ZTV Norway"

which in turn displays lines similar to (terminate with Ctrl-C)

 using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
 tuning to 177028615 Hz
 status 1f | signal 0000 | snr ff28 | ber 00000000 | unc 00000000 | FE_HAS_LOCK
 ... (repeated output) ...

4. After you've tuned a frequency and program

You could now start up your TV watching application or datastreamer.

Or, alternatively, you may want to see some statistics of what's coming in for each channel and PID. Example:


And finally


Then for some statistics, try

 $ /usr/bin/dvbtraffic

First steps using dvbsnoop

As an alternative, dvbsnoop is a small, down-to-earth util. As it's very hardware-near, it's very handy for debugging and seeing what's going on with the card (tuning works? data coming in? signal strong enough?). (On the other side, if all in the section above works fine, you can jump over this section here.) Install it, e.g. with debian:

 # apt-get install dvbsnoop

Apparently, dvbsnoop isn't in any of the usual Fedora repositories at this time (Feb 2007). Instead, download a copy directly from the source forge site using steps similar to the following. Note this is for version 1.40. Your download URL (and the extracted directory dvbsnoop-bin-i386-1.4.00-api3) will change as succeeding versions of dvbsnoop are published on Source Forge. Also you may wish to copy the binary dvbsnoop out to a more convenient directory in your path, rather than the deeply buried directory ~/dvbsnoop/dvbsnoop-bin-i386-1.4.00-api3/bin-i386-api3 which, in this example, contains the binary. Then ./dvbsnoop will not be required, just dvbsnoop as shown in the debian example below.

 $ mkdir ~/dvbsnoop
 $ cd dvbsnoop
 $ wget  http://downloads.sourceforge.net/dvbsnoop/dvbsnoop-bin-i386-1.4.00-api3.tar.gz?modtime=1124046233&big_mirror=0
 $ tar xvzf *.tar.gz
 $ ls
 $ cd dvbsnoop-bin-i386-1.4.00-api3
 $ ls 
 $ cd bin-i386-api3
 $ ls
 $ ./dvbsnoop -help
 $ ./dvbsnoop -s pidscan

Then try things like

 dvbsnoop -help
 dvbsnoop -s pidscan

This will give out a lot of numbers, but if you understand the system of DVB you should see if they make sense. Go for one of the PIDs (choose a right one which is a bit difficult as you don't know what they stand for unless you used the scan line above) and try:

 dvbsnoop -s bandwidth <PID>
 dvbsnoop <PID>

The latter will spit out a lot of hexdumps - at least you receive something ;-)

Save a TV program to harddisk with dvbstream

The handy thing about digital TV is, it comes in as a digital stream that you can save right away to your harddisk without any changes necessary to it. Therefore, hardly any CPU resources are needed -- just a lot of HD space (few GB per hour as the stream is MPEG-2 which is not as compressed as for example DivX/MPEG-4). A good program that can do that (and more) is dvbstream.

Install it, e.g. with debian:

 # apt-get install dvbstream

Let's tune into a channel with tzap as described above, and then you can just save the stream into a file like this:

 tzap BBC ONE
 dvbstream 600 601 -o >BBC1.mpeg

So this is why it's important that you have your personal channels.conf file with all the PIDs so you can look them up. Instead of using tzap you can do it all in one - tune the frequency and select the right PIDs:

 dvbstream -f 578000 600 601 -o >bbc1.mpeg

Wait a few seconds and then press Ctrl+C to stop. You can open the MPEG file with players that play movie files (decode MPEG2), like Mplayer, (g)xine or noatune.

If the file is rather small, e.g. smaller than 1 MB after a minute of recording, then you can't receive this TV channel - maybe the reception is bad (too weak antenna signal) - or maybe your card's frequency is not tuned for the right sender? Watch out, some PIDs come up a few times (but for different frequencies).

This might not be what you wanna do every day (unless you only watch BBC1 or you can easily memorise all your channels with their two PIDs) - but it's very fast and easy to do these steps, e.g. for a test.

More Software - next steps

You have a lot of choice. MPlayer, Xine, Kaffeine , Klear are probably the first choices selected for light TV watching with a DVB card.

Alternatively, you could use dvbstream and then watch the MPEG-2 stream (even possible on a different computer) with programs like Xine, MPlayer etc.

For "Media Center" type applications, the usual first suspects are Freevo, MythTV, and VDR (note: you'll need to install the VDR Software Decoder Plugin if you want to use VDR for watching with a software decoding card).

Also See