ETSI TR 101 290 (ETR 290): Priority 1, 2 and 3 Checks

ETSI TR 101 290, still widely called “ETR 290”, is the reference list of checks that broadcast engineers use to judge whether an MPEG-2 transport stream is healthy. This guide covers every Priority 1, 2 and 3 indicator, what triggers it and how to test it. All figures below are taken from ETSI TR 101 290 V1.4.1 (2020-06), the latest published version.

What is ETSI TR 101 290?

ETSI TR 101 290, “Digital Video Broadcasting (DVB); Measurement guidelines for DVB systems”, is a Technical Report published by ETSI. It was first published in May 1997 as ETSI ETR 290, which is why the old name is still in everyday use. Later versions were published as TR 101 290: V1.2.1 (May 2001), V1.3.1 (July 2014) and V1.4.1 (June 2020).

The document covers far more than transport stream checks: it also defines measurements for satellite, cable and terrestrial transmission, such as BER, noise margin and RF/IF spectrum. “ETR 290 monitoring”, however, usually means clause 5.2, the “List of parameters recommended for evaluation” of the MPEG-2 transport stream. That clause groups the checks into three tables by importance:

  • Priority 1 – “necessary for de-codability (basic monitoring)”
  • Priority 2 – “recommended for continuous or periodic monitoring”
  • Priority 3 – “application dependant monitoring”

Why it matters

The checks are a “health check” of the most important elements of the transport stream, primarily at its source. Most work on header and table information, so they stay valid when conditional access scrambling is applied; a few, such as PTS_error, need an unscrambled stream. The report asks test equipment to report results with its indicators under exactly the stated preconditions, which makes an ETR 290 result comparable between instruments, operators and vendors. Two rules matter before reading any result:

  • If an indicator is set, the transport stream is in error. If no indicator is set, that does not prove the stream is error-free: the list is not exhaustive.
  • If indicator 1.1 (TS_sync_loss) is active, all other indicators are invalid. Each indicator is active only as long as at least one of its preconditions is fulfilled.

Priority 1: necessary for decodability

A Priority 1 error means a receiver may not be able to decode the stream, or a program in it, at all.

No. Indicator Raised when
1.1 TS_sync_loss Loss of synchronization, with hysteresis. The report proposes five consecutive correct sync bytes for sync acquisition, and two or more consecutive corrupted sync bytes to indicate sync loss.
1.2 Sync_byte_error The sync byte is not 0x47, checked after every 188 or 204 bytes.
1.3 PAT_error PID 0x0000 does not occur at least every 0.5 s; PID 0x0000 does not contain a table_id 0x00 (PAT); or the scrambling control field is not 00 for PID 0x0000.
1.3.a PAT_error_2 Sections with table_id 0x00 do not occur at least every 0.5 s on PID 0x0000; a section with another table_id is found on PID 0x0000; or the scrambling control field is not 00 for PID 0x0000.
1.4 Continuity_count_error Incorrect packet order, a packet occurs more than twice, or a lost packet. The three preconditions are combined into one indicator.
1.5 PMT_error Sections with table_id 0x02 (PMT) do not occur at least every 0.5 s on the PID referred to in the PAT, or the scrambling control field is not 00 for PIDs carrying PMT sections.
1.5.a PMT_error_2 The same checks, applied to each program_map_PID referred to in the PAT (network PIDs are excluded).
1.6 PID_error A referred PID does not occur for a user specified period.

Notes on Priority 1:

  • PAT_error_2 and PMT_error_2 are recommended for future implementations as replacements for 1.3 and 1.5. PAT_error_2 allows for a PAT made of several sections with the same table_id.
  • PAT and PMT repetition. The report checks 0.5 s, noting that ETSI TS 101 154 recommends at most 100 ms between sections.
  • PID_error period. Should not exceed 5 s for video or audio PIDs; data services, and audio services with an ISO 639 language descriptor of type greater than 0, are excluded from that limit.
  • Continuity counter. Lost and misordered packets need not be told apart; they are OR-ed into one indicator. The lost packet check also covers loss on links such as ATM, where one lost cell costs a complete MPEG-2 packet.

Priority 2: recommended for continuous monitoring

Priority 2 covers the parameters the report recommends for continuous monitoring: transmission errors, table CRCs and the timing of PCR and PTS. PCRs are used to regenerate the decoder’s 27 MHz system clock; if they do not arrive regularly enough, that clock may jitter or drift, and the decoder may even go out of lock.

No. Indicator Raised when
2.1 Transport_error The transport_error_indicator in the TS header is set to 1.
2.2 CRC_error A CRC error occurs in a CAT, PAT, PMT, NIT, EIT, BAT, SDT or TOT.
2.3 PCR_error A PCR discontinuity of more than 100 ms without specific indication, or a time interval of more than 100 ms between two consecutive PCR values.
2.3a PCR_repetition_error Time interval between two consecutive PCR values is more than 100 ms.
2.3b PCR_discontinuity_indicator_error The difference between two consecutive PCR values is outside the range 0 to 100 ms without the discontinuity_indicator set.
2.4 PCR_accuracy_error The PCR accuracy of the selected program is not within +/-500 ns.
2.5 PTS_error The PTS repetition period is more than 700 ms.
2.6 CAT_error Packets with transport_scrambling_control not 00 are present but no CAT (table_id 0x01) is present, or a section with a table_id other than 0x01 is found on PID 0x0001.

Notes on Priority 2:

  • PCR interval: 100 ms, not 40 ms. The earlier 40 ms limit was removed from ETSI TS 101 154 in 2005; the report recommends applying 100 ms generally. PCR_error (2.3) is kept for existing implementations; for new ones the report recommends 2.3a and 2.3b only.
  • PCR accuracy of +/-500 ns is meant to be sufficient for a color subcarrier to be synthesized from the system clock. The test should only be performed on a constant bitrate transport stream. Clause 5.3.2 of the report defines further PCR measurements: frequency offset (PCR_FO), drift rate (PCR_DR), accuracy (PCR_AC) and overall jitter (PCR_OJ).
  • PTS_error should not be applied to still pictures, and PTS values are only accessible when the stream is not scrambled.

Priority 3: application dependent monitoring

Priority 3 covers DVB service information (SI) and the decoder buffer model. Whether each check matters depends on the network; carriage of NIT_other, SDT_other, EIT P/F other and EIT schedule tables is optional, and their checks apply only when the table is present.

No. Indicator Raised when
3.1 NIT_error A section other than NIT or ST (table_id 0x40, 0x41, 0x72) on PID 0x0010, or no NIT section (0x40 or 0x41) on PID 0x0010 for more than 10 s.
3.1.a NIT_actual_error As 3.1, but checking for NIT_actual (0x40) within 10 s; also raised when two NIT_actual sections occur within a specified value (25 ms or lower).
3.1.b NIT_other_error Interval between NIT_other sections (0x41) with the same section_number is longer than a specified value (10 s or higher).
3.2 SI_repetition_error The repetition rate of SI tables is outside the limits specified in ETSI EN 300 468 and ETSI TR 101 211. It is set in addition to the table-specific indicators.
3.3 Buffer_error Overflow or underflow of the MPEG-2 reference decoder (T-STD) buffers: transport buffer, multiplexing buffer, elementary stream buffer, main buffer and system information buffers.
3.4 / 3.4.a Unreferenced_PID A PID not referred to by a PMT (3.4.a: by a PMT or a CAT) within 0.5 s, excluding PSI/SI PIDs and PIDs user defined as private data streams.
3.5 / 3.5.a SDT_error / SDT_actual_error No SDT_actual (0x42) on PID 0x0011 for more than 2 s, or a table_id other than 0x42, 0x46, 0x4A or 0x72 on PID 0x0011; 3.5.a also flags two SDT_actual sections within 25 ms or lower.
3.5.b SDT_other_error Interval between SDT_other sections (0x46) with the same section_number is longer than a specified value (10 s or higher).
3.6 / 3.6.a EIT_error / EIT_actual_error No EIT present/following actual (0x4E) on PID 0x0012 for more than 2 s (3.6.a checks section 0 and section 1 separately), or a table_id outside 0x4E to 0x6F and 0x72 on PID 0x0012; 3.6.a also flags two sections within 25 ms or lower.
3.6.b EIT_other_error Interval between EIT P/F other sections (0x4F, section 0 or section 1) is longer than a specified value (10 s or higher).
3.6.c EIT_PF_error One section (0 or 1) of an EIT present/following sub-table is present but not the other.
3.7 RST_error A table_id other than 0x71 or 0x72 on PID 0x0013, or two RST sections within 25 ms or lower.
3.8 TDT_error No TDT (0x70) on PID 0x0014 for more than 30 s, a table_id other than 0x70, 0x72 or 0x73 on PID 0x0014, or two TDT sections within 25 ms or lower.
3.9 Empty_buffer_error The transport buffer (or the system information transport buffer, or with the leak method the multiplexing buffer) is not empty at least once per second.
3.10 Data_delay_error Delay of data through the T-STD buffers is more than 1 second, or more than 60 s for still picture video data.

As with Priority 1 and 2, the older indicators 3.1, 3.5 and 3.6 are kept for existing implementations, and the report recommends the more specific “actual” and “other” variants for new ones. For Unreferenced_PID, transition states are assumed to be limited to 0.5 s and should not cause error indications.

Checks beyond the three priorities

TR 101 290 stops at Priority 3, and many faults that reach viewers fall outside its indicators. DVBAnalyzer and DVBMonitor run additional checks next to the standard ones. They are not part of TR 101 290, so they carry no priority number:

  • Timing: PTS and DTS arriving too late, PTS-to-PCR and DTS-to-PCR delay for MPEG-2 video, AVC and still pictures, PTS drift, and a PID whose PTS is not on the clock of its service.
  • Encryption: scrambling alternation and synchronization, duplicate and invalid ECM keys, and PES packets flagged as scrambled that are not.
  • Tables and packets: incomplete sections, descriptor loop and section_syntax_indicator errors, empty descriptors, a table that changes without a new version_number, PES length mismatches, and null packets with an adaptation field.
  • Teletext: wrong magazine numbers, Hamming errors and framing code errors.
  • Audio and video: AC-3 frame (CRC) and decode errors, other audio frames that cannot be decoded, H.264 field/frame errors, and video quality (blurring, blocking, ringing and buffer underrun).
  • Networks: mega-frame initialization packet (MIP) checks for DVB-T single frequency networks, and DVB-T2 checks on T2-MI.

Reading ETR 290 results in practice

  • Start at Priority 1. A sync loss invalidates every other indicator, so clear it first.
  • Look at the PID. Continuity count errors on one elementary stream suggest the device or path that produced that stream; errors on every PID at once suggest the link that carries the whole multiplex.
  • Set the user specified values deliberately. PID_error periods and the “specified value” limits in Priority 3 must match the services in the stream; the report itself allows longer gaps for data, subtitle and some audio PIDs. The SI repetition rates themselves are set by ETSI EN 300 468 and ETSI TR 101 211.

Testing ETR 290 with DVBAnalyzer, DVBMonitor and DVBMosaic

DVBAnalyzer checks ETR 290 (ETSI TR 101 290) compliance in its ETR-290 Viewer, which lists the checks by Level 1, 2, 3 and an “Other” group. For each check it shows the error count, the time of the last error and the last PID in error; selecting a check lists every error with its PID and a detailed message, and selecting a PID summarizes all ETR 290 errors of that PID. Individual tests can be enabled or disabled, and errors also appear in the Log Bar, which can save the log and the ETR-290 history to disk. The “Other” group adds checks beyond the report, such as MIP checks for DVB-T single frequency networks, DVB-T2 checks, PTS/DTS arrival checks against the PCR and a check that a table’s version number changes when its content changes. For PCR timing, the PCR Viewer shows PCR jitter and accuracy and marks values beyond +/-500 ns.

For around-the-clock supervision, DVBMonitor is 24/7 monitoring software for many DVB, ATSC, IP and OTT transport streams at once. It checks ETR 290 (Level 1, Level 2 and Level 3), SI/PSI/PSIP table changes, SCTE-35, video quality and loudness against templates, and raises alarms by SNMP and mail.

DVBMosaic, the multiviewer, performs ETR 290 Level 1 measurements alongside freeze, black, silence, PID lost, service lost and input lost detection, with alarms as SNMP traps and mail.

Related guides: SCTE-35 splice insertion messages, OTT stream monitoring and loudness measurement.

Frequently asked questions

What is the difference between ETR 290 and TR 101 290?

They are the same document. It was first published by ETSI in May 1997 as ETR 290 and later republished as ETSI TR 101 290 (V1.2.1 in 2001, V1.3.1 in 2014, V1.4.1 in 2020). “ETR 290” survives as the everyday name for the transport stream checks in it.

What is the maximum PCR interval in TR 101 290?

100 ms between two consecutive PCR values (PCR_repetition_error, 2.3a). The earlier 40 ms recommendation was removed from ETSI TS 101 154 in 2005, and TR 101 290 recommends applying the 100 ms limit generally.

How often must the PAT and PMT be sent?

For TR 101 290, at least every 0.5 s; longer gaps raise PAT_error or PMT_error. The report notes that ETSI TS 101 154 recommends no more than 100 ms between sections.

Does a stream without ETR 290 errors have no problems?

No. The report states that its list is not exhaustive: an active indicator proves an error, but an inactive one does not prove the stream is correct.