fix segfault when dvb_charset != native_charset
[dvblast.git] / README
blob48a2432849404debd0ef3aa6c274f41a33b201ec
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). For
44 DVB-S2, you must indicate a modulation with -m qpsk or -m psk_8. For DVB-T,
45 a bandwidth (usually -b 8 for 8 MHz multiplexes).
47 Please note that frequencies are in kHz for DVB-S/S2/C, but Hz for DVB-T.
48 Symbol rates are in symbols/s, and bandwidths in MHz. If you have several
49 linux-dvb cards in the machine, specify which one to use with -a.
51 You generally want to run DVBlast in DVB compliance mode with option -C.
52 This option will pass through or generate mandatory DVB tables (NIT, SDT,
53 EITp/f, TOT, TDT). If you also want to pass-through the EIT schedule tables,
54 use the -e switch. It is considered a good practice to configure the name
55 of the network (for the NIT) with the -M option.
57 If you don't want to set these options on a general basis, you can set them
58 per output - see below.
60 Other rarely used options are available - run dvblast -h for more
61 information.
64 Alternative inputs
65 ==================
67 DVBlast may handle several DVB adapters in the same machine with the -a switch:
68 -a 3 will use /dev/dvb/adapter3.  Additionally, selecting between frontends on
69 a single card is supported with the -n switch.  This is useful for hybrid 
70 DVB/S + DVB/T cards.
72 If you own a Computer Modules DVB-ASI input card, you can have DVBlast
73 filter and demultiplex the inputs. You just need to specify the slot number
74 with -A.
76 If you own a Deltacast ASI input card, you can have DVBlast filter and
77 demultiplex the inputs. You just need to specify the input as
78 "-A deltacast:<x>" where <x> is 100 * the card number (0 based) + the channel
79 number (0 based).
81 DVBlast can also read from a UDP or RTP IPv4 source carrying for
82 instance a multi-program transport stream. The address is specified with
83 -D. See the 'advanced features' section for information on how to create
84 such a stream for instance to cross network boundaries between the
85 receivers and the target network.
87 The syntax of the -D option is:
88 [<src host>[:<src port>]@]<src mcast>[:<port>][/<opts>]*
89 where <src mcast> is the multicast address carrying the stream, and <src
90 host> is optionally the address of the source, for source-specific multicast.
91 Options include:
92  /udp (for streams without an RTP header)
93  /mtu=XXXX (sets the maximum UDP packet size)
94  /ifindex=X (binds to a specific network interface, by link number)
95  /ifaddr=XXX.XXX.XXX.XXX (binds to a specific network interface, by address)
97 For example:
98 -D 239.255.0.2:1234/udp/ifindex=1
101 Configuring outputs
102 ===================
104 DVBlast reads a configuration file containing one or several lines in the
105 format :
106 <IP>[:<port>][@<IP>[:<port>]][/<option>]*       <always on>     <SID>   [<PID>,]*
108 For instance :
109 239.255.0.1:1234                1       10750   1234,1235,1236
111 The configuration file can be reloaded by sending "HUP" to the program, or
112 via the dvblastctl program.
114 IPv6 is supported, the destination address must be specified in the format 
115 described by RFC2732.  When using link-local scope addresses, it is
116 mandatory to include the interface name in the address, as shown in the 
117 example below.  If you do not include the interface name, you will see an
118 "invalid argument" error.  The interface name is optional for site-local and 
119 global scope addresses.
121 For example :
122 [ff12::1%eth0]:1234             1       10750
123 [ff15::abcd]:1234               1       10750
125 An optional bind address can be specified after an '@' sign. The typical
126 usage of this is to allow binding to a specific interface in a system which
127 has several. For instance:
128 239.255.0.1:1234@192.168.42.1   1       10750
130 For IPv6 the bind address is not relevant; binding to an interface is achieved
131 via the option "/ifindex=X" where X is the number of the link, as given by
132 the command `ip link`.
134 The "always on" flag tells DVBlast whether the channel is expected to
135 be on at all times or if it may break. If set to "1", then DVBlast will
136 regularly reset the CAM module if it fails to descramble the service,
137 assuming the module is dead. Every time it is reset a few TS packets
138 will be lost, that is why this feature is optional.
140 Other options can be set by appending / to the multicast address definition.
141 Available options include :
142  /udp (turns on -U for a specific output)
143  /dvb (turns on -C for a specific output)
144  /epg (turns on -C -e for a specific output)
145  /tsid=XXX (sets the transport stream ID)
146  /ssrc=XXX.XXX.XXX.XXX (sets the RTP synchronization source IPv4)
147  /retention=XXX (see -E)
148  /latency=XXX (see -L)
149  /ttl=XX (see -t)
150  /tos=XX (sets the IPv4 Type Of Service option)
151  /mtu=XXXX (sets the maximum UDP packet size)
152  /srvname=Some_Channel (set service name in SDT)
153  /srvprovider=Some_Provider (set provider name in SDT)
154  /pidmap=pmt_pid,audio_pid,video_pid,spu_pid
155  /newsid=XX (set output service ID)
156  /srcaddr=XXX.XXX.XXX.XXX (use RAW packets and set source IPv4)
157  /srcport=XX (set source port, depends on /srcaddr)
159 When setting text options like /srvname or /srvprovider, remember
160 that the underscore character (_) will be replaced by space ( ).
162 Several options can be appended, for instance:
164 239.255.0.1:1234/udp/epg/tsid=42/ssrc=192.168.0.1
166 The optional "/udp" parameter can be used to force DVBlast to output
167 raw UDP stream. This functionality is provided for backwards compatibility
168 with IPTV set top boxes that don't support RTP and should only be used
169 if absolutely necessary. If you need both RTP and UDP streams of the same
170 program, specify them on separate lines like this:
172 239.255.0.1:1234        1       10750
173 239.255.0.2:1234/udp    1       10750
176 There are three ways of configuring the PIDs to stream :
178 1. SID-based
180 239.255.0.1:1234        1       10750   
182 DVBlast will stream all known PIDs from service 10750 (video, audio, and
183 subtitles). The resulting stream is fully MPEG-compliant, with PAT and PMT.
185 2. SID and PIDs
187 239.255.0.1:1234        1       10750   1234,1235
189 DVBlast will stream SID 10750, but only PID 1234 and 1235 will be output.
190 Other known PIDs will be discarded and removed from the PMT. The list of
191 PIDs in the config file does not include the PAT and PMT, but it must
192 include the PCR PID if it is different from the video or audio PID, otherwise
193 the stream won't be compliant.
195 3. PIDs only
197 239.255.0.1:1234        1       0       0,128,1234,1235
199 DVBlast will only stream the PIDs passed. No PAT and PMT will be generated,
200 so if they are not included the stream won't be compliant. Also the
201 included PAT and PMT may contain ghost programs or ESes.
203 4. PID remapping
205 239.255.0.1:1234/udp/epg/tsid=42/ssrc=192.168.0.1/pidmap=pmt_pid,audio_pid,video_pid,spu_pid
207 All four PIDs are required!
209 Note that the CAM will not be programmed in that case (unless it has
210 been programmed by another line of the config file).
212 5. Pass-through
214 239.255.0.1:1234        1       *       
216 The entire received stream will be passed through the output. Please bear in
217 mind that when reading from a DVB adapter, hardware PID filtering is used by
218 default, so not all packets will be output unless you specify the -u option.
221 The file is read from the command-line :
223 dvblast -c /tmp/dvblast.conf
226 Buffering
227 =========
229 DVB cards usually output packets in big chunks. This can be problematic
230 with low bitrate multiplexes. By default, DVBlast bufferizes 200 ms
231 and tries to smooth the output. It may be desired to change this value
232 with the -L option. The appropriate value for the output latency should be :
233   chunk_size / multiplex_bitrate
235 The chunk size for saa7146-based cards is 512000 bits ; for
236 cx23885-based cards is 192512 bits. The chunk size can be modified with
237 an appropriate kernel patch (see extra/). The multiplex_bitrate depends
238 on the symbol rate and many other factors such as the modulation.
240 The current default value allows for multiplex_rates as low as 2.56 Mbi/s.
241 Smaller multiplexes are rare but exist, so in that case you may want to
242 increase the buffer size. A typical DVB multiplex is 30 or 40 Mbi/s, so
243 the default introduces a superfluous latency ; the buffer can be lowered
244 to 50 ms if latency is an issue.
246 DVBlast also has another parameter called "max retention time" (-E).
247 This controls how TS packets are grouped together in IP datagrams : the
248 difference between the theorical output times of the first and the last
249 TS packets cannot exceed the maximal retention time.
251 IP datagrams are normally output at the output time of the earliest TS
252 packet ; it implies that the next TS packets are sent too soon and must
253 be buffered at the receiver level. ISO/IEC 13818-1 makes no provision for
254 this, since IP wasn't in mind when designing TS, so in theory we risk a
255 buffer overflow.
257 However normal IP receivers feature a jitter buffer which can absorb the
258 overflow ; DVB recommends a 50 ms buffer. DVBlast's default maximal
259 retention time is just below, at 40 ms, which should be fine in most
260 situations.
262 If some anal set-top-box complains about buffer overflows or clock issues,
263 you may try to lower the value ; the drawback is that on low bitrate
264 streams it will introduce padding. People with low bitrate streams and
265 nice receivers with big buffers can raise this value to avoid superfluous
266 padding and lower the total bitrate.
268 Please bear in mind though that setting a value for max retention time
269 greater than the output latency has no effect.
272 Monitoring
273 ==========
275 If dvblast is run with the -r option, the dvblastctl program can be used
276 to retrieve information from DVBlast about the front-end or CAM module.
278 dvblastctl -r /tmp/dvblast.sock fe_status
279 dvblastctl -r /tmp/dvblast.sock mmi_status
280 dvblastctl -r /tmp/dvblast.sock shutdown
283 CAM menu
284 ========
286 For easier access to the CAM menus, the dvblast_mmi.sh shell script is
287 provided :
289 dvblast_mmi.sh -r /tmp/dvblast.sock
292 Advanced features
293 =================
295 For better latency, run DVBlast in real-time priority: -i 1 (requires root
296 privileges).
298 DVBlast can also stream the entire transponder to an IPv4 or IPv6 address :
299 dvblast -u -d 172.16.42.42:1235 -f 11570000 -s 27500000 -v 18
300 dvblast -u -d [fe80::0ca:feff:fec0:ffee]:1235 -f 11570000 -s 27500000 -v 18
302 Note that IPv6 addresses specified on command line may need to have the square
303 brackets escaped (\[ and \]), depending on your shell.
305 The -u switch disables the PID filters, so that all PIDs, even the
306 unused ones, can be output.
308 Other options are self-understandable, and are listed in dvblast -h.