Frequency scan
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
- scantv (part of xawtv package, both branches)
- apps with built in scanning ... tvtime, xawtv/motv (which call upon scantv), kdetv ...
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:
- LinuxTV dvbv5-scan, part of DVBv5_Tools package.
- alexplore (part of the v4 xawtv package).
- scan/"(dvb)scan", part of the unmantained LinuxTV dvb-apps.
- scan-s2 [1]
- "(dvb)scan", a utility included within the LinuxTV dvb-apps package.
- several apps also have their built in scanning ... kaffeine, MythTV, Me TV
Scan apps that don't require an initial channel file
Scan applications that don't need a channel file have internally a table that allows them to construct internally a table with possible frequencies and 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 will take several minutes (up to an hour, if the card doesn't support autodetection for some DVB properties).
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 | dvbscan | w_scan | scan-s2 | dvbv5-scan |
download (upstream version) | linuxtv.org/hg/dvb-apps | linuxtv.org/hg/dvb-apps | wirbel.htpc-forum.de/w_scan/index.html | mercurial.intuxication.org/hg/scan-s2 | 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 | linuxtv.org unmaintained DVB-S2 and DVB-T2 support missing |
linuxtv.org unmaintained DVB-S2 and DVB-T2 support missing |
linuxtv.org maintained | ||
DVB API needs | DVB API version 3.2 or higher | DVB API version 3.2 or higher | DVB API version 3.2 or higher compiling needs DVB API version 5.0 or higher |
DVB API version 5.0 or higher last update 02/2009 |
DVB API version 3.2 or higher |
supported DTV types | DVB-S, DVB-C (Annex A only - mainly Europe), DVB-T, ATSC (VSB and QAM) | DVB-S, DVB-C (Annex A only - mainly Europe), DVB-T, ATSC (VSB and QAM) | DVB-S, DVB-S2, DVB-C (Annex A only - mainly Europe), DVB-T, DVB/T2, ATSC (VSB and QAM), DMB-TH (China) | DVB-S, DVB-S2, DVB-C (Annex A only - mainly Europe), DVB-T, ATSC (VSB and QAM) | DVB-S, DVB-S2, DVB-C (Annex A and C - worldwide), DVB-T, DVB-T2, ATSC (VSB and QAM), ISDB-T and more |
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 | 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) | yes (default) | yes (after version 1.4.0) |
can generate channels.dvb for kaffeine | no | no | yes | no | no |
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 6MHz for VHF channels and 8MHz for UHF channels. 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 | 177500000 | 226500000 | 7000000 |
UHF | 474000000 | 858000000 | 8000000 |
And "Auto Australia" deep scan, used in Australia, has a different UHF range:
Range | Initial frequency | Final frequency | Channel bandwidth |
VHF | 177500000 | 226500000 | 7000000 |
UHF | 529500000 | 816500000 | 7000000 |
=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
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 | 1.35 | |
DVB-S2 | it can be selected between 1.20, 1.25 and 1.35 | |
DVB-C Annex A | 1.15 | used by most countries |
DVB-C Annex C | 1.13 | used mainly in Japan |
Most cable TV providers keep spacing the channels using a multiple of 6MHz, 7MHz or 8MHz, with usually matches the terrestrial TV channel frequency table.
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 approximately match, the decoder won't detect 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 | Minimal 1MHz multiple bandwidth required |
712 | 6900000 bauds | For DVB-C Annex A, it needs 8MHz channel spacing |
250 | 6875000 bauds | For DVB-C Annex A, it needs 8MHz channel spacing |
12 | 6950000 bauds | For DVB-C Annex A, it needs 8MHz channel spacing |
6 | 7000000 bauds | For DVB-C Annex C (Japan), it needs 8MHz channel spacing |
6 | 3450000 bauds | For DVB-C Annex A, it needs 3MHz channel spacing |
5 | 6111000 bauds | For DVB-C Annex A, it needs 6MHz channel spacing |
2 | 6428000 bauds | For DVB-C Annex A, it needs 6MHz channel spacing |
1 | 6952000 bauds | For DVB-C Annex A, it needs 7MHz channel spacing |
1 | 5217000 bauds | For DVB-C Annex A, it needs 5MHz channel spacing |
1 | 5000000 bauds | For DVB-C Annex A, it needs 5MHz channel spacing |
Satellite scan is even harder, as the transponder frequencies are not standardized. Also, it should check both vertical and horizontal polarization. I'm not sure how w_scan works. I suspect it uses the frequency range from the LNBf and tries some 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 (and usually for satellite as well), as the NIT tables typically contains the full range of channels there.
External Links
Analog
Digital For some other general sources (which may or may not be that useful) for finding local channel frequency lists, see: