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