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.