Frequency scan: Difference between revisions
(17 intermediate revisions by 2 users not shown) | |||
Line 20: | Line 20: | ||
Those applications are faster to identify the channels, but they are unable to find any channel outside the channel table. |
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. |
For them to work, an initial file is needed. Those files are provided at [[dtv-scan-tables]] repository, using dvbv5 file format. |
||
Line 26: | Line 25: | ||
* [[dvbv5-scan | LinuxTV dvbv5-scan]], part of [[DVBv5_Tools]] package. |
* [[dvbv5-scan | LinuxTV dvbv5-scan]], part of [[DVBv5_Tools]] package. |
||
* [[alexplore]] (part of the [[xawtv#Associated_Utilities_2|v4 xawtv package]]). |
|||
* [[scan]]/"[[Scan|(dvb)scan]]", part of the unmantained [[LinuxTV dvb-apps]]. |
|||
* [[scan-s2]] [http://mercurial.intuxication.org/hg/scan-s2/] |
|||
* "[[Scan|(dvb)scan]]", a utility included within the [[LinuxTV dvb-apps]] package. |
|||
* several apps also have their built in scanning ... [[kaffeine]], [[MythTV]], [[Me TV]] |
* several apps also have their built in scanning ... [[kaffeine]], [[MythTV]], [[Me TV]] |
||
====Scan apps that don't require an initial channel file==== |
====Scan apps that don't require an initial channel file==== |
||
Scan applications |
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: |
Applications using this approach: |
||
* [[ |
* [[w_scan_cpp]] |
||
====Comparison of DVB frequency scanning commandline utilities==== |
====Comparison of DVB frequency scanning commandline utilities==== |
||
{{Note|The differences between '''scan''' and '''dvbscan''' should be added to this wiki article. The information for dvbscan is still to be completed - please help.}} |
|||
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. |
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. |
||
Line 49: | Line 42: | ||
|- bgcolor=#efefef valign="top" |
|- bgcolor=#efefef valign="top" |
||
|'''feature \ scanner''' |
|'''feature \ scanner''' |
||
|'''[[scan]]''' |
|'''[[scan]] (outdated)''' |
||
|'''[[dvbscan]]''' |
|'''[[dvbscan]] (outdated)''' |
||
|'''[[ |
|'''[[w_scan_cpp]]''' |
||
|'''[[scan-s2]]''' |
|'''[[scan-s2]] (outdated)''' |
||
|'''[[dvbv5-scan]]''' |
|'''[[dvbv5-scan]]''' |
||
|- |
|- |
||
Line 58: | Line 51: | ||
|[http://linuxtv.org/hg/dvb-apps linuxtv.org/hg/dvb-apps] |
|[http://linuxtv.org/hg/dvb-apps linuxtv.org/hg/dvb-apps] |
||
|[http://linuxtv.org/hg/dvb-apps linuxtv.org/hg/dvb-apps] |
|[http://linuxtv.org/hg/dvb-apps linuxtv.org/hg/dvb-apps] |
||
|[ |
|[https://www.gen2vdr.de/wirbel/w_scan_cpp/index2.html https://www.gen2vdr.de/wirbel/w_scan_cpp/index2.html] |
||
|[https://github.com/glenvt18/scan-s2] |
|||
|[http://mercurial.intuxication.org/hg/scan-s2 mercurial.intuxication.org/hg/scan-s2] |
|||
|[http://git.linuxtv.org/v4l-utils.git git.linuxtv.org/v4l-utils.git] |
|[http://git.linuxtv.org/v4l-utils.git git.linuxtv.org/v4l-utils.git] |
||
|- |
|- |
||
Line 70: | Line 63: | ||
|- |
|- |
||
|'''comments''' |
|'''comments''' |
||
| |
|unmaintained<br>'''DVB-S2 and DVB-T2 support missing''' |
||
| |
|unmaintained<br>'''DVB-S2 and DVB-T2 support missing''' |
||
|replaces outdated w_scan && it's forks |
|||
| |
|||
|unmaintained |
|||
| |
|||
|linuxtv.org maintained |
|'''linuxtv.org maintained''' |
||
|- |
|- |
||
|'''DVB API needs''' |
|'''DVB API needs''' |
||
|DVB API version 3.2 or higher |
|DVB API version 3.2 or higher |
||
|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 5.0 or higher |
||
|DVB API version 3.2 or higher |
|DVB API version 3.2 or higher |
||
|- |
|- |
||
|'''supported DTV types''' |
|'''supported DTV types''' |
||
|DVB-S |
|DVB-S/C/T, ATSC(VSB and QAM) |
||
|DVB-S |
|DVB-S/C/T, ATSC(VSB and QAM) |
||
|DVB-S |
|DVB-S/S2/C/T/T2 and ATSC(VSB and QAM) |
||
|DVB-S |
|DVB-S/S2/C/T and ATSC(VSB and QAM) |
||
|DVB-S |
|DVB-S/S2/C/T/T2, ATSC(VSB and QAM), ISDB-T |
||
|- |
|- |
||
|'''initial scan file required'''<br>(matching to your satellite or local aerial/cable network) |
|'''initial scan file required'''<br>(matching to your satellite or local aerial/cable network) |
||
Line 100: | Line 93: | ||
|no |
|no |
||
|no |
|no |
||
|'''yes''' |
|'''yes''' (old v3.x dropped) |
||
|no |
|no |
||
|no |
|no |
||
Line 114: | Line 107: | ||
|yes, but hopeless outdated (vdr-1.3 only) |
|yes, but hopeless outdated (vdr-1.3 only) |
||
|yes, but hopeless outdated (vdr-1.3 only) |
|yes, but hopeless outdated (vdr-1.3 only) |
||
|yes (default) |
|yes (default, latest) |
||
|yes (default) |
|yes (default) |
||
|yes (after version 1.4.0) |
|yes (after version 1.4.0) |
||
|- |
|||
|'''can generate channels.dvb for kaffeine''' |
|||
|no |
|||
|no |
|||
|'''yes''' |
|||
|no |
|||
|no |
|||
|} |
|} |
||
Line 136: | Line 122: | ||
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. |
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 |
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: |
So, all a deep channel scan tool needs to know, for each frequency range, is: |
||
Line 142: | Line 128: | ||
* The frequency of the first channel; |
* The frequency of the first channel; |
||
* The frequency of the last channel; |
* The frequency of the last channel; |
||
* The bandwidth of each channel |
* The bandwidth of each channel; |
||
So, for example, Kaffeine's "Auto normal" deep scan, used on most western European Countries, has two ranges: |
So, for example, Kaffeine's "Auto normal" deep scan, used on most western European Countries, has two ranges: |
||
Line 153: | Line 139: | ||
| Channel bandwidth |
| Channel bandwidth |
||
|- |
|- |
||
| VHF (deprecated in Europe) |
|||
| VHF |
|||
| 177500000 Hz |
| 177500000 Hz |
||
| 226500000 Hz |
| 226500000 Hz |
||
| 7000000 Hz |
| 7000000 Hz |
||
|- |
|- |
||
| UHF (Europe 8xx MHz unused) |
|||
| UHF |
|||
| 474000000 Hz |
| 474000000 Hz |
||
| 858000000 Hz |
| 858000000 Hz |
||
Line 185: | Line 171: | ||
|- |
|- |
||
|} |
|} |
||
{{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=== |
===Cable TV Scan=== |
||
Line 201: | Line 190: | ||
|- |
|- |
||
| DVB-S, DVB-S turbo and ISDB-S |
| DVB-S, DVB-S turbo and ISDB-S |
||
| |
| 0.35 |
||
| standard implies 0.35 |
|||
|- |
|- |
||
| DVB-S2 |
| DVB-S2 |
||
| it can be selected between |
| 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 |
| DVB-C Annex A |
||
| |
| 0.15 |
||
| |
| most countries, Annex A implies 0.15 |
||
|- |
|- |
||
| DVB-C Annex C |
| DVB-C Annex C |
||
| |
| 0.13 |
||
| mostly Japan, Annex C implies 0.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. |
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.<br> |
||
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. |
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 |
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 |
So, for example, if the channel spacing is 8MHz, a DVB-C Annex A channel may use up to 6956.5 KBauds |
||
Line 290: | Line 282: | ||
|} |
|} |
||
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. |
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.<br> |
||
{{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).<br>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=== |
||
Line 299: | Line 295: | ||
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. |
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== |
==External Links== |
Latest revision as of 16:28, 7 September 2021
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.
- several apps also have their built in scanning ... kaffeine, MythTV, Me TV
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 |
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.
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
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.
External Links
Analog
Digital For some other general sources (which may or may not be that useful) for finding local channel frequency lists, see: