DVB-T and Linux

I have a MediaCenter PC running Ubuntu Linux and MythTv. It works very well, and until now my TV input has been through a Hauppauge PVR 500 card.

I just added a Hauppauge Nova-T DVB-T card since it is now possible to receive DVB-T signals in Denmark.

It was fairly easy to get working once I had a good enought antenna.

The driver, cx8800, is included in the Linux kernel. I’m currently using 2.6.17.3 which gives me working DVB-T, but broke ivtv and my PVR500 card….

When the driver was loaded i tested the signal with the scan and tzap applications from the dvb-utils package. On www.digi-tv.dk i found that there is one transponder near Copenhagen and that the frequency is 714000000 hz.

The dvb-utils package comes with definition files for a lot of countries, but not for Denmark. I created one myself containing:
# Denmark - Copenhagen
# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
T 714000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE

I saved the file as dk-Copenhagen and used the scan tool to look for channels:
$scan dk-Copenhagen
scanning dk-Copenhagen
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
initial transponder 714000000 0 2 9 3 1 3 0
>>> tune to:
714000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE
0x0000 0x0065: pmt_pid 0x0000 DigiTV -- DR1 (running)
0x0000 0x0066: pmt_pid 0x0000 DigiTV -- DR2 (running)
0x0000 0x0067: pmt_pid 0x0000 DigiTV -- Tegnsprogstolkning (running)
0x0000 0x00d9: pmt_pid 0x0000 DigiTV -- TV 2 (Lorry) (running)
Network Name 'Kbh. Vest'
dumping lists (4 services)
DR1:714000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:111:121:101
DR2:714000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:211:221:102
Tegnsprogstolkning:714000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:311:0:103
TV 2
(Lorry):714000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:2111:2121:217
Done.

Which tells me it’s working! The output (not the first line) must be saved in a file called $HOME/.tzap/channels.conf and then the signal quality can be checked using the tzap command. E.g.
$ tzap DR1
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
tuning to 714000000 Hz
video pid 0x006f, audio pid 0x0079
status 01 | signal 0030 | snr 8000 | ber 00003fff | unc 00000000 |
status 1f | signal 0031 | snr ffff | ber 00000000 | unc 00000000 | FE_HAS_LOCK
status 1f | signal 0031 | snr ffff | ber 00000000 | unc 00000000 | FE_HAS_LOCK

If you don’t get FE_HAS_LOCK you need to adjust the antenna. If you do get locked on to a signal however, you should be able to play an mpeg stream with
dvbstream -o -ps -qam 64 -cr 3_4 111 121 | mplayer -
where 111 and 121 are the video and audio pid found as third and second last values on the channels line in channels.conf

Leave a Reply

You must be logged in to post a comment.