Frequency scan

From LinuxTVWiki
Revision as of 16:28, 7 September 2021 by Wirbel (talk | contribs) (→‎Satellite Scan)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

In order to be able receive a particular signal a TV tuner, the device needs to know the the correct radio frequency and modulation parameters used by that source transmission. Therefore, you (or, at least, the viewing application you are using) will first want to know which frequencies are used for transmission and, thereby, may be tunable by your receiver at your residing location.

Note: Historically, the set of frequencies used under the older analogue systems have differed from one another, meaning that the particular frequencies used across North America, Europe, Asia, etc., etc., will differ depending upon the transmission standard adopted within each nation. When countries began to make the transition to digital TV systems, most have opted to continue to use their old channel frequency schemes so as to make the switch from analog to digital systems as seamless as possible for the end user.

Frequency Scanning Utilities

Frequency scanning utilities, listed below, perform signal detection and, generally, provide a list of the frequencies upon which content is discovered, with which higher level applications can then in turn use for tuning purposes.

Analog

Digital

On Digital TV, the scanning process consists on tuning into some physical channel/transponder frequencies and parsing the MPEG Transport Stream, in order to identify the services and the corresponding audio, video, teletext and data streams. The service is also known Virtual Channel.

There are two types of scanning applications: the ones that rely on frequency channel files and the ones that tries hard to identify the existing channels, based on the knowledge of the Country.

Scan apps based on a channel file

Those applications are faster to identify the channels, but they are unable to find any channel outside the channel table. For them to work, an initial file is needed. Those files are provided at dtv-scan-tables repository, using dvbv5 file format.

Most common applications used for channel scan:

Scan apps that don't require an initial channel file

Scan applications construct internally a table with tuning parameters to seek. As the number of possible channels/tuning parameters are a way higher than the ones defined on a channel table, the scanning process might take longer.

Applications using this approach:

Comparison of DVB frequency scanning commandline utilities

The following table lists the main features of several of the popularly used command line scanners. For specific information on a particular utility's usage, have a look at its specific wiki article.

feature \ scanner scan (outdated) dvbscan (outdated) w_scan_cpp scan-s2 (outdated) dvbv5-scan
download (upstream version) linuxtv.org/hg/dvb-apps linuxtv.org/hg/dvb-apps https://www.gen2vdr.de/wirbel/w_scan_cpp/index2.html [1] git.linuxtv.org/v4l-utils.git
last stable linuxtv-dvb-apps-1.1.1 linuxtv-dvb-apps-1.1.1 none / use latest version ? v4l-utils-1.4.0
comments unmaintained
DVB-S2 and DVB-T2 support missing
unmaintained
DVB-S2 and DVB-T2 support missing
replaces outdated w_scan && it's forks unmaintained linuxtv.org maintained
DVB API needs DVB API version 3.2 or higher DVB API version 3.2 or higher DVB API version 5.0 or higher DVB API version 5.0 or higher DVB API version 3.2 or higher
supported DTV types DVB-S/C/T, ATSC(VSB and QAM) DVB-S/C/T, ATSC(VSB and QAM) DVB-S/S2/C/T/T2 and ATSC(VSB and QAM) DVB-S/S2/C/T and ATSC(VSB and QAM) DVB-S/S2/C/T/T2, ATSC(VSB and QAM), ISDB-T
initial scan file required
(matching to your satellite or local aerial/cable network)
yes yes not required yes
NOTE: slightly different file format from scan because of additional DVB-S2 support.
yes (uses libdvbv5 file format by default, but dvb-apps and s2-scan file formats are accepted too)
can generate initial scan file no no yes (old v3.x dropped) no no
can generate channels.conf for zap/xine/mplayer/vlc yes (default) yes (default) yes yes yes
can generate channels.conf for VDR yes, but hopeless outdated (vdr-1.3 only) yes, but hopeless outdated (vdr-1.3 only) yes (default, latest) yes (default) yes (after version 1.4.0)

Digital TV Scan Technical Information

There are two types of TV channel scanning tool: the ones that relies on a separate per-country/per-city channel file, and the ones that do deep scan.

This section describes how deep channel scan works.

Terrestrial TV Scan

For terrestrial standards, the channel frequency parameters are regulated, per Country. Channels usually use a bandwidth of 5MHz, 6MHz, 7MHz or 8MHz (although DVB-T2 also permits 1.7 MHz and 10 MHz). They're also usually spaced with the same bandwidth. This is also true for DVB-C Annex B, used in US.

In Europe, most Countries use 7MHz in the old VHF band III (174-230MHz) and 8MHz in the old UHF band (300MHz-862MHz), but nowadays only the UHF band is used up to 700MHz. On US, Brazil, Mexico, Canada, Japan, South Korea, 6MHz is used for all channels.

So, all a deep channel scan tool needs to know, for each frequency range, is:

  • The frequency of the first channel;
  • The frequency of the last channel;
  • The bandwidth of each channel;

So, for example, Kaffeine's "Auto normal" deep scan, used on most western European Countries, has two ranges:

Range Initial frequency Final frequency Channel bandwidth
VHF (deprecated in Europe) 177500000 Hz 226500000 Hz 7000000 Hz
UHF (Europe 8xx MHz unused) 474000000 Hz 858000000 Hz 8000000 Hz

And "Auto Australia" deep scan, used in Australia, has a different UHF range:

Range Initial frequency Final frequency Channel bandwidth
VHF 177500000 Hz 226500000 Hz 7000000 Hz
UHF 529500000 Hz 816500000 Hz 7000000 Hz
Note: If the digital TV standard is DVB-T2, it could have multiple transport streams on a single physical channel, using multiple Physical Layer Pipes (M-PLP). A deep scan tool should need to detect if the physical channel has single or multiple PLP. This is done by passing an extra parameter to the driver, via DVBv5 DVB_STREAM_ID property. When set to -1 (default), it means that the physical channel is at single input stream mode. A valid value means an specific Transport stream ID, on M-PLP mode. Please notice that a typical hardware doesn't auto-detect it. See https://en.wikipedia.org/wiki/DVB-T2#Technical_details for more reference

Cable TV Scan

All cable and satellite standards, except for DVB-C Annex B and ISDB-S, use a variable channel bandwidth, with is indirectly adjusted from the symbol rate. The bandwidth is given by:

   bandwidth = symbol_rate / rolloff factor

Where the rolloff depends on the filter parameters of the demod. It is standardized, though:

TV Standard Rolloff factor Notes
DVB-S, DVB-S turbo and ISDB-S 0.35 standard implies 0.35
DVB-S2 it can be selected between 0.20, 0.25 and 0.35 default = 0.35, 0.25 or 0.20 might be selected
DVB-C Annex A 0.15 most countries, Annex A implies 0.15
DVB-C Annex C 0.13 mostly Japan, Annex C implies 0.13

Most cable TV providers keep spacing the channels using a multiple of 6MHz, 7MHz or 8MHz (Europe: only 8MHz), with usually matches (nearly!) the terrestrial TV channel frequency table.
ATSC providers still maintain non-standard frequency grid.

However, the symbol rate is not standardized. So, a scanning tool should set a symbol rate, in bauds, with is actually used to setup the bandpass filters. If the symbol rate doesn't tightly match, the DVB demux won't decode the channel. Also, while you could hint a symbol rate based on the channel space, This is not standard: each cable operator can use whatever they want.

So, for example, if the channel spacing is 8MHz, a DVB-C Annex A channel may use up to 6956.5 KBauds

   8 MHz / 1.15 =  6956.5 KBauds

Most cable companies, in practice, rounds it to 6900 kBauds. However, the cable operator can opt to use a smaller value, like 6875 kBauds in order to add some guard between channels, or use the right value (6956.5 kBauds).

So, a deep scanning tool has a list of the most common symbol rates it uses to test. It starts scanning with the most likely one (e. g. symbol_rate / rolloff). If it doesn't find anything, it tries other valid symbol rates for the channel bandwidth.

Currently, the dtv-scan-tables dvb-c channel tables use the following symbol rates:

Number of occurrences Symbol rate DVB-C Annex A bandwidth DVB-C Annex C bandwidth
712 6900000 bauds 7.9 MHz 7.8 MHz
250 6875000 bauds 7.9 MHz 7.8 MHz
12 6950000 bauds 8 MHz 7.9 MHz
6 7000000 bauds 8.1 MHz 7.9 MHz
6 3450000 bauds 4.0 MHz 3.9 MHz
5 6111000 bauds 7 MHz 6.9 MHz
2 6428000 bauds 7.4 MHz 7.3 MHz
1 6952000 bauds 8 MHz 7.9 MHz
1 5217000 bauds 6MHz 5.9 MHz
1 5000000 bauds 5.8 MHz 5.7 MHz

The good news, is that, usually getting just one channel is enough to get the full channels for cable, as the NIT tables typically contains the full range of channels there.

Note: European cable providers usually provide region-based Setup-PIDs, which refer to a NIT (DVB-SI Table) on locally used PID (not using default PID 0x10).
Except Finland, Europe uses QAM256/64 && using SR6900/6875 on 8MHz grid; anything else is unusual. Try 306MHz + <N>*8MHz at SR6900 and QAM256 first


Note: If you dont know details, try to guess the SR in the following sequence: 6900, 6875, 6950 - and skip any other SR

Satellite Scan

Satellite scan is even harder than cable TV, as the transponder frequencies are not standardized. Also, it should check both vertical and horizontal polarization.

A deep satellite scan should use the frequency range from the LNBf and tries several symbol rates, assuming some transponder spacing.

The good news, is that, usually getting just one channel is enough to get the full channels for cable, as the NIT tables typically contains the full range of channels there. Yet, on several satellites, in order to get all transponders, the scan program need to check for the other NIT tables.

Note: If the digital TV standard is DVB-S2, it could have Multiple Input Streams (MIS) inside a physical channel, just like DVB-T2 M-PLP. According with DVB spec TS 102 441, the terminal *shall* know the ID of the more robust signal. In practice, it means that most hardware won't auto-detect it. So, a deep scan tool should also need to detect if the physical channel has single or multiple input streams. This is done by passing an extra parameter to the driver, via DVBv5 DVB_STREAM_ID property. When set to -1 (default), it means that the physical channel is at single input stream mode. If set to a value between 0 and 255, it means an specific Transport stream ID, on MIS mode. See https://work-microwave.com/introduction-dvb-s2-multistream/ and https://en.wikipedia.org/wiki/DVB-T2#Technical_details for more details.


Note: As a side note from the software side: no existing linux deep scan tool will be practically able to know, if a S2 channel actually uses multiple PLPs. Any deep scan may fail here, as there is no DVB SI table reporting a list of PLPs and scanning *any* PLP value would take way too long.

External Links

Analog

Digital For some other general sources (which may or may not be that useful) for finding local channel frequency lists, see: