at v2.6.32 1766 lines 47 kB view raw
1<title>DVB Frontend API</title> 2 3<para>The DVB frontend device controls the tuner and DVB demodulator 4hardware. It can be accessed through <emphasis 5role="tt">/dev/dvb/adapter0/frontend0</emphasis>. Data types and and 6ioctl definitions can be accessed by including <emphasis 7role="tt">linux/dvb/frontend.h</emphasis> in your application.</para> 8 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) 11is not yet handled by this API but a future extension is possible. For 12DVB-S the frontend device also supports satellite equipment control 13(SEC) via DiSEqC and V-SEC protocols. The DiSEqC (digital SEC) 14specification is available from 15<ulink url="http://www.eutelsat.com/satellites/4_5_5.html">Eutelsat</ulink>.</para> 16 17<para>Note that the DVB API may also be used for MPEG decoder-only PCI 18cards, in which case there exists no frontend device.</para> 19 20<section id="frontend_types"> 21<title>Frontend Data Types</title> 22 23<section id="frontend_type"> 24<title>frontend type</title> 25 26<para>For historical reasons frontend types are named after the type of modulation used in 27transmission.</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> 35 36</section> 37 38<section id="frontend_caps"> 39<title>frontend capabilities</title> 40 41<para>Capabilities describe what a frontend can do. Some capabilities can only be supported for 42a 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> 72 73<section id="frontend_info"> 74<title>frontend information</title> 75 76<para>Information about the frontend ca be queried with FE_GET_INFO.</para> 77 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> 94 95<section id="frontend_diseqc"> 96<title>diseqc master command</title> 97 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> 108 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> 118 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 123consistently 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> 131 132<section id="frontend_sec_tone"> 133<title>SEC continuous tone</title> 134 135<para>The continous 22KHz tone is usually used with non-DiSEqC capable LNBs to switch the 136high/low band of a dual-band LNB. When using DiSEqC epuipment this voltage has to 137be switched consistently to the DiSEqC commands as described in the DiSEqC 138spec.</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> 146 147<section id="frontend_sec_burst"> 148<title>SEC tone burst</title> 149 150<para>The 22KHz tone burst is usually used with non-DiSEqC capable switches to select 151between two connected LNBs/satellites. When using DiSEqC epuipment this voltage has to 152be switched consistently to the DiSEqC commands as described in the DiSEqC 153spec.</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> 160 161<para></para> 162</section> 163 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 167by</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> 181 182</section> 183 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 187the kind of hardware you are using. All kinds of parameters are combined as an 188union 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 230frequency, i.e. the offset which is effectively added to the local oscillator frequency (LOF) of 231the LNB. The intermediate frequency has to be specified in units of kHz. For QAM and 232OFDM frontends the Frequency specifies the absolute frequency and is given in 233Hz. 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 246itself. 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 265detection. 266</para> 267<para>For cable and terrestrial frontends (QAM and OFDM) one also has to specify the quadrature 268modulation 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> 316 317</section> 318 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> 329 330 331<section id="frontend_fcalls"> 332<title>Frontend Function Calls</title> 333 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> 359 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> 440 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> 480 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> 501 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> 544 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> 621 622<section id="frontend_read_snr"> 623<title>FE_READ_SNR</title> 624 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> 665 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> 699 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> 718 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> 777 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> 854 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> 870 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> 930 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> 941 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> 950 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> 977 978<para>ERRORS 979</para> 980 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> 1003 1004</section> 1005 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> 1036 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> 1045 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> 1078 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> 1117 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> 1130 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> 1139 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> 1183 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> 1196 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> 1223 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> 1249 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> 1268 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> 1296 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> 1337 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> 1347 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> 1357 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> 1425 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> 1435 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> 1444 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> 1470 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> 1511 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> 1594 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> 1613 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> 1639 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> 1679 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> 1691 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> 1700 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> 1725 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;