Nowadays the main source of digital TV channels is receiving them from a satellite using DVB-S technology. This method is notable for simplicity of deploying and variety of multimedia content on satellites [1]. In this article it is discussed receiving of satellite channels using NetUP DVB to IP gateway/streamer (hereafter, streamer) on Linux OS.
To scan a range and retrieve all available channels, it can be used an utility dvbscan from a package dvb-apps [2]. The input file format:
S 12320000 V 27500000 3/4
where in the 2nd column it is specified the transponder carrier frequency. The 3rd column sets the polarization: V-vertical, H-horizontal. The 4th column is the symbol rate.
To scan the entire range, it is required to prepare a file with all frequencies listed with the step of 1 MHz. For that let's create a file gen_scan.pl (it's a perl script) with the following content:
for ($x = 12100; $x < 12490; $x++){
$freq = $x."000";
printf("S $freq V 27500000 3/4\n");
};
In the script the values 12100 and 12490 are the range borders in MHz. The script can be launched using the command:
perl gen_scan.pl > scan.in
It creates a file scan.ini with the following content:
... S 12448000 V 27500000 3/4 S 12449000 V 27500000 3/4 S 12450000 V 27500000 3/4 S 12451000 V 27500000 3/4 S 12452000 V 27500000 3/4 S 12453000 V 27500000 3/4 ...
This file is used as the input for dvbscan. This utility is started by the command:
dvbscan scan.in > scan.out
The utility creates a file scan.out with the found channels. An example of file part follows:
... MTV Russia:12240:v:0:27500:322:404:10303 Relax FM:12241:v:0:27500:0:427:10327 MTV Russia:12242:v:0:27500:322:404:10303 Relax FM:12242:v:0:27500:0:427:10327 ...
As it can be seen, channels may be repeated. To clean up the file from the superfluous records, use the script parse_scan.pl:
open(IN, "-"); @data =; close(IN); %chan = (); %freq = (); foreach (@data){ # UNOSAT:12100:v:0:27500:3200:3201:713 if($_ =~ m/(.+):(.+):(.+):(.+):(.+):(.+):(.+):(.+)/){ my $qnt = $chan{$1}; $qnt++; $chan{$1} = $qnt; my $tmp_name = $1."_".$qnt; $freq{$tmp_name} = $_; }; }; foreach (@data){ # UNOSAT:12100:v:0:27500:3200:3201:713 if($_ =~ m/(.+):(.+):(.+):(.+):(.+):(.+):(.+):(.+)/){ my $count = int($chan{$1}/2); if($count < 1){ $count = 1; }; my $tmp_name = $1."_".$count; $ffreq{$1} = $freq{$tmp_name}; }; }; foreach $k (keys (%chan)){ print("$ffreq{$k}"); };
Start it by the following command:
cat scan.out | perl parse_scan.pl
Consequently, all found channels, their frequencies and PIDs are displayed. Obtained values can be used to create the channels section in the streamer configuration file.
Configuration file /netup/streamer/etc/streamdec.conf contains the following main parameters:
# DVB-S adapter number in the system. 0 - 1st adapter adapter=0 # Transponder carrier frequency to which the tuner is tuned freq=12245 # symbol rate sr=27500 # polarization. 0 - vertical (18V), 1 - horizontal (13V) pol=1 # LNB settings lnb_low_val=9750000 lnb_high_val=10600000 lnb_switch_val=11700000 # Channel tuning. One channel per string # string format: # apid:vpid:channel:multicast_ip:multicast_port:ca_ip:ca_port:ca_login:ca_password # where: # apid - PID of the audio stream # vpid - PID of the video stream # channel - TV channel id # multicast_ip - multicast IP address the channel is broadcast to # multicast_port - UDP port the channel is streamed to channel=412:326:10307:224.200.200.215:1234:none:0:none:none channel=418:328:10308:224.200.200.216:1234:none:0:none:none
Default LNB settings are for the universal LNB type. If you have other LNB parameters, it is necessary to make appropriate changes in the configuration file. If the settings are wrong, frequencies are shifted proportionally. In this case either the correct values should be set or, as it is given above, the full range should be scanned for retrieving absolute frequency values.
Let's take a universal LNB IDLP-40TCIRCL as an example (photo 1).

Specification for this LNB is available at the URL:
http://www.doebis.de/sites/lnbs/lnbs_datenpdfs/inverto_idlp_40_tcircl.pdf [3].
In the specification the following parameters are given:
| Input Frequency (GHz) | 10.7-11.7 GHz, 11.7-12.75 GHz |
| LO Freq | 9.75 GHz/10.6 GHz |
These values should be used for changing parameters lnb_* in the streamer configuration file.
The streams can be checked by using the following command on the streamer:
trafshow -ni eth0 port 1234
The output contains the table of current multicast streams with the bitrate and number of transferred bytes specified:
From Address To Address Proto Bytes CPS ======================================================================= 10.1.11.10..32795 224.200.200.202..1234 udp 8537028 375494 10.1.11.10..32788 224.200.200.212..1234 udp 7952044 407992 10.1.11.10..32790 224.200.200.209..1234 udp 7094228 279341 10.1.11.10..32787 224.200.200.213..1234 udp 7043440 351231 10.1.11.10..32784 224.200.200.210..1234 udp 7008084 280157 10.1.11.10..32782 224.200.200.215..1234 udp 6508896 314706 10.1.11.10..32785 224.200.200.207..1234 udp 5925792 231584 10.1.11.10..32794 224.200.200.200..1234 udp 5906572 200676 10.1.11.10..32793 224.200.200.211..1234 udp 6047448 326328 10.1.11.10..32796 224.200.200.205..1234 udp 5881424 306071 10.1.11.10..32783 224.200.200.216..1234 udp 5758480 393428 10.1.11.10..32798 224.200.200.201..1234 udp 5570160 321016 10.1.11.10..32797 224.200.200.204..1234 udp 5365592 284411 10.1.11.10..32791 224.200.200.217..1234 udp 5195216 207687 10.1.11.10..32786 224.200.200.206..1234 udp 5297696 296824 10.1.11.10..32799 224.200.200.203..1234 udp 4779076 203542 10.1.11.10..32792 224.200.200.214..1234 udp 3279980 161183 10.1.11.10..32789 224.200.200.208..1234 udp 3144896 131500 10.1.11.10..32800 224.200.200.250..1234 udp 512616 22896 10.1.11.10..32801 224.200.200.251..1234 udp 364532 28590 (eth2) 100217 kb/total 4057 pkts/sec 5250733 bytes/sec Page 1/1
As it can be seen, the streamer currently multicasts 20 streams into the network (18 TV channels and 2 radio stations).