STRUCT DTV_FRONTEND_PROPERTIES(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct dtv_frontend_properties(9) πŸ’–

okay so bestie, welcome to the Kernel API Manual ✨ β€” this one's all about struct dtv_frontend_properties, and honestly? it's kind of a big deal. πŸŽ€


🌸 NAME 🌸

struct dtv_frontend_properties β€” the icon herself πŸ‘‘, a struct that contains a list of properties that are specific to a digital TV standard. like, every vibe a DTV signal could possibly have, all in one place. periodt. πŸ’…


✨ SYNOPSIS ✨

struct dtv_frontend_properties {
    u32 frequency;
    enum fe_modulation      modulation;
    enum fe_sec_voltage     voltage;
    enum fe_sec_tone_mode   sectone;
    enum fe_spectral_inversion inversion;
    enum fe_code_rate       fec_inner;
    enum fe_transmit_mode   transmission_mode;
    u32 bandwidth_hz;
    enum fe_guard_interval  guard_interval;
    enum fe_hierarchy       hierarchy;
    u32 symbol_rate;
    enum fe_code_rate       code_rate_HP;
    enum fe_code_rate       code_rate_LP;
    enum fe_pilot           pilot;
    enum fe_rolloff         rolloff;
    enum fe_delivery_system delivery_system;
    enum fe_interleaving    interleaving;
    u8 isdbt_partial_reception;
    u8 isdbt_sb_mode;
    u8 isdbt_sb_subchannel;
    u32 isdbt_sb_segment_idx;
    u32 isdbt_sb_segment_count;
    u8 isdbt_layer_enabled;
    struct {
      u8 segment_count;
      enum fe_code_rate   fec;
      enum fe_modulation  modulation;
      u8 interleaving;
    } layer[3];
    u32 stream_id;
    u32 scrambling_sequence_index;
    u8 atscmh_fic_ver;
    u8 atscmh_parade_id;
    u8 atscmh_nog;
    u8 atscmh_tnog;
    u8 atscmh_sgn;
    u8 atscmh_prc;
    u8 atscmh_rs_frame_mode;
    u8 atscmh_rs_frame_ensemble;
    u8 atscmh_rs_code_mode_pri;
    u8 atscmh_rs_code_mode_sec;
    u8 atscmh_sccc_block_mode;
    u8 atscmh_sccc_code_mode_a;
    u8 atscmh_sccc_code_mode_b;
    u8 atscmh_sccc_code_mode_c;
    u8 atscmh_sccc_code_mode_d;
    u32 lna;
    struct dtv_fe_stats     strength;
    struct dtv_fe_stats     cnr;
    struct dtv_fe_stats     pre_bit_error;
    struct dtv_fe_stats     pre_bit_count;
    struct dtv_fe_stats     post_bit_error;
    struct dtv_fe_stats     post_bit_count;
    struct dtv_fe_stats     block_error;
    struct dtv_fe_stats     block_count;
 };

like… look at all those fields. she's thriving. πŸ¦‹


πŸŽ€ MEMBERS πŸŽ€

okay, going through every single one of these, no skips, no cap 🫢

  • frequency β€” frequency in Hz for terrestrial/cable or in kHz for Satellite. yes, the units CHANGE depending on what you're tuning, so pay attention bestie 😭
  • modulation β€” Frontend modulation type ✨
  • voltage β€” SEC voltage (only Satellite)
  • sectone β€” SEC tone mode (only Satellite)
  • inversion β€” Spectral inversion
  • fec_inner β€” Forward error correction inner Code Rate
  • transmission_mode β€” Transmission Mode
  • bandwidth_hz β€” Bandwidth, in Hz. A zero value means that userspace wants to autodetect. πŸ‘€
  • guard_interval β€” Guard Interval
  • hierarchy β€” Hierarchy
  • symbol_rate β€” Symbol Rate
  • code_rate_HP β€” high priority stream code rate
  • code_rate_LP β€” low priority stream code rate
  • pilot β€” Enable/disable/autodetect pilot tones
  • rolloff β€” Rolloff factor (alpha)
  • delivery_system β€” FE delivery system (e. g. digital TV standard). this is the main character of the whole struct ngl 🌟
  • interleaving β€” interleaving
  • isdbt_partial_reception β€” ISDB-T partial reception (only ISDB standard)
  • isdbt_sb_mode β€” ISDB-T Sound Broadcast (SB) mode (only ISDB standard)
  • isdbt_sb_subchannel β€” ISDB-T SB subchannel (only ISDB standard)
  • isdbt_sb_segment_idx β€” ISDB-T SB segment index (only ISDB standard)
  • isdbt_sb_segment_count β€” ISDB-T SB segment count (only ISDB standard)
  • isdbt_layer_enabled β€” ISDB Layer enabled (only ISDB standard)
  • layer β€” ISDB per-layer data (only ISDB standard)
    • layer.segment_count β€” Segment Count;
    • layer.fec β€” per layer code rate;
    • layer.modulation β€” per layer modulation;
    • layer.interleaving β€” per layer interleaving.
  • stream_id β€” If different than zero, enable substream filtering, if hardware supports (DVB-S2 and DVB-T2). note the "if hardware supports" β€” that's not a guarantee, bestie πŸ™ˆ
  • scrambling_sequence_index β€” Carries the index of the DVB-S2 physical layer scrambling sequence.
  • atscmh_fic_ver β€” Version number of the FIC (Fast Information Channel) signaling data (only ATSC-M/H)
  • atscmh_parade_id β€” Parade identification number (only ATSC-M/H)
  • atscmh_nog β€” Number of MH groups per MH subframe for a designated parade (only ATSC-M/H)
  • atscmh_tnog β€” Total number of MH groups including all MH groups belonging to all MH parades in one MH subframe (only ATSC-M/H)
  • atscmh_sgn β€” Start group number (only ATSC-M/H)
  • atscmh_prc β€” Parade repetition cycle (only ATSC-M/H)
  • atscmh_rs_frame_mode β€” Reed Solomon (RS) frame mode (only ATSC-M/H)
  • atscmh_rs_frame_ensemble β€” RS frame ensemble (only ATSC-M/H)
  • atscmh_rs_code_mode_pri β€” RS code mode pri (only ATSC-M/H)
  • atscmh_rs_code_mode_sec β€” RS code mode sec (only ATSC-M/H)
  • atscmh_sccc_block_mode β€” Series Concatenated Convolutional Code (SCCC) Block Mode (only ATSC-M/H)
  • atscmh_sccc_code_mode_a β€” SCCC code mode A (only ATSC-M/H)
  • atscmh_sccc_code_mode_b β€” SCCC code mode B (only ATSC-M/H)
  • atscmh_sccc_code_mode_c β€” SCCC code mode C (only ATSC-M/H)
  • atscmh_sccc_code_mode_d β€” SCCC code mode D (only ATSC-M/H)
  • lna β€” Power ON/OFF/AUTO the Linear Now-noise Amplifier (LNA). yes it literally says "Now-noise" in the source, we're keeping it verbatim, no editing, we don't touch the sacred text πŸ’€
  • strength β€” DVBv5 API statistics: Signal Strength
  • cnr β€” DVBv5 API statistics: Signal to Noise ratio of the (main) carrier
  • pre_bit_error β€” DVBv5 API statistics: pre-Viterbi bit error count
  • pre_bit_count β€” DVBv5 API statistics: pre-Viterbi bit count
  • post_bit_error β€” DVBv5 API statistics: post-Viterbi bit error count
  • post_bit_count β€” DVBv5 API statistics: post-Viterbi bit count
  • block_error β€” DVBv5 API statistics: block error count
  • block_count β€” DVBv5 API statistics: block count

πŸ’€ NOTE πŸ’€

  • derivated statistics like Uncorrected Error blocks (UCE) are calculated on userspace. so like, that math is your problem, not the kernel's, bestie 🧚
  • Only a subset of the properties are needed for a given delivery system. so don't come for the whole struct when you only need like three fields πŸ’… For more info, consult the media_api.html with the documentation of the Userspace API.
fr fr β€” read the Userspace API docs before you go poking at fields that don't apply to your delivery system. it's giving "respect the subset" energy 🌈

πŸ”₯ SEE ALSO πŸ”₯


aaaand that's the whole thing!! πŸŽ‰ this page lives in ./include/media, version dated October 2026, and it's titled struct dtv_f...d_properties(9) β€” yes the title is abbreviated with ... in the header and footer, that's just how it do πŸ’– go off, king, tune that frontend, slay βœ¨πŸ«ΆπŸ“

πŸ“¦ where this page comes from