Merge branch 'nto-signal-stats'
[dvblast.git] / README
blob261d0c43de3deccb3acf0a715ffa039d5c876a3f
2 Welcome to DVBlast!
3 ===================
5 DVBlast is a simple and powerful MPEG-2/TS demux and streaming
6 application with several input methods:
7  - linux-dvb-supported cards (DVB-S, DVB-S2, DVB-C, DVB-T...)
8  - DVB-ASI cards
9  - UDP or RTP stream carrying a transport stream
11 It outputs one or several RTP streams carrying transport streams with:
12  - hardware or software PID filtering
13  - PID-based or service-based demultiplexing
14  - optional descrambling via CAM device
15  - optional DVB tables
17 DVBlast is written to be the core of a custom IRD, CID,or ASI gateway,
18 based on a PC with a Linux-supported card. It is very lightweight and
19 stable, designed for 24/7 operation.
22 Current features
23 ================
25  - Lightweight program designed for extreme memory and CPU conditions
26  - No runtime dependancy; one build dependancy (biTStream)
27  - CAM menus (MMI) support via an external application
28  - The configuration file describing outputs can be reloaded without losing
29    a single packet
30  - Support for the new S2API of linux-dvb
31  - IPv6 network support
32  - UDP rather than RTP output for IPTV STBs which don't support RTP
35 Tuning DVBlast
36 ==============
38 You usually want to supply DVBlast with the parameters of a transponder,
39 for instance for DVB-S :
41 dvblast -f 11570000 -s 27500000 -v 18
43 This tunes to frequency 11570 MHz, symbol rate 27500, horizontal (-v 18).
45 For DVB-S2 you must indicate a modulation with -m qpsk|psk_8|apsk_16|apsk_32.
47 For DVB-T you must indicate a bandwidth, usually -b 8 for 8 MHz multiplexes.
49 Please note that frequencies are in kHz for DVB-S/S2/C, but Hz for DVB-T.
50 Symbol rates are in symbols/s, and bandwidths in MHz. If you have several
51 linux-dvb cards in the machine, specify which one to use with -a.
53 You generally want to run DVBlast in DVB compliance mode with option -C.
54 This option will pass through or generate mandatory DVB tables (NIT, SDT,
55 EITp/f, TOT, TDT). If you also want to pass-through the EIT schedule tables,
56 use the -e switch. It is considered a good practice to configure the name
57 of the network (for the NIT) with the -M option.
59 If you don't want to set these options on a general basis, you can set them
60 per output - see below.
62 Other rarely used options are available - run dvblast -h for more
63 information.
66 Alternative inputs
67 ==================
69 DVBlast may handle several DVB adapters in the same machine with the -a switch:
70 -a 3 will use /dev/dvb/adapter3.  Additionally, selecting between frontends on
71 a single card is supported with the -n switch.  This is useful for hybrid 
72 DVB/S + DVB/T cards.
74 If you own a Computer Modules DVB-ASI input card, you can have DVBlast
75 filter and demultiplex the inputs. You just need to specify the slot number
76 with -A.
78 If you own a Deltacast ASI input card, you can have DVBlast filter and
79 demultiplex the inputs. You just need to specify the input as
80 "-A deltacast:<x>" where <x> is 100 * the card number (0 based) + the channel
81 number (0 based).
83 DVBlast can also read from a UDP or RTP IPv4 source carrying for
84 instance a multi-program transport stream. The address is specified with
85 -D. See the 'advanced features' section for information on how to create
86 such a stream for instance to cross network boundaries between the
87 receivers and the target network.
89 The syntax of the -D option is:
90 [<src host>[:<src port>]@]<src mcast>[:<port>][/<opts>]*
91 where <src mcast> is the multicast address carrying the stream, and <src
92 host> is optionally the address of the source, for source-specific multicast.
93 Options include:
94  /udp (for streams without an RTP header)
95  /mtu=XXXX (sets the maximum UDP packet size)
96  /ifindex=X (binds to a specific network interface, by link number)
97  /ifaddr=XXX.XXX.XXX.XXX (binds to a specific network interface, by address)
99 For example:
100 -D 239.255.0.2:1234/udp/ifindex=1
103 Configuring outputs
104 ===================
106 DVBlast reads a configuration file containing one or several lines in the
107 format :
108 <IP>[:<port>][@<IP>[:<port>]][/<option>]*       <always on>     <SID>   [<PID>,]*
110 For instance :
111 239.255.0.1:1234                1       10750   1234,1235,1236
113 The configuration file can be reloaded by sending "HUP" to the program, or
114 via the dvblastctl program.
116 IPv6 is supported, the destination address must be specified in the format 
117 described by RFC2732.  When using link-local scope addresses, it is
118 mandatory to include the interface name in the address, as shown in the 
119 example below.  If you do not include the interface name, you will see an
120 "invalid argument" error.  The interface name is optional for site-local and 
121 global scope addresses.
123 For example :
124 [ff12::1%eth0]:1234             1       10750
125 [ff15::abcd]:1234               1       10750
127 An optional bind address can be specified after an '@' sign. The typical
128 usage of this is to allow binding to a specific interface in a system which
129 has several. For instance:
130 239.255.0.1:1234@192.168.42.1   1       10750
132 For IPv6 the bind address is not relevant; binding to an interface is achieved
133 via the option "/ifindex=X" where X is the number of the link, as given by
134 the command `ip link`.
136 The "always on" flag tells DVBlast whether the channel is expected to
137 be on at all times or if it may break. If set to "1", then DVBlast will
138 regularly reset the CAM module if it fails to descramble the service,
139 assuming the module is dead. Every time it is reset a few TS packets
140 will be lost, that is why this feature is optional.
142 Other options can be set by appending / to the multicast address definition.
143 Available options include :
144  /udp (turns on -U for a specific output)
145  /dvb (turns on -C for a specific output)
146  /epg (turns on -C -e for a specific output)
147  /tsid=XXX (sets the transport stream ID)
148  /ssrc=XXX.XXX.XXX.XXX (sets the RTP synchronization source IPv4)
149  /retention=XXX (see -E)
150  /latency=XXX (see -L)
151  /ttl=XX (see -t)
152  /tos=XX (sets the IPv4 Type Of Service option)
153  /mtu=XXXX (sets the maximum UDP packet size)
154  /srvname=Some_Channel (set service name in SDT)
155  /srvprovider=Some_Provider (set provider name in SDT)
156  /pidmap=pmt_pid,audio_pid,video_pid,spu_pid
157  /newsid=XX (set output service ID)
158  /srcaddr=XXX.XXX.XXX.XXX (use RAW packets and set source IPv4)
159  /srcport=XX (set source port, depends on /srcaddr)
161 When setting text options like /srvname or /srvprovider, remember
162 that the underscore character (_) will be replaced by space ( ).
164 Several options can be appended, for instance:
166 239.255.0.1:1234/udp/epg/tsid=42/ssrc=192.168.0.1
168 The optional "/udp" parameter can be used to force DVBlast to output
169 raw UDP stream. This functionality is provided for backwards compatibility
170 with IPTV set top boxes that don't support RTP and should only be used
171 if absolutely necessary. If you need both RTP and UDP streams of the same
172 program, specify them on separate lines like this:
174 239.255.0.1:1234        1       10750
175 239.255.0.2:1234/udp    1       10750
178 There are three ways of configuring the PIDs to stream :
180 1. SID-based
182 239.255.0.1:1234        1       10750   
184 DVBlast will stream all known PIDs from service 10750 (video, audio, and
185 subtitles). The resulting stream is fully MPEG-compliant, with PAT and PMT.
187 2. SID and PIDs
189 239.255.0.1:1234        1       10750   1234,1235
191 DVBlast will stream SID 10750, but only PID 1234 and 1235 will be output.
192 Other known PIDs will be discarded and removed from the PMT. The list of
193 PIDs in the config file does not include the PAT and PMT, but it must
194 include the PCR PID if it is different from the video or audio PID, otherwise
195 the stream won't be compliant.
197 3. PIDs only
199 239.255.0.1:1234        1       0       0,128,1234,1235
201 DVBlast will only stream the PIDs passed. No PAT and PMT will be generated,
202 so if they are not included the stream won't be compliant. Also the
203 included PAT and PMT may contain ghost programs or ESes.
205 4. PID remapping
207 239.255.0.1:1234/udp/epg/tsid=42/ssrc=192.168.0.1/pidmap=pmt_pid,audio_pid,video_pid,spu_pid
209 All four PIDs are required!
211 Note that the CAM will not be programmed in that case (unless it has
212 been programmed by another line of the config file).
214 5. Pass-through
216 239.255.0.1:1234        1       *       
218 The entire received stream will be passed through the output. Please bear in
219 mind that when reading from a DVB adapter, hardware PID filtering is used by
220 default, so not all packets will be output unless you specify the -u option.
223 The file is read from the command-line :
225 dvblast -c /tmp/dvblast.conf
228 Buffering
229 =========
231 DVB cards usually output packets in big chunks. This can be problematic
232 with low bitrate multiplexes. By default, DVBlast bufferizes 200 ms
233 and tries to smooth the output. It may be desired to change this value
234 with the -L option. The appropriate value for the output latency should be :
235   chunk_size / multiplex_bitrate
237 The chunk size for saa7146-based cards is 512000 bits ; for
238 cx23885-based cards is 192512 bits. The chunk size can be modified with
239 an appropriate kernel patch (see extra/). The multiplex_bitrate depends
240 on the symbol rate and many other factors such as the modulation.
242 The current default value allows for multiplex_rates as low as 2.56 Mbi/s.
243 Smaller multiplexes are rare but exist, so in that case you may want to
244 increase the buffer size. A typical DVB multiplex is 30 or 40 Mbi/s, so
245 the default introduces a superfluous latency ; the buffer can be lowered
246 to 50 ms if latency is an issue.
248 DVBlast also has another parameter called "max retention time" (-E).
249 This controls how TS packets are grouped together in IP datagrams : the
250 difference between the theorical output times of the first and the last
251 TS packets cannot exceed the maximal retention time.
253 IP datagrams are normally output at the output time of the earliest TS
254 packet ; it implies that the next TS packets are sent too soon and must
255 be buffered at the receiver level. ISO/IEC 13818-1 makes no provision for
256 this, since IP wasn't in mind when designing TS, so in theory we risk a
257 buffer overflow.
259 However normal IP receivers feature a jitter buffer which can absorb the
260 overflow ; DVB recommends a 50 ms buffer. DVBlast's default maximal
261 retention time is just below, at 40 ms, which should be fine in most
262 situations.
264 If some anal set-top-box complains about buffer overflows or clock issues,
265 you may try to lower the value ; the drawback is that on low bitrate
266 streams it will introduce padding. People with low bitrate streams and
267 nice receivers with big buffers can raise this value to avoid superfluous
268 padding and lower the total bitrate.
270 Please bear in mind though that setting a value for max retention time
271 greater than the output latency has no effect.
274 Monitoring
275 ==========
277 If dvblast is run with the -r option, the dvblastctl program can be used
278 to retrieve information from DVBlast about the front-end or CAM module.
280 dvblastctl -r /tmp/dvblast.sock fe_status
281 dvblastctl -r /tmp/dvblast.sock mmi_status
282 dvblastctl -r /tmp/dvblast.sock shutdown
285 CAM menu
286 ========
288 For easier access to the CAM menus, the dvblast_mmi.sh shell script is
289 provided :
291 dvblast_mmi.sh -r /tmp/dvblast.sock
294 Advanced features
295 =================
297 For better latency, run DVBlast in real-time priority: -i 1 (requires root
298 privileges).
300 DVBlast can also stream the entire transponder to an IPv4 or IPv6 address :
301 dvblast -u -d 172.16.42.42:1235 -f 11570000 -s 27500000 -v 18
302 dvblast -u -d [fe80::0ca:feff:fec0:ffee]:1235 -f 11570000 -s 27500000 -v 18
304 Note that IPv6 addresses specified on command line may need to have the square
305 brackets escaped (\[ and \]), depending on your shell.
307 The -u switch disables the PID filters, so that all PIDs, even the
308 unused ones, can be output.
310 Other options are self-understandable, and are listed in dvblast -h.