Every DVB multiplex carries more than video and audio. Woven into the transport stream are a set of tables — collectively known as PSI/SI — that tell receivers what services exist, how to find them, what is currently playing, and when the next programme starts. Without correct PSI/SI, decoders cannot tune, EPG grids stay empty, and conditional access breaks.
This article walks through the five most important tables: PAT, PMT, NIT, SDT, and EIT.
PAT — Programme Association Table
The PAT is the entry point for any DVB receiver. It is always transmitted on PID 0 and lists every programme (service) in the multiplex along with the PID of that programme's PMT. A receiver that can read the PAT can find everything else.
The PAT is defined in ISO/IEC 13818-1 (MPEG-2 Systems) rather than the ETSI DVB specifications. It contains:
- A transport_stream_id — a 16-bit identifier for the multiplex
- One or more programme entries, each mapping a programme_number to a PMT PID
- Programme number 0 is reserved for the NIT PID
If the PAT is absent, malformed, or delayed, receivers cannot decode any service in the multiplex. TR 101 290 Priority 1 includes a PAT error check for exactly this reason.
PMT — Programme Map Table
Each service has its own PMT, transmitted on the PID identified in the PAT. The PMT maps that service to its elementary streams: which PID carries video, which carries audio, which carries subtitles or teletext, and which carries conditional access ECMs.
The PMT also carries descriptors that extend the basic mapping — for example, the CA_descriptor points to the EMM PID for a scrambled service, and the stream_identifier_descriptor links audio PIDs to their component tags used in SDT component descriptors.
A missing or incorrect PMT means a service cannot be decoded, even if the transport stream packets are present. PMT continuity errors and PID mismatches are among the most common causes of playout failures in live broadcast.
NIT — Network Information Table
The NIT carries information about the physical delivery network — the parameters an IRD needs to tune to other multiplexes in the same network. For a satellite operator, this means transponder frequencies, symbol rates, polarisation, and FEC parameters. For a cable operator, it means frequency and QAM constellation.
The NIT is carried on PID 16 (by default) and comes in two variants:
- NIT Actual (table_id 0x40) — describes the network carrying the current stream
- NIT Other (table_id 0x41) — describes other networks, used to enable cross-network navigation
The NIT also links transport streams to the network via transport_stream_loop entries, each of which can carry a service_list_descriptor identifying all services in that multiplex. This is what allows a receiver to build a complete channel list without tuning to every transponder.
SDT — Service Description Table
Where the PMT tells a receiver how to decode a service, the SDT tells it what the service is called. The SDT provides the human-readable service name (the channel name), the service type (digital television, radio, data, NVOD), and flags for scrambling state and EIT presence.
The SDT is carried on PID 17 and also has Actual and Other variants (table_ids 0x42 and 0x46). Key descriptors within the SDT include:
- service_descriptor — carries the service name and provider name as DVB text strings
- linkage_descriptor — links the service to a replacement service, mosaic, or interactive application
- CA_identifier_descriptor — indicates which CA system scrambles the service
A mismatch between the SDT and the PMT (for example, the SDT marks a service as unscrambled but the PMT references a CA descriptor) causes unpredictable behaviour in receivers. Keeping both tables consistent is essential when updating channel configurations.
EIT — Event Information Table
The EIT carries programme schedule data — the event titles, descriptions, start times, durations, content type, and parental ratings that populate the EPG grid on every receiver. It is the largest and most complex table in DVB, and also the one that requires the most ongoing maintenance.
The EIT is split into four logical sections:
- EIT p/f Actual (table_id 0x4E) — present and following events for the current transport stream
- EIT p/f Other (table_id 0x4F) — present and following for other transport streams in the network
- EIT schedule Actual (table_ids 0x50–0x5F) — up to 8 days of schedule for current TS services
- EIT schedule Other (table_ids 0x60–0x6F) — schedule for services on other transport streams
EIT p/f is mandatory for all services and directly drives the "now and next" display. EIT schedule drives the full EPG grid. Both carry short_event_descriptor entries (title and short description) and optionally extended_event_descriptor entries for longer synopses.
EIT generation is where PSI/SI management becomes a continuous operational process. Schedule data arrives from rights holders and scheduling systems in varying formats — XML, JSON, proprietary APIs — and must be converted to DVB-compliant EIT tables, signed, injected into the multiplex, and kept up to date as events change.
Repetition rates and bandwidth
Each table has a defined maximum transmission interval specified in ETSI EN 300 468. The key values:
- PAT: every 500 ms maximum (recommended every 100 ms)
- PMT: every 500 ms maximum per service
- NIT: every 10 s maximum (recommended every 2 s)
- SDT Actual: every 2 s maximum
- EIT p/f Actual: every 2 s maximum
- EIT schedule: every 10 s maximum per table_id
Exceeding these intervals triggers TR 101 290 Priority 2 errors and causes visible EPG failures on some receivers. The aggregate bandwidth consumed by a full PSI/SI set with complete EIT schedule is typically between 0.5 Mbit/s and 2 Mbit/s, depending on the number of services and the schedule depth being carried.
Why PSI/SI generation needs dedicated tooling
Building and maintaining correct PSI/SI manually is error-prone. Table dependencies — where the NIT references transport streams that must match the PAT, which must reference PMTs that must match the SDT — mean that any change to the channel lineup or network topology ripples across multiple tables simultaneously.
A dedicated PSI/SI generator manages these dependencies automatically, validates output against the DVB specification before injection, and handles the continuous refresh cycle for EIT schedule data. It also logs table transmission for audit purposes and supports carriage agreement verification — something that manual approaches cannot provide reliably.
EPG and PSI/SI Generation in Dualz PSI/SI Generator
Learn how the output transport stream is built from PSI/SI tables and how EIT schedule data reaches receivers.