fed up with those stupid warnings
[mmotm.git] / Documentation / DocBook / dvb / frontend.xml
blob9d89a7b94fd5e13a711ca03055893d3c25460cc2
1 <title>DVB Frontend API</title>
3 <para>The DVB frontend device controls the tuner and DVB demodulator
4 hardware. It can be accessed through <emphasis
5 role="tt">/dev/dvb/adapter0/frontend0</emphasis>. Data types and and
6 ioctl definitions can be accessed by including <emphasis
7 role="tt">linux/dvb/frontend.h</emphasis> in your application.</para>
9 <para>DVB frontends come in three varieties: DVB-S (satellite), DVB-C
10 (cable) and DVB-T (terrestrial). Transmission via the internet (DVB-IP)
11 is not yet handled by this API but a future extension is possible. For
12 DVB-S the frontend device also supports satellite equipment control
13 (SEC) via DiSEqC and V-SEC protocols. The DiSEqC (digital SEC)
14 specification is available from
15 <ulink url="http://www.eutelsat.com/satellites/4_5_5.html">Eutelsat</ulink>.</para>
17 <para>Note that the DVB API may also be used for MPEG decoder-only PCI
18 cards, in which case there exists no frontend device.</para>
20 <section id="frontend_types">
21 <title>Frontend Data Types</title>
23 <section id="frontend_type">
24 <title>frontend type</title>
26 <para>For historical reasons frontend types are named after the type of modulation used in
27 transmission.</para>
28 <programlisting>
29         typedef enum fe_type {
30         FE_QPSK,   /&#x22C6; DVB-S &#x22C6;/
31         FE_QAM,    /&#x22C6; DVB-C &#x22C6;/
32         FE_OFDM    /&#x22C6; DVB-T &#x22C6;/
33         } fe_type_t;
34 </programlisting>
36 </section>
38 <section id="frontend_caps">
39 <title>frontend capabilities</title>
41 <para>Capabilities describe what a frontend can do. Some capabilities can only be supported for
42 a specific frontend type.</para>
43 <programlisting>
44         typedef enum fe_caps {
45         FE_IS_STUPID                  = 0,
46         FE_CAN_INVERSION_AUTO         = 0x1,
47         FE_CAN_FEC_1_2                = 0x2,
48         FE_CAN_FEC_2_3                = 0x4,
49         FE_CAN_FEC_3_4                = 0x8,
50         FE_CAN_FEC_4_5                = 0x10,
51         FE_CAN_FEC_5_6                = 0x20,
52         FE_CAN_FEC_6_7                = 0x40,
53         FE_CAN_FEC_7_8                = 0x80,
54         FE_CAN_FEC_8_9                = 0x100,
55         FE_CAN_FEC_AUTO               = 0x200,
56         FE_CAN_QPSK                   = 0x400,
57         FE_CAN_QAM_16                 = 0x800,
58         FE_CAN_QAM_32                 = 0x1000,
59         FE_CAN_QAM_64                 = 0x2000,
60         FE_CAN_QAM_128                = 0x4000,
61         FE_CAN_QAM_256                = 0x8000,
62         FE_CAN_QAM_AUTO               = 0x10000,
63         FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000,
64         FE_CAN_BANDWIDTH_AUTO         = 0x40000,
65         FE_CAN_GUARD_INTERVAL_AUTO    = 0x80000,
66         FE_CAN_HIERARCHY_AUTO         = 0x100000,
67         FE_CAN_MUTE_TS                = 0x80000000,
68         FE_CAN_CLEAN_SETUP            = 0x40000000
69         } fe_caps_t;
70 </programlisting>
71 </section>
73 <section id="frontend_info">
74 <title>frontend information</title>
76 <para>Information about the frontend ca be queried with FE_GET_INFO.</para>
78 <programlisting>
79         struct dvb_frontend_info {
80         char       name[128];
81         fe_type_t  type;
82         uint32_t   frequency_min;
83         uint32_t   frequency_max;
84         uint32_t   frequency_stepsize;
85         uint32_t   frequency_tolerance;
86         uint32_t   symbol_rate_min;
87         uint32_t   symbol_rate_max;
88         uint32_t   symbol_rate_tolerance;     /&#x22C6; ppm &#x22C6;/
89         uint32_t   notifier_delay;            /&#x22C6; ms &#x22C6;/
90         fe_caps_t  caps;
91         };
92 </programlisting>
93 </section>
95 <section id="frontend_diseqc">
96 <title>diseqc master command</title>
98 <para>A message sent from the frontend to DiSEqC capable equipment.</para>
99 <programlisting>
100         struct dvb_diseqc_master_cmd {
101         uint8_t msg [6]; /&#x22C6;  { framing, address, command, data[3] } &#x22C6;/
102         uint8_t msg_len; /&#x22C6;  valid values are 3...6  &#x22C6;/
103         };
104 </programlisting>
105 </section>
106 <section role="subsection">
107 <title>diseqc slave reply</title>
109 <para>A reply to the frontend from DiSEqC 2.0 capable equipment.</para>
110 <programlisting>
111         struct dvb_diseqc_slave_reply {
112         uint8_t msg [4]; /&#x22C6;  { framing, data [3] } &#x22C6;/
113         uint8_t msg_len; /&#x22C6;  valid values are 0...4, 0 means no msg  &#x22C6;/
114         int     timeout; /&#x22C6;  return from ioctl after timeout ms with &#x22C6;/
115         };                       /&#x22C6;  errorcode when no message was received  &#x22C6;/
116 </programlisting>
117 </section>
119 <section id="frontend_diseqc_slave_reply">
120 <title>diseqc slave reply</title>
121 <para>The voltage is usually used with non-DiSEqC capable LNBs to switch the polarzation
122 (horizontal/vertical). When using DiSEqC epuipment this voltage has to be switched
123 consistently to the DiSEqC commands as described in the DiSEqC spec.</para>
124 <programlisting>
125         typedef enum fe_sec_voltage {
126         SEC_VOLTAGE_13,
127         SEC_VOLTAGE_18
128         } fe_sec_voltage_t;
129 </programlisting>
130 </section>
132 <section id="frontend_sec_tone">
133 <title>SEC continuous tone</title>
135 <para>The continous 22KHz tone is usually used with non-DiSEqC capable LNBs to switch the
136 high/low band of a dual-band LNB. When using DiSEqC epuipment this voltage has to
137 be switched consistently to the DiSEqC commands as described in the DiSEqC
138 spec.</para>
139 <programlisting>
140         typedef enum fe_sec_tone_mode {
141         SEC_TONE_ON,
142         SEC_TONE_OFF
143         } fe_sec_tone_mode_t;
144 </programlisting>
145 </section>
147 <section id="frontend_sec_burst">
148 <title>SEC tone burst</title>
150 <para>The 22KHz tone burst is usually used with non-DiSEqC capable switches to select
151 between two connected LNBs/satellites. When using DiSEqC epuipment this voltage has to
152 be switched consistently to the DiSEqC commands as described in the DiSEqC
153 spec.</para>
154 <programlisting>
155         typedef enum fe_sec_mini_cmd {
156         SEC_MINI_A,
157         SEC_MINI_B
158         } fe_sec_mini_cmd_t;
159 </programlisting>
161 <para></para>
162 </section>
164 <section id="frontend_status">
165 <title>frontend status</title>
166 <para>Several functions of the frontend device use the fe_status data type defined
167 by</para>
168 <programlisting>
169  typedef enum fe_status {
170          FE_HAS_SIGNAL     = 0x01,   /&#x22C6;  found something above the noise level &#x22C6;/
171          FE_HAS_CARRIER    = 0x02,   /&#x22C6;  found a DVB signal  &#x22C6;/
172          FE_HAS_VITERBI    = 0x04,   /&#x22C6;  FEC is stable  &#x22C6;/
173          FE_HAS_SYNC       = 0x08,   /&#x22C6;  found sync bytes  &#x22C6;/
174          FE_HAS_LOCK       = 0x10,   /&#x22C6;  everything's working... &#x22C6;/
175          FE_TIMEDOUT       = 0x20,   /&#x22C6;  no lock within the last ~2 seconds &#x22C6;/
176          FE_REINIT         = 0x40    /&#x22C6;  frontend was reinitialized,  &#x22C6;/
177  } fe_status_t;                      /&#x22C6;  application is recommned to reset &#x22C6;/
178 </programlisting>
179 <para>to indicate the current state and/or state changes of the frontend hardware.
180 </para>
182 </section>
184 <section id="frontend_params">
185 <title>frontend parameters</title>
186 <para>The kind of parameters passed to the frontend device for tuning depend on
187 the kind of hardware you are using. All kinds of parameters are combined as an
188 union in the FrontendParameters structure:</para>
189 <programlisting>
190  struct dvb_frontend_parameters {
191          uint32_t frequency;       /&#x22C6; (absolute) frequency in Hz for QAM/OFDM &#x22C6;/
192                                    /&#x22C6; intermediate frequency in kHz for QPSK &#x22C6;/
193          fe_spectral_inversion_t inversion;
194          union {
195                  struct dvb_qpsk_parameters qpsk;
196                  struct dvb_qam_parameters  qam;
197                  struct dvb_ofdm_parameters ofdm;
198          } u;
199  };
200 </programlisting>
201 <para>For satellite QPSK frontends you have to use the <constant>QPSKParameters</constant> member defined by</para>
202 <programlisting>
203  struct dvb_qpsk_parameters {
204          uint32_t        symbol_rate;  /&#x22C6; symbol rate in Symbols per second &#x22C6;/
205          fe_code_rate_t  fec_inner;    /&#x22C6; forward error correction (see above) &#x22C6;/
206  };
207 </programlisting>
208 <para>for cable QAM frontend you use the <constant>QAMParameters</constant> structure</para>
209 <programlisting>
210  struct dvb_qam_parameters {
211          uint32_t         symbol_rate; /&#x22C6; symbol rate in Symbols per second &#x22C6;/
212          fe_code_rate_t   fec_inner;   /&#x22C6; forward error correction (see above) &#x22C6;/
213          fe_modulation_t  modulation;  /&#x22C6; modulation type (see above) &#x22C6;/
214  };
215 </programlisting>
216 <para>DVB-T frontends are supported by the <constant>OFDMParamters</constant> structure
217 </para>
218 <programlisting>
219  struct dvb_ofdm_parameters {
220          fe_bandwidth_t      bandwidth;
221          fe_code_rate_t      code_rate_HP;  /&#x22C6; high priority stream code rate &#x22C6;/
222          fe_code_rate_t      code_rate_LP;  /&#x22C6; low priority stream code rate &#x22C6;/
223          fe_modulation_t     constellation; /&#x22C6; modulation type (see above) &#x22C6;/
224          fe_transmit_mode_t  transmission_mode;
225          fe_guard_interval_t guard_interval;
226          fe_hierarchy_t      hierarchy_information;
227  };
228 </programlisting>
229 <para>In the case of QPSK frontends the <constant>Frequency</constant> field specifies the intermediate
230 frequency, i.e. the offset which is effectively added to the local oscillator frequency (LOF) of
231 the LNB. The intermediate frequency has to be specified in units of kHz. For QAM and
232 OFDM frontends the Frequency specifies the absolute frequency and is given in
234 </para>
235 <para>The Inversion field can take one of these values:
236 </para>
237 <programlisting>
238  typedef enum fe_spectral_inversion {
239          INVERSION_OFF,
240          INVERSION_ON,
241          INVERSION_AUTO
242  } fe_spectral_inversion_t;
243 </programlisting>
244 <para>It indicates if spectral inversion should be presumed or not. In the automatic setting
245 (<constant>INVERSION_AUTO</constant>) the hardware will try to figure out the correct setting by
246 itself.
247 </para>
248 <para>The possible values for the <constant>FEC_inner</constant> field are
249 </para>
250 <programlisting>
251  typedef enum fe_code_rate {
252          FEC_NONE = 0,
253          FEC_1_2,
254          FEC_2_3,
255          FEC_3_4,
256          FEC_4_5,
257          FEC_5_6,
258          FEC_6_7,
259          FEC_7_8,
260          FEC_8_9,
261          FEC_AUTO
262  } fe_code_rate_t;
263 </programlisting>
264 <para>which correspond to error correction rates of 1/2, 2/3, etc., no error correction or auto
265 detection.
266 </para>
267 <para>For cable and terrestrial frontends (QAM and OFDM) one also has to specify the quadrature
268 modulation mode which can be one of the following:
269 </para>
270 <programlisting>
271  typedef enum fe_modulation {
272  QPSK,
273          QAM_16,
274          QAM_32,
275          QAM_64,
276          QAM_128,
277          QAM_256,
278          QAM_AUTO
279  } fe_modulation_t;
280 </programlisting>
281 <para>Finally, there are several more parameters for OFDM:
282 </para>
283 <programlisting>
284  typedef enum fe_transmit_mode {
285          TRANSMISSION_MODE_2K,
286          TRANSMISSION_MODE_8K,
287          TRANSMISSION_MODE_AUTO
288  } fe_transmit_mode_t;
289 </programlisting>
290  <programlisting>
291  typedef enum fe_bandwidth {
292          BANDWIDTH_8_MHZ,
293          BANDWIDTH_7_MHZ,
294          BANDWIDTH_6_MHZ,
295          BANDWIDTH_AUTO
296  } fe_bandwidth_t;
297 </programlisting>
298  <programlisting>
299  typedef enum fe_guard_interval {
300          GUARD_INTERVAL_1_32,
301          GUARD_INTERVAL_1_16,
302          GUARD_INTERVAL_1_8,
303          GUARD_INTERVAL_1_4,
304          GUARD_INTERVAL_AUTO
305  } fe_guard_interval_t;
306 </programlisting>
307  <programlisting>
308  typedef enum fe_hierarchy {
309          HIERARCHY_NONE,
310          HIERARCHY_1,
311          HIERARCHY_2,
312          HIERARCHY_4,
313          HIERARCHY_AUTO
314  } fe_hierarchy_t;
315 </programlisting>
317 </section>
319 <section id="frontend_events">
320 <title>frontend events</title>
321  <programlisting>
322  struct dvb_frontend_event {
323          fe_status_t status;
324          struct dvb_frontend_parameters parameters;
325  };
326 </programlisting>
327  </section>
328 </section>
331 <section id="frontend_fcalls">
332 <title>Frontend Function Calls</title>
334 <section id="frontend_f_open">
335 <title>open()</title>
336 <para>DESCRIPTION</para>
337 <informaltable><tgroup cols="1"><tbody><row>
338 <entry align="char">
339 <para>This system call opens a named frontend device (/dev/dvb/adapter0/frontend0)
340  for subsequent use. Usually the first thing to do after a successful open is to
341  find out the frontend type with FE_GET_INFO.</para>
342 <para>The device can be opened in read-only mode, which only allows monitoring of
343  device status and statistics, or read/write mode, which allows any kind of use
344  (e.g. performing tuning operations.)
345 </para>
346 <para>In a system with multiple front-ends, it is usually the case that multiple devices
347  cannot be open in read/write mode simultaneously. As long as a front-end
348  device is opened in read/write mode, other open() calls in read/write mode will
349  either fail or block, depending on whether non-blocking or blocking mode was
350  specified. A front-end device opened in blocking mode can later be put into
351  non-blocking mode (and vice versa) using the F_SETFL command of the fcntl
352  system call. This is a standard system call, documented in the Linux manual
353  page for fcntl. When an open() call has succeeded, the device will be ready
354  for use in the specified mode. This implies that the corresponding hardware is
355  powered up, and that other front-ends may have been powered down to make
356  that possible.</para>
357 </entry>
358  </row></tbody></tgroup></informaltable>
360 <para>SYNOPSIS</para>
361 <informaltable><tgroup cols="1"><tbody><row><entry
362  align="char">
363 <para>int open(const char &#x22C6;deviceName, int flags);</para>
364 </entry>
365  </row></tbody></tgroup></informaltable>
366 <para>PARAMETERS
367 </para>
368 <informaltable><tgroup cols="2"><tbody><row><entry
369  align="char">
370 <para>const char
371  *deviceName</para>
372 </entry><entry
373  align="char">
374 <para>Name of specific video device.</para>
375 </entry>
376  </row><row><entry
377  align="char">
378 <para>int flags</para>
379 </entry><entry
380  align="char">
381 <para>A bit-wise OR of the following flags:</para>
382 </entry>
383  </row><row><entry
384  align="char">
385 </entry><entry
386  align="char">
387 <para>O_RDONLY read-only access</para>
388 </entry>
389  </row><row><entry
390  align="char">
391 </entry><entry
392  align="char">
393 <para>O_RDWR read/write access</para>
394 </entry>
395  </row><row><entry
396  align="char">
397 </entry><entry
398  align="char">
399 <para>O_NONBLOCK open in non-blocking mode</para>
400 </entry>
401  </row><row><entry
402  align="char">
403 </entry><entry
404  align="char">
405 <para>(blocking mode is the default)</para>
406 </entry>
407  </row></tbody></tgroup></informaltable>
408 <para>ERRORS
409 </para>
410 <informaltable><tgroup cols="2"><tbody><row><entry
411  align="char">
412 <para>ENODEV</para>
413 </entry><entry
414  align="char">
415 <para>Device driver not loaded/available.</para>
416 </entry>
417  </row><row><entry
418  align="char">
419 <para>EINTERNAL</para>
420 </entry><entry
421  align="char">
422 <para>Internal error.</para>
423 </entry>
424  </row><row><entry
425  align="char">
426 <para>EBUSY</para>
427 </entry><entry
428  align="char">
429 <para>Device or resource busy.</para>
430 </entry>
431  </row><row><entry
432  align="char">
433 <para>EINVAL</para>
434 </entry><entry
435  align="char">
436 <para>Invalid argument.</para>
437 </entry>
438  </row></tbody></tgroup></informaltable>
439 </section>
441 <section id="frontend_f_close">
442 <title>close()</title>
443 <para>DESCRIPTION
444 </para>
445 <informaltable><tgroup cols="1"><tbody><row><entry
446  align="char">
447 <para>This system call closes a previously opened front-end device. After closing
448  a front-end device, its corresponding hardware might be powered down
449  automatically.</para>
450 </entry>
451  </row></tbody></tgroup></informaltable>
452 <para>SYNOPSIS
453 </para>
454 <informaltable><tgroup cols="1"><tbody><row><entry
455  align="char">
456 <para>int close(int fd);</para>
457 </entry>
458  </row></tbody></tgroup></informaltable>
459 <para>PARAMETERS
460 </para>
461 <informaltable><tgroup cols="2"><tbody><row><entry
462  align="char">
463 <para>int fd</para>
464 </entry><entry
465  align="char">
466 <para>File descriptor returned by a previous call to open().</para>
467 </entry>
468  </row></tbody></tgroup></informaltable>
469 <para>ERRORS
470 </para>
471 <informaltable><tgroup cols="2"><tbody><row><entry
472  align="char">
473 <para>EBADF</para>
474 </entry><entry
475  align="char">
476 <para>fd is not a valid open file descriptor.</para>
477 </entry>
478  </row></tbody></tgroup></informaltable>
479 </section>
481 <section id="frontend_read_status">
482 <title>FE_READ_STATUS</title>
483 <para>DESCRIPTION
484 </para>
485 <informaltable><tgroup cols="1"><tbody><row><entry
486  align="char">
487 <para>This ioctl call returns status information about the front-end. This call only
488  requires read-only access to the device.</para>
489 </entry>
490  </row></tbody></tgroup></informaltable>
491 <para>SYNOPSIS
492 </para>
493 <informaltable><tgroup cols="1"><tbody><row><entry
494  align="char">
495 <para>int ioctl(int fd, int request = FE_READ_STATUS,
496  fe_status_t &#x22C6;status);</para>
497 </entry>
498  </row></tbody></tgroup></informaltable>
499 <para>PARAMETERS
500 </para>
502 <informaltable><tgroup cols="2"><tbody><row><entry
503  align="char">
504 <para>int fd</para>
505 </entry><entry
506  align="char">
507 <para>File descriptor returned by a previous call to open().</para>
508 </entry>
509  </row><row><entry
510  align="char">
511 <para>int request</para>
512 </entry><entry
513  align="char">
514 <para>Equals FE_READ_STATUS for this command.</para>
515 </entry>
516  </row><row><entry
517  align="char">
518 <para>struct fe_status_t
519  *status</para>
520 </entry><entry
521  align="char">
522 <para>Points to the location where the front-end status word is
523  to be stored.</para>
524 </entry>
525  </row></tbody></tgroup></informaltable>
526 <para>ERRORS
527 </para>
528 <informaltable><tgroup cols="2"><tbody><row><entry
529  align="char">
530 <para>EBADF</para>
531 </entry><entry
532  align="char">
533 <para>fd is not a valid open file descriptor.</para>
534 </entry>
535  </row><row><entry
536  align="char">
537 <para>EFAULT</para>
538 </entry><entry
539  align="char">
540 <para>status points to invalid address.</para>
541 </entry>
542  </row></tbody></tgroup></informaltable>
543 </section>
545 <section id="frontend_read_ber">
546 <title>FE_READ_BER</title>
547 <para>DESCRIPTION
548 </para>
549 <informaltable><tgroup cols="1"><tbody><row><entry
550  align="char">
551 <para>This ioctl call returns the bit error rate for the signal currently
552  received/demodulated by the front-end. For this command, read-only access to
553  the device is sufficient.</para>
554 </entry>
555  </row></tbody></tgroup></informaltable>
556 <para>SYNOPSIS
557 </para>
558 <informaltable><tgroup cols="1"><tbody><row><entry
559  align="char">
560 <para>int ioctl(int fd, int request = FE_READ_BER,
561  uint32_t &#x22C6;ber);</para>
562 </entry>
563  </row></tbody></tgroup></informaltable>
564 <para>PARAMETERS
565 </para>
566 <informaltable><tgroup cols="2"><tbody><row><entry
567  align="char">
568 <para>int fd</para>
569 </entry><entry
570  align="char">
571 <para>File descriptor returned by a previous call to open().</para>
572 </entry>
573  </row><row><entry
574  align="char">
575 <para>int request</para>
576 </entry><entry
577  align="char">
578 <para>Equals FE_READ_BER for this command.</para>
579 </entry>
580  </row><row><entry
581  align="char">
582 <para>uint32_t *ber</para>
583 </entry><entry
584  align="char">
585 <para>The bit error rate is stored into *ber.</para>
586 </entry>
587  </row></tbody></tgroup></informaltable>
588 <para>ERRORS
589 </para>
590 <informaltable><tgroup cols="2"><tbody><row><entry
591  align="char">
592 <para>EBADF</para>
593 </entry><entry
594  align="char">
595 <para>fd is not a valid open file descriptor.</para>
596 </entry>
597  </row><row><entry
598  align="char">
599 <para>EFAULT</para>
600 </entry><entry
601  align="char">
602 <para>ber points to invalid address.</para>
603 </entry>
604  </row><row><entry
605  align="char">
606 <para>ENOSIGNAL</para>
607 </entry><entry
608  align="char">
609 <para>There is no signal, thus no meaningful bit error rate. Also
610  returned if the front-end is not turned on.</para>
611 </entry>
612  </row><row><entry
613  align="char">
614 <para>ENOSYS</para>
615 </entry><entry
616  align="char">
617 <para>Function not available for this device.</para>
618 </entry>
619  </row></tbody></tgroup></informaltable>
620 </section>
622 <section id="frontend_read_snr">
623 <title>FE_READ_SNR</title>
625 <para>DESCRIPTION
626 </para>
627 <informaltable><tgroup cols="1"><tbody><row><entry
628  align="char">
629 <para>This ioctl call returns the signal-to-noise ratio for the signal currently received
630  by the front-end. For this command, read-only access to the device is sufficient.</para>
631 </entry>
632  </row></tbody></tgroup></informaltable>
633 <para>SYNOPSIS
634 </para>
635 <informaltable><tgroup cols="1"><tbody><row><entry
636  align="char">
637 <para>int ioctl(int fd, int request = FE_READ_SNR, int16_t
638  &#x22C6;snr);</para>
639 </entry>
640  </row></tbody></tgroup></informaltable>
641 <para>PARAMETERS
642 </para>
643 <informaltable><tgroup cols="2"><tbody><row><entry
644  align="char">
645 <para>int fd</para>
646 </entry><entry
647  align="char">
648 <para>File descriptor returned by a previous call to open().</para>
649 </entry>
650  </row><row><entry
651  align="char">
652 <para>int request</para>
653 </entry><entry
654  align="char">
655 <para>Equals FE_READ_SNR for this command.</para>
656 </entry>
657  </row><row><entry
658  align="char">
659 <para>int16_t *snr</para>
660 </entry><entry
661  align="char">
662 <para>The signal-to-noise ratio is stored into *snr.</para>
663 </entry>
664  </row></tbody></tgroup></informaltable>
666 <para>ERRORS
667 </para>
668 <informaltable><tgroup cols="2"><tbody><row><entry
669  align="char">
670 <para>EBADF</para>
671 </entry><entry
672  align="char">
673 <para>fd is not a valid open file descriptor.</para>
674 </entry>
675  </row><row><entry
676  align="char">
677 <para>EFAULT</para>
678 </entry><entry
679  align="char">
680 <para>snr points to invalid address.</para>
681 </entry>
682  </row><row><entry
683  align="char">
684 <para>ENOSIGNAL</para>
685 </entry><entry
686  align="char">
687 <para>There is no signal, thus no meaningful signal strength
688  value. Also returned if front-end is not turned on.</para>
689 </entry>
690  </row><row><entry
691  align="char">
692 <para>ENOSYS</para>
693 </entry><entry
694  align="char">
695 <para>Function not available for this device.</para>
696 </entry>
697  </row></tbody></tgroup></informaltable>
698 </section>
700 <section id="frontend_read_signal_strength">
701 <title>FE_READ_SIGNAL_STRENGTH</title>
702 <para>DESCRIPTION
703 </para>
704 <informaltable><tgroup cols="1"><tbody><row><entry
705  align="char">
706 <para>This ioctl call returns the signal strength value for the signal currently received
707  by the front-end. For this command, read-only access to the device is sufficient.</para>
708 </entry>
709  </row></tbody></tgroup></informaltable>
710 <para>SYNOPSIS
711 </para>
712 <informaltable><tgroup cols="1"><tbody><row><entry
713  align="char">
714 <para>int ioctl( int fd, int request =
715  FE_READ_SIGNAL_STRENGTH, int16_t &#x22C6;strength);</para>
716 </entry>
717  </row></tbody></tgroup></informaltable>
719 <para>PARAMETERS
720 </para>
721 <informaltable><tgroup cols="2"><tbody><row><entry
722  align="char">
723 <para>int fd</para>
724 </entry><entry
725  align="char">
726 <para>File descriptor returned by a previous call to open().</para>
727 </entry>
728  </row><row><entry
729  align="char">
730 <para>int request</para>
731 </entry><entry
732  align="char">
733 <para>Equals FE_READ_SIGNAL_STRENGTH for this
734  command.</para>
735 </entry>
736  </row><row><entry
737  align="char">
738 <para>int16_t *strength</para>
739 </entry><entry
740  align="char">
741 <para>The signal strength value is stored into *strength.</para>
742 </entry>
743  </row></tbody></tgroup></informaltable>
744 <para>ERRORS
745 </para>
746 <informaltable><tgroup cols="2"><tbody><row><entry
747  align="char">
748 <para>EBADF</para>
749 </entry><entry
750  align="char">
751 <para>fd is not a valid open file descriptor.</para>
752 </entry>
753  </row><row><entry
754  align="char">
755 <para>EFAULT</para>
756 </entry><entry
757  align="char">
758 <para>status points to invalid address.</para>
759 </entry>
760  </row><row><entry
761  align="char">
762 <para>ENOSIGNAL</para>
763 </entry><entry
764  align="char">
765 <para>There is no signal, thus no meaningful signal strength
766  value. Also returned if front-end is not turned on.</para>
767 </entry>
768  </row><row><entry
769  align="char">
770 <para>ENOSYS</para>
771 </entry><entry
772  align="char">
773 <para>Function not available for this device.</para>
774 </entry>
775  </row></tbody></tgroup></informaltable>
776 </section>
778 <section id="frontend_read_ub">
779 <title>FE_READ_UNCORRECTED_BLOCKS</title>
780 <para>DESCRIPTION
781 </para>
782 <informaltable><tgroup cols="1"><tbody><row><entry
783  align="char">
784 <para>This ioctl call returns the number of uncorrected blocks detected by the device
785  driver during its lifetime. For meaningful measurements, the increment in block
786  count during a specific time interval should be calculated. For this command,
787  read-only access to the device is sufficient.</para>
788 </entry>
789  </row><row><entry
790  align="char">
791 <para>Note that the counter will wrap to zero after its maximum count has been
792  reached.</para>
793 </entry>
794  </row></tbody></tgroup></informaltable>
795 <para>SYNOPSIS
796 </para>
797 <informaltable><tgroup cols="1"><tbody><row><entry
798  align="char">
799 <para>int ioctl( int fd, int request =
800  FE_READ_UNCORRECTED_BLOCKS, uint32_t &#x22C6;ublocks);</para>
801 </entry>
802  </row></tbody></tgroup></informaltable>
803 <para>PARAMETERS
804 </para>
805 <informaltable><tgroup cols="2"><tbody><row><entry
806  align="char">
807 <para>int fd</para>
808 </entry><entry
809  align="char">
810 <para>File descriptor returned by a previous call to open().</para>
811 </entry>
812  </row><row><entry
813  align="char">
814 <para>int request</para>
815 </entry><entry
816  align="char">
817 <para>Equals FE_READ_UNCORRECTED_BLOCKS for this
818  command.</para>
819 </entry>
820  </row><row><entry
821  align="char">
822 <para>uint32_t *ublocks</para>
823 </entry><entry
824  align="char">
825 <para>The total number of uncorrected blocks seen by the driver
826  so far.</para>
827 </entry>
828  </row></tbody></tgroup></informaltable>
829 <para>ERRORS
830 </para>
831 <informaltable><tgroup cols="2"><tbody><row><entry
832  align="char">
833 <para>EBADF</para>
834 </entry><entry
835  align="char">
836 <para>fd is not a valid open file descriptor.</para>
837 </entry>
838  </row><row><entry
839  align="char">
840 <para>EFAULT</para>
841 </entry><entry
842  align="char">
843 <para>ublocks points to invalid address.</para>
844 </entry>
845  </row><row><entry
846  align="char">
847 <para>ENOSYS</para>
848 </entry><entry
849  align="char">
850 <para>Function not available for this device.</para>
851 </entry>
852  </row></tbody></tgroup></informaltable>
853 </section>
855 <section id="frontend_set_fe">
856 <title>FE_SET_FRONTEND</title>
857 <para>DESCRIPTION
858 </para>
859 <informaltable><tgroup cols="1"><tbody><row><entry
860  align="char">
861 <para>This ioctl call starts a tuning operation using specified parameters. The result
862  of this call will be successful if the parameters were valid and the tuning could
863  be initiated. The result of the tuning operation in itself, however, will arrive
864  asynchronously as an event (see documentation for FE_GET_EVENT and
865  FrontendEvent.) If a new FE_SET_FRONTEND operation is initiated before
866  the previous one was completed, the previous operation will be aborted in favor
867  of the new one. This command requires read/write access to the device.</para>
868 </entry>
869  </row></tbody></tgroup></informaltable>
871 <para>SYNOPSIS
872 </para>
873 <informaltable><tgroup cols="1"><tbody><row><entry
874  align="char">
875 <para>int ioctl(int fd, int request = FE_SET_FRONTEND,
876  struct dvb_frontend_parameters &#x22C6;p);</para>
877 </entry>
878  </row></tbody></tgroup></informaltable>
879 <para>PARAMETERS
880 </para>
881 <informaltable><tgroup cols="2"><tbody><row><entry
882  align="char">
883 <para>int fd</para>
884 </entry><entry
885  align="char">
886 <para>File descriptor returned by a previous call to open().</para>
887 </entry>
888  </row><row><entry
889  align="char">
890 <para>int request</para>
891 </entry><entry
892  align="char">
893 <para>Equals FE_SET_FRONTEND for this command.</para>
894 </entry>
895  </row><row><entry
896  align="char">
897 <para>struct
898  dvb_frontend_parameters
899  *p</para>
900 </entry><entry
901  align="char">
902 <para>Points to parameters for tuning operation.</para>
903 </entry>
904  </row></tbody></tgroup></informaltable>
905 <para>ERRORS
906 </para>
907 <informaltable><tgroup cols="2"><tbody><row><entry
908  align="char">
909 <para>EBADF</para>
910 </entry><entry
911  align="char">
912 <para>fd is not a valid open file descriptor.</para>
913 </entry>
914  </row><row><entry
915  align="char">
916 <para>EFAULT</para>
917 </entry><entry
918  align="char">
919 <para>p points to invalid address.</para>
920 </entry>
921  </row><row><entry
922  align="char">
923 <para>EINVAL</para>
924 </entry><entry
925  align="char">
926 <para>Maximum supported symbol rate reached.</para>
927 </entry>
928 </row></tbody></tgroup></informaltable>
929 </section>
931 <section id="frontend_get_fe">
932 <title>FE_GET_FRONTEND</title>
933 <para>DESCRIPTION
934 </para>
935 <informaltable><tgroup cols="1"><tbody><row><entry
936  align="char">
937 <para>This ioctl call queries the currently effective frontend parameters. For this
938  command, read-only access to the device is sufficient.</para>
939 </entry>
940  </row></tbody></tgroup></informaltable>
942 <para>SYNOPSIS
943 </para>
944 <informaltable><tgroup cols="1"><tbody><row><entry
945  align="char">
946 <para>int ioctl(int fd, int request = FE_GET_FRONTEND,
947  struct dvb_frontend_parameters &#x22C6;p);</para>
948 </entry>
949  </row></tbody></tgroup></informaltable>
951 <para>PARAMETERS
952 </para>
953 <informaltable><tgroup cols="2"><tbody><row><entry
954  align="char">
955 <para>int fd</para>
956 </entry><entry
957  align="char">
958 <para>File descriptor returned by a previous call to open().</para>
959 </entry>
960  </row><row><entry
961  align="char">
962 <para>int request</para>
963 </entry><entry
964  align="char">
965 <para>Equals FE_SET_FRONTEND for this command.</para>
966 </entry>
967  </row><row><entry
968  align="char">
969 <para>struct
970  dvb_frontend_parameters
971  *p</para>
972 </entry><entry
973  align="char">
974 <para>Points to parameters for tuning operation.</para>
975 </entry>
976  </row></tbody></tgroup></informaltable>
978 <para>ERRORS
979 </para>
981 <informaltable><tgroup cols="2"><tbody><row><entry
982  align="char">
983 <para>EBADF</para>
984 </entry><entry
985  align="char">
986 <para>fd is not a valid open file descriptor.</para>
987 </entry>
988  </row><row><entry
989  align="char">
990 <para>EFAULT</para>
991 </entry><entry
992  align="char">
993 <para>p points to invalid address.</para>
994 </entry>
995  </row><row><entry
996  align="char">
997 <para>EINVAL</para>
998 </entry><entry
999  align="char">
1000 <para>Maximum supported symbol rate reached.</para>
1001 </entry>
1002  </row></tbody></tgroup></informaltable>
1004 </section>
1006 <section id="frontend_get_event">
1007 <title>FE_GET_EVENT</title>
1008 <para>DESCRIPTION
1009 </para>
1010 <informaltable><tgroup cols="1"><tbody><row><entry
1011  align="char">
1012 <para>This ioctl call returns a frontend event if available. If an event is not
1013  available, the behavior depends on whether the device is in blocking or
1014  non-blocking mode. In the latter case, the call fails immediately with errno
1015  set to EWOULDBLOCK. In the former case, the call blocks until an event
1016  becomes available.</para>
1017 </entry>
1018  </row><row><entry
1019  align="char">
1020 <para>The standard Linux poll() and/or select() system calls can be used with the
1021  device file descriptor to watch for new events. For select(), the file descriptor
1022  should be included in the exceptfds argument, and for poll(), POLLPRI should
1023  be specified as the wake-up condition. Since the event queue allocated is
1024  rather small (room for 8 events), the queue must be serviced regularly to avoid
1025  overflow. If an overflow happens, the oldest event is discarded from the queue,
1026  and an error (EOVERFLOW) occurs the next time the queue is read. After
1027  reporting the error condition in this fashion, subsequent FE_GET_EVENT
1028  calls will return events from the queue as usual.</para>
1029 </entry>
1030  </row><row><entry
1031  align="char">
1032 <para>For the sake of implementation simplicity, this command requires read/write
1033  access to the device.</para>
1034 </entry>
1035  </row></tbody></tgroup></informaltable>
1037 <para>SYNOPSIS
1038 </para>
1039 <informaltable><tgroup cols="1"><tbody><row><entry
1040  align="char">
1041 <para>int ioctl(int fd, int request = QPSK_GET_EVENT,
1042  struct dvb_frontend_event &#x22C6;ev);</para>
1043 </entry>
1044  </row></tbody></tgroup></informaltable>
1046 <para>PARAMETERS
1047 </para>
1048 <informaltable><tgroup cols="2"><tbody><row><entry
1049  align="char">
1050 <para>int fd</para>
1051 </entry><entry
1052  align="char">
1053 <para>File descriptor returned by a previous call to open().</para>
1054 </entry>
1055  </row><row><entry
1056  align="char">
1057 <para>int request</para>
1058 </entry><entry
1059  align="char">
1060 <para>Equals FE_GET_EVENT for this command.</para>
1061 </entry>
1062  </row><row><entry
1063  align="char">
1064 <para>struct
1065  dvb_frontend_event
1066  *ev</para>
1067 </entry><entry
1068  align="char">
1069 <para>Points to the location where the event,</para>
1070 </entry>
1071  </row><row><entry
1072  align="char">
1073 </entry><entry
1074  align="char">
1075 <para>if any, is to be stored.</para>
1076 </entry>
1077  </row></tbody></tgroup></informaltable>
1079 <para>ERRORS
1080 </para>
1081 <informaltable><tgroup cols="2"><tbody><row><entry
1082  align="char">
1083 <para>EBADF</para>
1084 </entry><entry
1085  align="char">
1086 <para>fd is not a valid open file descriptor.</para>
1087 </entry>
1088  </row><row><entry
1089  align="char">
1090 <para>EFAULT</para>
1091 </entry><entry
1092  align="char">
1093 <para>ev points to invalid address.</para>
1094 </entry>
1095  </row><row><entry
1096  align="char">
1097 <para>EWOULDBLOCK</para>
1098 </entry><entry
1099  align="char">
1100 <para>There is no event pending, and the device is in
1101  non-blocking mode.</para>
1102 </entry>
1103  </row><row><entry
1104  align="char">
1105 <para>EOVERFLOW</para>
1106 </entry><entry
1107  align="char">
1108 </entry>
1109  </row><row><entry
1110  align="char">
1111 </entry><entry
1112  align="char">
1113 <para>Overflow in event queue - one or more events were lost.</para>
1114 </entry>
1115 </row></tbody></tgroup></informaltable>
1116 </section>
1118 <section id="frontend_get_info">
1119 <title>FE_GET_INFO</title>
1120 <para>DESCRIPTION
1121 </para>
1122 <informaltable><tgroup cols="1"><tbody><row><entry
1123  align="char">
1124 <para>This ioctl call returns information about the front-end. This call only requires
1125  read-only access to the device.</para>
1126 </entry>
1127  </row></tbody></tgroup></informaltable>
1128 <para>SYNOPSIS
1129 </para>
1131 <informaltable><tgroup cols="1"><tbody><row><entry
1132  align="char">
1133 <para> int ioctl(int fd, int request = FE_GET_INFO, struct
1134  dvb_frontend_info &#x22C6;info);</para>
1135 </entry>
1136  </row></tbody></tgroup></informaltable>
1137 <para>PARAMETERS
1138 </para>
1140 <informaltable><tgroup cols="2"><tbody><row><entry
1141  align="char">
1142 <para>int fd</para>
1143 </entry><entry
1144  align="char">
1145 <para>File descriptor returned by a previous call to open().</para>
1146 </entry>
1147  </row><row><entry
1148  align="char">
1149 <para>int request</para>
1150 </entry><entry
1151  align="char">
1152 <para>Equals FE_GET_INFO for this command.</para>
1153 </entry>
1154  </row><row><entry
1155  align="char">
1156 <para>struct
1157  dvb_frontend_info
1158  *info</para>
1159 </entry><entry
1160  align="char">
1161 <para>Points to the location where the front-end information is
1162  to be stored.</para>
1163 </entry>
1164  </row></tbody></tgroup></informaltable>
1165 <para>ERRORS
1166 </para>
1167 <informaltable><tgroup cols="2"><tbody><row><entry
1168  align="char">
1169 <para>EBADF</para>
1170 </entry><entry
1171  align="char">
1172 <para>fd is not a valid open file descriptor.</para>
1173 </entry>
1174  </row><row><entry
1175  align="char">
1176 <para>EFAULT</para>
1177 </entry><entry
1178  align="char">
1179 <para>info points to invalid address.</para>
1180 </entry>
1181 </row></tbody></tgroup></informaltable>
1182 </section>
1184 <section id="frontend_diseqc_reset_overload">
1185 <title>FE_DISEQC_RESET_OVERLOAD</title>
1186 <para>DESCRIPTION
1187 </para>
1188 <informaltable><tgroup cols="1"><tbody><row><entry
1189  align="char">
1190 <para>If the bus has been automatically powered off due to power overload, this ioctl
1191  call restores the power to the bus. The call requires read/write access to the
1192  device. This call has no effect if the device is manually powered off. Not all
1193  DVB adapters support this ioctl.</para>
1194 </entry>
1195  </row></tbody></tgroup></informaltable>
1197 <para>SYNOPSIS
1198 </para>
1199 <informaltable><tgroup cols="1"><tbody><row><entry
1200  align="char">
1201 <para>int ioctl(int fd, int request =
1202  FE_DISEQC_RESET_OVERLOAD);</para>
1203 </entry>
1204  </row></tbody></tgroup></informaltable>
1205 <para>PARAMETERS
1206 </para>
1207 <informaltable><tgroup cols="2"><tbody><row><entry
1208  align="char">
1209 <para>int fd</para>
1210 </entry><entry
1211  align="char">
1212 <para>File descriptor returned by a previous call to open().</para>
1213 </entry>
1214  </row><row><entry
1215  align="char">
1216 <para>int request</para>
1217 </entry><entry
1218  align="char">
1219 <para>Equals FE_DISEQC_RESET_OVERLOAD for this
1220  command.</para>
1221 </entry>
1222  </row></tbody></tgroup></informaltable>
1224 <para>ERRORS
1225 </para>
1226 <informaltable><tgroup cols="2"><tbody><row><entry
1227  align="char">
1228 <para>EBADF</para>
1229 </entry><entry
1230  align="char">
1231 <para>fd is not a valid file descriptor.</para>
1232 </entry>
1233  </row><row><entry
1234  align="char">
1235 <para>EPERM</para>
1236 </entry><entry
1237  align="char">
1238 <para>Permission denied (needs read/write access).</para>
1239 </entry>
1240  </row><row><entry
1241  align="char">
1242 <para>EINTERNAL</para>
1243 </entry><entry
1244  align="char">
1245 <para>Internal error in the device driver.</para>
1246 </entry>
1247 </row></tbody></tgroup></informaltable>
1248 </section>
1250 <section id="frontend_diseqc_send_master_cmd">
1251 <title>FE_DISEQC_SEND_MASTER_CMD</title>
1252 <para>DESCRIPTION
1253 </para>
1254 <informaltable><tgroup cols="1"><tbody><row><entry
1255  align="char">
1256 <para>This ioctl call is used to send a a DiSEqC command.</para>
1257 </entry>
1258  </row></tbody></tgroup></informaltable>
1259 <para>SYNOPSIS
1260 </para>
1261 <informaltable><tgroup cols="1"><tbody><row><entry
1262  align="char">
1263 <para>int ioctl(int fd, int request =
1264  FE_DISEQC_SEND_MASTER_CMD, struct
1265  dvb_diseqc_master_cmd &#x22C6;cmd);</para>
1266 </entry>
1267  </row></tbody></tgroup></informaltable>
1269 <para>PARAMETERS
1270 </para>
1271 <informaltable><tgroup cols="2"><tbody><row><entry
1272  align="char">
1273 <para>int fd</para>
1274 </entry><entry
1275  align="char">
1276 <para>File descriptor returned by a previous call to open().</para>
1277 </entry>
1278  </row><row><entry
1279  align="char">
1280 <para>int request</para>
1281 </entry><entry
1282  align="char">
1283 <para>Equals FE_DISEQC_SEND_MASTER_CMD for this
1284  command.</para>
1285 </entry>
1286  </row><row><entry
1287  align="char">
1288 <para>struct
1289  dvb_diseqc_master_cmd
1290  *cmd</para>
1291 </entry><entry
1292  align="char">
1293 <para>Pointer to the command to be transmitted.</para>
1294 </entry>
1295  </row></tbody></tgroup></informaltable>
1297 <para>ERRORS
1298 </para>
1299 <informaltable><tgroup cols="2"><tbody><row><entry
1300  align="char">
1301 <para>EBADF</para>
1302 </entry><entry
1303  align="char">
1304 <para>fd is not a valid file descriptor.</para>
1305 </entry>
1306  </row><row><entry
1307  align="char">
1308 <para>EFAULT</para>
1309 </entry><entry
1310  align="char">
1311 <para>Seq points to an invalid address.</para>
1312 </entry>
1313  </row><row><entry
1314  align="char">
1315 <para>EINVAL</para>
1316 </entry><entry
1317  align="char">
1318 <para>The data structure referred to by seq is invalid in some
1319  way.</para>
1320 </entry>
1321  </row><row><entry
1322  align="char">
1323 <para>EPERM</para>
1324 </entry><entry
1325  align="char">
1326 <para>Permission denied (needs read/write access).</para>
1327 </entry>
1328  </row><row><entry
1329  align="char">
1330 <para>EINTERNAL</para>
1331 </entry><entry
1332  align="char">
1333 <para>Internal error in the device driver.</para>
1334 </entry>
1335 </row></tbody></tgroup></informaltable>
1336 </section>
1338 <section id="frontend_diseqc_recv_slave_reply">
1339 <title>FE_DISEQC_RECV_SLAVE_REPLY</title>
1340 <para>DESCRIPTION
1341 </para>
1342 <informaltable><tgroup cols="1"><tbody><row><entry
1343  align="char">
1344 <para>This ioctl call is used to receive reply to a DiSEqC 2.0 command.</para>
1345 </entry>
1346  </row></tbody></tgroup></informaltable>
1348 <para>SYNOPSIS
1349 </para>
1350 <informaltable><tgroup cols="1"><tbody><row><entry
1351  align="char">
1352 <para>int ioctl(int fd, int request =
1353  FE_DISEQC_RECV_SLAVE_REPLY, struct
1354  dvb_diseqc_slave_reply &#x22C6;reply);</para>
1355 </entry>
1356  </row></tbody></tgroup></informaltable>
1358 <para>PARAMETERS
1359 </para>
1360 <informaltable><tgroup cols="2"><tbody><row><entry
1361  align="char">
1362 <para>int fd</para>
1363 </entry><entry
1364  align="char">
1365 <para>File descriptor returned by a previous call to open().</para>
1366 </entry>
1367  </row><row><entry
1368  align="char">
1369 <para>int request</para>
1370 </entry><entry
1371  align="char">
1372 <para>Equals FE_DISEQC_RECV_SLAVE_REPLY for this
1373  command.</para>
1374 </entry>
1375  </row><row><entry
1376  align="char">
1377 <para>struct
1378  dvb_diseqc_slave_reply
1379  *reply</para>
1380 </entry><entry
1381  align="char">
1382 <para>Pointer to the command to be received.</para>
1383 </entry>
1384  </row></tbody></tgroup></informaltable>
1385 <para>ERRORS
1386 </para>
1387 <informaltable><tgroup cols="2"><tbody><row><entry
1388  align="char">
1389 <para>EBADF</para>
1390 </entry><entry
1391  align="char">
1392 <para>fd is not a valid file descriptor.</para>
1393 </entry>
1394  </row><row><entry
1395  align="char">
1396 <para>EFAULT</para>
1397 </entry><entry
1398  align="char">
1399 <para>Seq points to an invalid address.</para>
1400 </entry>
1401  </row><row><entry
1402  align="char">
1403 <para>EINVAL</para>
1404 </entry><entry
1405  align="char">
1406 <para>The data structure referred to by seq is invalid in some
1407  way.</para>
1408 </entry>
1409  </row><row><entry
1410  align="char">
1411 <para>EPERM</para>
1412 </entry><entry
1413  align="char">
1414 <para>Permission denied (needs read/write access).</para>
1415 </entry>
1416  </row><row><entry
1417  align="char">
1418 <para>EINTERNAL</para>
1419 </entry><entry
1420  align="char">
1421 <para>Internal error in the device driver.</para>
1422 </entry>
1423  </row></tbody></tgroup></informaltable>
1424 </section>
1426 <section id="frontend_diseqc_send_burst">
1427 <title>FE_DISEQC_SEND_BURST</title>
1428 <para>DESCRIPTION
1429 </para>
1430 <informaltable><tgroup cols="1"><tbody><row><entry
1431  align="char">
1432 <para>This ioctl call is used to send a 22KHz tone burst.</para>
1433 </entry>
1434  </row></tbody></tgroup></informaltable>
1436 <para>SYNOPSIS
1437 </para>
1438 <informaltable><tgroup cols="1"><tbody><row><entry
1439  align="char">
1440 <para>int ioctl(int fd, int request =
1441  FE_DISEQC_SEND_BURST, fe_sec_mini_cmd_t burst);</para>
1442 </entry>
1443  </row></tbody></tgroup></informaltable>
1445 <para>PARAMETERS
1446 </para>
1447 <informaltable><tgroup cols="2"><tbody><row><entry
1448  align="char">
1449 <para>int fd</para>
1450 </entry><entry
1451  align="char">
1452 <para>File descriptor returned by a previous call to open().</para>
1453 </entry>
1454  </row><row><entry
1455  align="char">
1456 <para>int request</para>
1457 </entry><entry
1458  align="char">
1459 <para>Equals FE_DISEQC_SEND_BURST for this command.</para>
1460 </entry>
1461  </row><row><entry
1462  align="char">
1463 <para>fe_sec_mini_cmd_t
1464  burst</para>
1465 </entry><entry
1466  align="char">
1467 <para>burst A or B.</para>
1468 </entry>
1469  </row></tbody></tgroup></informaltable>
1471 <para>ERRORS
1472 </para>
1473 <informaltable><tgroup cols="2"><tbody><row><entry
1474  align="char">
1475 <para>EBADF</para>
1476 </entry><entry
1477  align="char">
1478 <para>fd is not a valid file descriptor.</para>
1479 </entry>
1480  </row><row><entry
1481  align="char">
1482 <para>EFAULT</para>
1483 </entry><entry
1484  align="char">
1485 <para>Seq points to an invalid address.</para>
1486 </entry>
1487  </row><row><entry
1488  align="char">
1489 <para>EINVAL</para>
1490 </entry><entry
1491  align="char">
1492 <para>The data structure referred to by seq is invalid in some
1493  way.</para>
1494 </entry>
1495  </row><row><entry
1496  align="char">
1497 <para>EPERM</para>
1498 </entry><entry
1499  align="char">
1500 <para>Permission denied (needs read/write access).</para>
1501 </entry>
1502  </row><row><entry
1503  align="char">
1504 <para>EINTERNAL</para>
1505 </entry><entry
1506  align="char">
1507 <para>Internal error in the device driver.</para>
1508 </entry>
1509 </row></tbody></tgroup></informaltable>
1510 </section>
1512 <section id="frontend_set_tone">
1513 <title>FE_SET_TONE</title>
1514 <para>DESCRIPTION
1515 </para>
1516 <informaltable><tgroup cols="1"><tbody><row><entry
1517  align="char">
1518 <para>This call is used to set the generation of the continuous 22kHz tone. This call
1519  requires read/write permissions.</para>
1520 </entry>
1521  </row></tbody></tgroup></informaltable>
1522 <para>SYNOPSIS
1523 </para>
1524 <informaltable><tgroup cols="1"><tbody><row><entry
1525  align="char">
1526 <para>int ioctl(int fd, int request = FE_SET_TONE,
1527  fe_sec_tone_mode_t tone);</para>
1528 </entry>
1529  </row></tbody></tgroup></informaltable>
1530 <para>PARAMETERS
1531 </para>
1532 <informaltable><tgroup cols="2"><tbody><row><entry
1533  align="char">
1534 <para>int fd</para>
1535 </entry><entry
1536  align="char">
1537 <para>File descriptor returned by a previous call to open().</para>
1538 </entry>
1539  </row><row><entry
1540  align="char">
1541 <para>int request</para>
1542 </entry><entry
1543  align="char">
1544 <para>Equals FE_SET_TONE for this command.</para>
1545 </entry>
1546  </row><row><entry
1547  align="char">
1548 <para>fe_sec_tone_mode_t
1549  tone</para>
1550 </entry><entry
1551  align="char">
1552 <para>The requested tone generation mode (on/off).</para>
1553 </entry>
1554  </row></tbody></tgroup></informaltable>
1555 <para>ERRORS
1556 </para>
1557 <informaltable><tgroup cols="2"><tbody><row><entry
1558  align="char">
1559 <para>ENODEV</para>
1560 </entry><entry
1561  align="char">
1562 <para>Device driver not loaded/available.</para>
1563 </entry>
1564  </row><row><entry
1565  align="char">
1566 <para>EBUSY</para>
1567 </entry><entry
1568  align="char">
1569 <para>Device or resource busy.</para>
1570 </entry>
1571  </row><row><entry
1572  align="char">
1573 <para>EINVAL</para>
1574 </entry><entry
1575  align="char">
1576 <para>Invalid argument.</para>
1577 </entry>
1578  </row><row><entry
1579  align="char">
1580 <para>EPERM</para>
1581 </entry><entry
1582  align="char">
1583 <para>File not opened with read permissions.</para>
1584 </entry>
1585  </row><row><entry
1586  align="char">
1587 <para>EINTERNAL</para>
1588 </entry><entry
1589  align="char">
1590 <para>Internal error in the device driver.</para>
1591 </entry>
1592 </row></tbody></tgroup></informaltable>
1593 </section>
1595 <section id="fe_set_voltage">
1596 <title>FE_SET_VOLTAGE</title>
1597 <para>DESCRIPTION
1598 </para>
1599 <informaltable><tgroup cols="1"><tbody><row><entry
1600  align="char">
1601 <para>This call is used to set the bus voltage. This call requires read/write
1602  permissions.</para>
1603 </entry>
1604  </row></tbody></tgroup></informaltable>
1605 <para>SYNOPSIS
1606 </para>
1607 <informaltable><tgroup cols="1"><tbody><row><entry
1608  align="char">
1609 <para>int ioctl(int fd, int request = FE_SET_VOLTAGE,
1610  fe_sec_voltage_t voltage);</para>
1611 </entry>
1612  </row></tbody></tgroup></informaltable>
1614 <para>PARAMETERS
1615 </para>
1616 <informaltable><tgroup cols="2"><tbody><row><entry
1617  align="char">
1618 <para>int fd</para>
1619 </entry><entry
1620  align="char">
1621 <para>File descriptor returned by a previous call to open().</para>
1622 </entry>
1623  </row><row><entry
1624  align="char">
1625 <para>int request</para>
1626 </entry><entry
1627  align="char">
1628 <para>Equals FE_SET_VOLTAGE for this command.</para>
1629 </entry>
1630  </row><row><entry
1631  align="char">
1632 <para>fe_sec_voltage_t
1633  voltage</para>
1634 </entry><entry
1635  align="char">
1636 <para>The requested bus voltage.</para>
1637 </entry>
1638  </row></tbody></tgroup></informaltable>
1640 <para>ERRORS
1641 </para>
1642 <informaltable><tgroup cols="2"><tbody><row><entry
1643  align="char">
1644 <para>ENODEV</para>
1645 </entry><entry
1646  align="char">
1647 <para>Device driver not loaded/available.</para>
1648 </entry>
1649  </row><row><entry
1650  align="char">
1651 <para>EBUSY</para>
1652 </entry><entry
1653  align="char">
1654 <para>Device or resource busy.</para>
1655 </entry>
1656  </row><row><entry
1657  align="char">
1658 <para>EINVAL</para>
1659 </entry><entry
1660  align="char">
1661 <para>Invalid argument.</para>
1662 </entry>
1663  </row><row><entry
1664  align="char">
1665 <para>EPERM</para>
1666 </entry><entry
1667  align="char">
1668 <para>File not opened with read permissions.</para>
1669 </entry>
1670  </row><row><entry
1671  align="char">
1672 <para>EINTERNAL</para>
1673 </entry><entry
1674  align="char">
1675 <para>Internal error in the device driver.</para>
1676 </entry>
1677  </row></tbody></tgroup></informaltable>
1678 </section>
1680 <section id="frontend_enable_high_lnb_volt">
1681 <title>FE_ENABLE_HIGH_LNB_VOLTAGE</title>
1682 <para>DESCRIPTION
1683 </para>
1684 <informaltable><tgroup cols="1"><tbody><row><entry
1685  align="char">
1686 <para>If high != 0 enables slightly higher voltages instead of 13/18V (to compensate
1687  for long cables). This call requires read/write permissions. Not all DVB
1688  adapters support this ioctl.</para>
1689 </entry>
1690  </row></tbody></tgroup></informaltable>
1692 <para>SYNOPSIS
1693 </para>
1694 <informaltable><tgroup cols="1"><tbody><row><entry
1695  align="char">
1696 <para>int ioctl(int fd, int request =
1697  FE_ENABLE_HIGH_LNB_VOLTAGE, int high);</para>
1698 </entry>
1699  </row></tbody></tgroup></informaltable>
1701 <para>PARAMETERS
1702 </para>
1703 <informaltable><tgroup cols="2"><tbody><row><entry
1704  align="char">
1705 <para>int fd</para>
1706 </entry><entry
1707  align="char">
1708 <para>File descriptor returned by a previous call to open().</para>
1709 </entry>
1710  </row><row><entry
1711  align="char">
1712 <para>int request</para>
1713 </entry><entry
1714  align="char">
1715 <para>Equals FE_SET_VOLTAGE for this command.</para>
1716 </entry>
1717  </row><row><entry
1718  align="char">
1719 <para>int high</para>
1720 </entry><entry
1721  align="char">
1722 <para>The requested bus voltage.</para>
1723 </entry>
1724  </row></tbody></tgroup></informaltable>
1726 <para>ERRORS
1727 </para>
1728 <informaltable><tgroup cols="2"><tbody><row><entry
1729  align="char">
1730 <para>ENODEV</para>
1731 </entry><entry
1732  align="char">
1733 <para>Device driver not loaded/available.</para>
1734 </entry>
1735  </row><row><entry
1736  align="char">
1737 <para>EBUSY</para>
1738 </entry><entry
1739  align="char">
1740 <para>Device or resource busy.</para>
1741 </entry>
1742  </row><row><entry
1743  align="char">
1744 <para>EINVAL</para>
1745 </entry><entry
1746  align="char">
1747 <para>Invalid argument.</para>
1748 </entry>
1749  </row><row><entry
1750  align="char">
1751 <para>EPERM</para>
1752 </entry><entry
1753  align="char">
1754 <para>File not opened with read permissions.</para>
1755 </entry>
1756  </row><row><entry
1757  align="char">
1758 <para>EINTERNAL</para>
1759 </entry><entry
1760  align="char">
1761 <para>Internal error in the device driver.</para>
1762 </entry>
1763  </row></tbody></tgroup></informaltable>
1764 </section>
1765 </section>
1766 &sub-isdbt;