aboutsummaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
Diffstat (limited to 'util')
-rw-r--r--util/scan/dvb-c/fi-sonera11
-rw-r--r--util/scan/dvb-c/nl-UPC7
-rw-r--r--util/scan/dvb-c/nl-Ziggo-Zwolle26
-rw-r--r--util/scan/dvb-h/README3
-rw-r--r--util/scan/dvb-h/fi-Helsinki2
-rw-r--r--util/scan/dvb-h/fi-Oulu2
-rw-r--r--util/scan/dvb-h/fi-Oulu-Nokia-devel4
-rw-r--r--util/scan/dvb-h/fi-Turku2
-rw-r--r--util/scan/dvb-s/AMC16-85.0W (renamed from util/scan/dvb-s/AMC2-85w)0
-rw-r--r--util/scan/dvb-s/AMC9-83.0W (renamed from util/scan/dvb-s/AMC9-83w)0
-rw-r--r--util/scan/dvb-s/BrasilsatB4-84.0W (renamed from util/scan/dvb-s/BrasilSat-B3-84.0W)0
-rw-r--r--util/scan/dvb-s/ChinaSat5A-87.5E (renamed from util/scan/dvb-s/Chinastar1_C-87.5E)0
-rw-r--r--util/scan/dvb-s/Eutelsat9-9.0E (renamed from util/scan/dvb-s/Eurobird9-9.0E)0
-rw-r--r--util/scan/dvb-s/Galaxy17-91.0W (renamed from util/scan/dvb-s/Galaxy11-91w)3
-rw-r--r--util/scan/dvb-s/Galaxy19-97.0W (renamed from util/scan/dvb-s/IA5-97w)6
-rw-r--r--util/scan/dvb-s/Galaxy25-93.0W (renamed from util/scan/dvb-s/IA6-93w)8
-rw-r--r--util/scan/dvb-s/Galaxy25-97w19
-rw-r--r--util/scan/dvb-s/Galaxy26-93w58
-rw-r--r--util/scan/dvb-s/Galaxy28-89.0W (renamed from util/scan/dvb-s/Galaxy28-89w)7
-rw-r--r--util/scan/dvb-s/Galaxy3C-95.0W (renamed from util/scan/dvb-s/Galaxy3C-95w)1
-rw-r--r--util/scan/dvb-s/IA8-89w34
-rw-r--r--util/scan/dvb-s/SES2-87.0W (renamed from util/scan/dvb-s/AMC3-87w)0
-rw-r--r--util/scan/dvb-t/auto-Italy72
-rw-r--r--util/scan/dvb-t/de-Baden-Wuerttemberg2
-rw-r--r--util/scan/dvb-t/de-Bayern2
-rw-r--r--util/scan/dvb-t/de-Berlin4
-rw-r--r--util/scan/dvb-t/de-Bremen4
-rw-r--r--util/scan/dvb-t/de-Hamburg4
-rw-r--r--util/scan/dvb-t/de-Hessen20
-rw-r--r--util/scan/dvb-t/de-Niedersachsen10
-rw-r--r--util/scan/dvb-t/de-Nordrhein-Westfalen10
-rw-r--r--util/scan/dvb-t/de-Rheinland-Pfalz1
-rw-r--r--util/scan/dvb-t/de-Saarland2
-rw-r--r--util/scan/dvb-t/de-Sachsen2
-rw-r--r--util/scan/dvb-t/de-Sachsen-Anhalt2
-rw-r--r--util/scan/dvb-t/de-Schleswig-Holstein4
-rw-r--r--util/scan/dvb-t/es-Huesca21
-rw-r--r--util/scan/dvb-t/fi-Espoo1
-rw-r--r--util/scan/dvb-t/fi-Eurajoki1
-rw-r--r--util/scan/dvb-t/fi-Jyvaskyla1
-rw-r--r--util/scan/dvb-t/fi-Lahti1
-rw-r--r--util/scan/dvb-t/fi-Lohja4
-rw-r--r--util/scan/dvb-t/fi-Oulu1
-rw-r--r--util/scan/dvb-t/fi-Tampere1
-rw-r--r--util/scan/dvb-t/fi-Turku1
-rw-r--r--util/scan/dvb-t/ie-CairnHill5
-rw-r--r--util/scan/dvb-t/ie-ClermontCarn5
-rw-r--r--util/scan/dvb-t/ie-Dungarvan5
-rw-r--r--util/scan/dvb-t/ie-HolywellHill5
-rw-r--r--util/scan/dvb-t/ie-Kippure5
-rw-r--r--util/scan/dvb-t/ie-Maghera5
-rw-r--r--util/scan/dvb-t/ie-MountLeinster5
-rw-r--r--util/scan/dvb-t/ie-Mullaghanish5
-rw-r--r--util/scan/dvb-t/ie-SpurHill5
-rw-r--r--util/scan/dvb-t/ie-ThreeRock5
-rw-r--r--util/scan/dvb-t/ie-Truskmore5
-rw-r--r--util/scan/dvb-t/ie-WoodcockHill5
-rw-r--r--util/scan/dvb-t/it-All135
-rw-r--r--util/scan/dvb-t/it-Aosta21
-rw-r--r--util/scan/dvb-t/it-Bari18
-rw-r--r--util/scan/dvb-t/it-Bologna28
-rw-r--r--util/scan/dvb-t/it-Bolzano5
-rw-r--r--util/scan/dvb-t/it-Cagliari23
-rw-r--r--util/scan/dvb-t/it-Caivano17
-rw-r--r--util/scan/dvb-t/it-Catania27
-rw-r--r--util/scan/dvb-t/it-Conero8
-rw-r--r--util/scan/dvb-t/it-Firenze20
-rw-r--r--util/scan/dvb-t/it-Genova12
-rw-r--r--util/scan/dvb-t/it-Livorno15
-rw-r--r--util/scan/dvb-t/it-Milano49
-rw-r--r--util/scan/dvb-t/it-Modena50
-rw-r--r--util/scan/dvb-t/it-Montevergine18
-rw-r--r--util/scan/dvb-t/it-Pagnacco27
-rw-r--r--util/scan/dvb-t/it-Palermo23
-rw-r--r--util/scan/dvb-t/it-Pescara15
-rw-r--r--util/scan/dvb-t/it-Pisa18
-rw-r--r--util/scan/dvb-t/it-Roma16
-rw-r--r--util/scan/dvb-t/it-S-Stefano_al_mare19
-rw-r--r--util/scan/dvb-t/it-Sassari33
-rw-r--r--util/scan/dvb-t/it-Torino13
-rw-r--r--util/scan/dvb-t/it-Trieste23
-rw-r--r--util/scan/dvb-t/it-Varese16
-rw-r--r--util/scan/dvb-t/it-Venezia19
-rw-r--r--util/scan/dvb-t/it-Verona19
-rw-r--r--util/scan/dvb-t/pl-Gdansk4
-rw-r--r--util/scan/dvb-t/pl-Krakow17
-rw-r--r--util/scan/dvb-t/sk-Bratislava7
-rw-r--r--util/scan/dvb-t/uk-CrystalPalace27
-rw-r--r--util/scan/dvb-t/uk-EmleyMoor13
-rw-r--r--util/scan/dvb-t/uk-Tacolneston26
-rw-r--r--util/scan/scan.c40
-rw-r--r--util/szap/Makefile7
-rw-r--r--util/szap/azap.c82
-rw-r--r--util/szap/czap.c25
-rw-r--r--util/szap/lnb.c11
-rw-r--r--util/szap/lnb.h6
-rw-r--r--util/szap/szap.c962
-rw-r--r--util/szap/tzap.c232
-rw-r--r--util/szap/util.c153
99 files changed, 1129 insertions, 1594 deletions
diff --git a/util/scan/dvb-c/fi-sonera b/util/scan/dvb-c/fi-sonera
index 54f3fe9..2eee9f9 100644
--- a/util/scan/dvb-c/fi-sonera
+++ b/util/scan/dvb-c/fi-sonera
@@ -5,8 +5,19 @@
C 154000000 6900000 NONE QAM128
C 162000000 6900000 NONE QAM128
C 170000000 6900000 NONE QAM128
+C 234000000 6900000 NONE QAM256
+C 242000000 6900000 NONE QAM256
+C 250000000 6900000 NONE QAM256
+C 258000000 6900000 NONE QAM256
+C 266000000 6900000 NONE QAM256
C 314000000 6900000 NONE QAM128
C 322000000 6900000 NONE QAM128
C 338000000 6900000 NONE QAM128
C 346000000 6900000 NONE QAM128
C 354000000 6900000 NONE QAM128
+C 362000000 6900000 NONE QAM128
+C 370000000 6900000 NONE QAM128
+C 378000000 6900000 NONE QAM128
+C 386000000 6900000 NONE QAM128
+C 394000000 6900000 NONE QAM128
+C 402000000 6900000 NONE QAM128
diff --git a/util/scan/dvb-c/nl-UPC b/util/scan/dvb-c/nl-UPC
new file mode 100644
index 0000000..83c8951
--- /dev/null
+++ b/util/scan/dvb-c/nl-UPC
@@ -0,0 +1,7 @@
+# Initial Tuning file for nl-UPC
+# This file only lists the main
+# frequencies. You still need to do
+# a network scan to find other
+# transponders.
+
+C 164000000 6900000 NONE QAM64
diff --git a/util/scan/dvb-c/nl-Ziggo-Zwolle b/util/scan/dvb-c/nl-Ziggo-Zwolle
deleted file mode 100644
index e47b4ac..0000000
--- a/util/scan/dvb-c/nl-Ziggo-Zwolle
+++ /dev/null
@@ -1,26 +0,0 @@
-C 313000000 6875000 NONE QAM64 # TS 1
-C 361000000 6875000 NONE QAM64 # TS 2
-C 353000000 6875000 NONE QAM64 # TS 3
-C 345000000 6875000 NONE QAM64 # TS 4
-C 818000000 6875000 NONE QAM64 # TS 5
-C 329000000 6875000 NONE QAM64 # TS 6
-C 810000000 6875000 NONE QAM64 # TS 7
-C 305000000 6875000 NONE QAM64 # TS 8
-C 762000000 6875000 NONE QAM64 # TS 9
-C 618000000 6875000 NONE QAM64 # TS 10
-C 610000000 6875000 NONE QAM64 # TS 11
-C 337000000 6875000 NONE QAM64 # TS 12
-C 321000000 6875000 NONE QAM64 # TS 13
-C 385000000 6875000 NONE QAM64 # TS 14
-C 393000000 6875000 NONE QAM64 # TS 15
-C 401000000 6875000 NONE QAM64 # TS 16
-C 369000000 6875000 NONE QAM64 # TS 18 (main TS)
-C 297000000 6875000 NONE QAM64 # TS 19
-C 377000000 6875000 NONE QAM64 # TS 22
-C 754000000 6875000 NONE QAM64 # TS 23
-C 642000000 6875000 NONE QAM64 # TS 24
-C 650000000 6875000 NONE QAM64 # TS 25
-C 794000000 6875000 NONE QAM64 # TS 26
-C 409000000 6875000 NONE QAM64 # TS 27
-C 425000000 6875000 NONE QAM64 # TS 206
-C 417000000 6875000 NONE QAM64 # TS 207
diff --git a/util/scan/dvb-h/README b/util/scan/dvb-h/README
deleted file mode 100644
index 50e137d..0000000
--- a/util/scan/dvb-h/README
+++ /dev/null
@@ -1,3 +0,0 @@
-These files are mainly for informational and experimental purposes.
-The DVB-H file format hasn't been specified in any way; currently it's just
-a copy of the DVB-T format.
diff --git a/util/scan/dvb-h/fi-Helsinki b/util/scan/dvb-h/fi-Helsinki
deleted file mode 100644
index c593929..0000000
--- a/util/scan/dvb-h/fi-Helsinki
+++ /dev/null
@@ -1,2 +0,0 @@
-# H freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-H 586000000 8MHz 1/2 NONE QAM16 8k 1/8 NONE
diff --git a/util/scan/dvb-h/fi-Oulu b/util/scan/dvb-h/fi-Oulu
deleted file mode 100644
index 7a6be88..0000000
--- a/util/scan/dvb-h/fi-Oulu
+++ /dev/null
@@ -1,2 +0,0 @@
-# H freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-H 498000000 8MHz 1/2 NONE QAM16 8k 1/8 NONE
diff --git a/util/scan/dvb-h/fi-Oulu-Nokia-devel b/util/scan/dvb-h/fi-Oulu-Nokia-devel
deleted file mode 100644
index 6213607..0000000
--- a/util/scan/dvb-h/fi-Oulu-Nokia-devel
+++ /dev/null
@@ -1,4 +0,0 @@
-# Nokia Oulu delelopment network
-# Network Name 'Nokia Oulu'
-# H freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-H 690000000 8MHz 1/2 NONE QPSK 8k 1/8 NONE
diff --git a/util/scan/dvb-h/fi-Turku b/util/scan/dvb-h/fi-Turku
deleted file mode 100644
index 7a6be88..0000000
--- a/util/scan/dvb-h/fi-Turku
+++ /dev/null
@@ -1,2 +0,0 @@
-# H freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-H 498000000 8MHz 1/2 NONE QAM16 8k 1/8 NONE
diff --git a/util/scan/dvb-s/AMC2-85w b/util/scan/dvb-s/AMC16-85.0W
index 0cd0611..0cd0611 100644
--- a/util/scan/dvb-s/AMC2-85w
+++ b/util/scan/dvb-s/AMC16-85.0W
diff --git a/util/scan/dvb-s/AMC9-83w b/util/scan/dvb-s/AMC9-83.0W
index b7d0882..b7d0882 100644
--- a/util/scan/dvb-s/AMC9-83w
+++ b/util/scan/dvb-s/AMC9-83.0W
diff --git a/util/scan/dvb-s/BrasilSat-B3-84.0W b/util/scan/dvb-s/BrasilsatB4-84.0W
index 5ad005e..5ad005e 100644
--- a/util/scan/dvb-s/BrasilSat-B3-84.0W
+++ b/util/scan/dvb-s/BrasilsatB4-84.0W
diff --git a/util/scan/dvb-s/Chinastar1_C-87.5E b/util/scan/dvb-s/ChinaSat5A-87.5E
index 0c03cfc..0c03cfc 100644
--- a/util/scan/dvb-s/Chinastar1_C-87.5E
+++ b/util/scan/dvb-s/ChinaSat5A-87.5E
diff --git a/util/scan/dvb-s/Eurobird9-9.0E b/util/scan/dvb-s/Eutelsat9-9.0E
index 925980a..925980a 100644
--- a/util/scan/dvb-s/Eurobird9-9.0E
+++ b/util/scan/dvb-s/Eutelsat9-9.0E
diff --git a/util/scan/dvb-s/Galaxy11-91w b/util/scan/dvb-s/Galaxy17-91.0W
index 81aa25b..365e541 100644
--- a/util/scan/dvb-s/Galaxy11-91w
+++ b/util/scan/dvb-s/Galaxy17-91.0W
@@ -1,6 +1,5 @@
-# Galaxy 11 @ 91W
+# Galaxy 17 @ 91W
# freq pol sr fec
-
S 10964000 V 19850000 AUTO
S 10994000 V 20000000 AUTO
S 11024000 V 20000000 AUTO
diff --git a/util/scan/dvb-s/IA5-97w b/util/scan/dvb-s/Galaxy19-97.0W
index 76c3297..3422b69 100644
--- a/util/scan/dvb-s/IA5-97w
+++ b/util/scan/dvb-s/Galaxy19-97.0W
@@ -1,11 +1,11 @@
-# Intelsat Americas 5 @ 97W
+# Galaxy 19 @ 97W
# freq pol sr fec
-
-S 11789000 V 25000000 AUTO
+S 11789000 V 28125000 AUTO
S 11836000 V 20765000 AUTO
S 11867000 V 22000000 AUTO
S 11874000 H 22000000 AUTO
S 11898000 V 22000000 AUTO
+S 11936000 H 20000000 AUTO
S 11966000 H 22000000 AUTO
S 11991000 V 22000000 AUTO
S 12053000 V 22000000 AUTO
diff --git a/util/scan/dvb-s/IA6-93w b/util/scan/dvb-s/Galaxy25-93.0W
index eb5d93a..37f1a4a 100644
--- a/util/scan/dvb-s/IA6-93w
+++ b/util/scan/dvb-s/Galaxy25-93.0W
@@ -1,18 +1,17 @@
-# Intelsat Americas 6 @ 93W
+# Galaxy 25 @ 93W
# freq pol sr fec
-
S 11711000 V 14312000 AUTO
S 11721000 V 03979000 AUTO
S 11727000 V 03979000 AUTO
S 11732000 V 03979000 AUTO
-S 11737000 V 03979000 AUTO
S 11737000 H 03979000 AUTO
+S 11737000 V 03979000 AUTO
S 11742000 V 03979000 AUTO
S 11748000 V 03979000 AUTO
S 11753000 V 03979000 AUTO
S 11767000 V 03979000 AUTO
-S 11772000 V 03979000 AUTO
S 11772000 H 03979000 AUTO
+S 11772000 V 03979000 AUTO
S 11777000 V 03979000 AUTO
S 11782000 V 03979000 AUTO
S 11788000 V 03979000 AUTO
@@ -25,6 +24,7 @@ S 11841000 H 04000000 AUTO
S 11865000 V 03516000 AUTO
S 11887000 V 03979000 AUTO
S 11893000 V 03979000 AUTO
+S 11904000 H 03010000 AUTO
S 11904000 V 05000000 AUTO
S 11919000 V 03979000 AUTO
S 11924000 V 03979000 AUTO
diff --git a/util/scan/dvb-s/Galaxy25-97w b/util/scan/dvb-s/Galaxy25-97w
deleted file mode 100644
index be6e7cc..0000000
--- a/util/scan/dvb-s/Galaxy25-97w
+++ /dev/null
@@ -1,19 +0,0 @@
-# Galaxy 25 @ 97W
-# freq pol sr fec
-
-S 11789000 V 28125000 AUTO
-S 11836000 V 20770000 AUTO
-S 11867000 V 22000000 AUTO
-S 11874000 H 22000000 AUTO
-S 11898000 V 22000000 AUTO
-S 11936000 H 20000000 AUTO
-S 11966000 H 22000000 AUTO
-S 11991000 V 22000000 AUTO
-S 11999000 H 20000000 AUTO
-S 12053000 V 22000000 AUTO
-S 12084000 V 22000000 AUTO
-S 12090000 H 20000000 AUTO
-S 12115000 V 22425000 AUTO
-S 12146000 V 22000000 AUTO
-S 12152000 H 20000000 AUTO
-S 12177000 V 23000000 AUTO
diff --git a/util/scan/dvb-s/Galaxy26-93w b/util/scan/dvb-s/Galaxy26-93w
deleted file mode 100644
index 9388a1a..0000000
--- a/util/scan/dvb-s/Galaxy26-93w
+++ /dev/null
@@ -1,58 +0,0 @@
-# Galaxy 26 @ 93W
-# freq pol sr fec
-
-S 11711000 V 14312000 AUTO
-S 11721000 V 03979000 AUTO
-S 11727000 V 03979000 AUTO
-S 11732000 V 03979000 AUTO
-S 11737000 V 03979000 AUTO
-S 11737000 H 03979000 AUTO
-S 11742000 V 03979000 AUTO
-S 11748000 V 03979000 AUTO
-S 11753000 V 03979000 AUTO
-S 11767000 V 03979000 AUTO
-S 11772000 V 03979000 AUTO
-S 11772000 H 03979000 AUTO
-S 11777000 V 03979000 AUTO
-S 11782000 V 03979000 AUTO
-S 11788000 V 03979000 AUTO
-S 11793000 V 03979000 AUTO
-S 11809000 V 03979000 AUTO
-S 11814000 V 03979000 AUTO
-S 11841000 H 04000000 AUTO
-S 11887000 V 03979000 AUTO
-S 11893000 V 03979000 AUTO
-S 11904000 H 03010000 AUTO
-S 11919000 V 03979000 AUTO
-S 11924000 V 03979000 AUTO
-S 11926000 H 08848000 AUTO
-S 11929000 V 03979000 AUTO
-S 11935000 V 03979000 AUTO
-S 11936000 H 08848000 AUTO
-S 11944000 H 08848000 AUTO
-S 11949000 V 03979000 AUTO
-S 11954000 V 03979000 AUTO
-S 11956000 H 03979000 AUTO
-S 11960000 V 03979000 AUTO
-S 11961000 H 03979000 AUTO
-S 11965000 V 03979000 AUTO
-S 11967000 H 03979000 AUTO
-S 11970000 V 03979000 AUTO
-S 11972000 H 03979000 AUTO
-S 11977000 H 03979000 AUTO
-S 12047000 V 03979000 AUTO
-S 12048000 H 03979000 AUTO
-S 12054000 H 03979000 AUTO
-S 12058000 V 03979000 AUTO
-S 12059000 H 03979000 AUTO
-S 12063000 V 03979000 AUTO
-S 12064000 H 03979000 AUTO
-S 12069000 H 03979000 AUTO
-S 12076000 V 08681000 AUTO
-S 12089000 V 06511000 AUTO
-S 12110000 H 04104000 AUTO
-S 12116000 H 03979000 AUTO
-S 12121000 H 03979000 AUTO
-S 12126000 H 03979000 AUTO
-S 12132000 H 03979000 AUTO
-S 12175000 V 05147000 AUTO
diff --git a/util/scan/dvb-s/Galaxy28-89w b/util/scan/dvb-s/Galaxy28-89.0W
index 15a6e54..79592bd 100644
--- a/util/scan/dvb-s/Galaxy28-89w
+++ b/util/scan/dvb-s/Galaxy28-89.0W
@@ -1,6 +1,6 @@
# Galaxy 28 @ 89W
+# Intelsat Americas 8 @ 89W
# freq pol sr fec
-
S 11717000 H 04411000 AUTO
S 11747000 H 06620000 AUTO
S 11756000 H 06620000 AUTO
@@ -16,11 +16,12 @@ S 11936000 H 06000000 AUTO
S 11940000 H 03979000 AUTO
S 11945000 H 03979000 AUTO
S 11950000 H 03979000 AUTO
-S 11955000 V 19532000 AUTO
+S 11955000 H 03979000 AUTO
S 11960000 H 28800000 AUTO
S 11965000 H 03979000 AUTO
S 11970000 H 03979000 AUTO
-S 11975000 V 03979000 AUTO
+S 11970000 V 03979000 AUTO
+S 11975000 H 03979000 AUTO
S 11980000 H 03979000 AUTO
S 11985000 H 03979000 AUTO
S 11989000 V 06111000 AUTO
diff --git a/util/scan/dvb-s/Galaxy3C-95w b/util/scan/dvb-s/Galaxy3C-95.0W
index 9d1e0d6..c62fff4 100644
--- a/util/scan/dvb-s/Galaxy3C-95w
+++ b/util/scan/dvb-s/Galaxy3C-95.0W
@@ -1,4 +1,3 @@
# Galaxy 3C @ 95W
# freq pol sr fec
-
S 11780000 H 20760000 AUTO
diff --git a/util/scan/dvb-s/IA8-89w b/util/scan/dvb-s/IA8-89w
deleted file mode 100644
index ba1dd84..0000000
--- a/util/scan/dvb-s/IA8-89w
+++ /dev/null
@@ -1,34 +0,0 @@
-# Intelsat Americas 8 @ 89W
-# freq pol sr fec
-
-S 11780000 H 29000000 AUTO
-S 11925000 H 03979000 AUTO
-S 11930000 H 03979000 AUTO
-S 11935000 H 03979000 AUTO
-S 11940000 H 03979000 AUTO
-S 11945000 H 03979000 AUTO
-S 11945000 V 03979000 AUTO
-S 11950000 H 03979000 AUTO
-S 11950000 V 03979000 AUTO
-S 11955000 H 03979000 AUTO
-S 11955000 V 03979000 AUTO
-S 11960000 V 03979000 AUTO
-S 11965000 V 03979000 AUTO
-S 11965000 H 03979000 AUTO
-S 11970000 V 03979000 AUTO
-S 11970000 H 03979000 AUTO
-S 11975000 V 03979000 AUTO
-S 11975000 H 03979000 AUTO
-S 11980000 H 03979000 AUTO
-S 11985000 H 03979000 AUTO
-S 11989000 V 06111000 AUTO
-S 11990000 H 03979000 AUTO
-S 11995000 H 03979000 AUTO
-S 12009000 V 06111000 AUTO
-S 12164000 H 03979000 AUTO
-S 12170000 H 03979000 AUTO
-S 12175000 H 03979000 AUTO
-S 12180000 H 03979000 AUTO
-S 12185000 H 03979000 AUTO
-S 12191000 H 03979000 AUTO
-S 12196000 H 03979000 AUTO
diff --git a/util/scan/dvb-s/AMC3-87w b/util/scan/dvb-s/SES2-87.0W
index a081c57..a081c57 100644
--- a/util/scan/dvb-s/AMC3-87w
+++ b/util/scan/dvb-s/SES2-87.0W
diff --git a/util/scan/dvb-t/auto-Italy b/util/scan/dvb-t/auto-Italy
deleted file mode 100644
index 160bf73..0000000
--- a/util/scan/dvb-t/auto-Italy
+++ /dev/null
@@ -1,72 +0,0 @@
-# for $freq (177500000, 186000000, 194500000, 203500000, 212500000, 219500000, 226500000) {
-# print "T $freq 7MHz AUTO NONE AUTO AUTO AUTO NONE\n";
-# print "T $freq 8MHz AUTO NONE AUTO AUTO AUTO NONE\n";
-# }
-# for ($freq = 474000000; $freq <= 858000000; $freq += 8000000) {
-# print "T $freq 8MHz AUTO NONE AUTO AUTO AUTO NONE\n";
-# }
-#
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-T 177500000 7MHz AUTO NONE AUTO AUTO AUTO NONE
-T 177500000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 186000000 7MHz AUTO NONE AUTO AUTO AUTO NONE
-T 186000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 194500000 7MHz AUTO NONE AUTO AUTO AUTO NONE
-T 194500000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 203500000 7MHz AUTO NONE AUTO AUTO AUTO NONE
-T 203500000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 212500000 7MHz AUTO NONE AUTO AUTO AUTO NONE
-T 212500000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 219500000 7MHz AUTO NONE AUTO AUTO AUTO NONE
-T 219500000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 226500000 7MHz AUTO NONE AUTO AUTO AUTO NONE
-T 226500000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 474000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 482000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 490000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 498000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 506000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 514000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 522000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 530000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 538000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 546000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 554000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 562000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 570000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 578000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 586000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 594000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 602000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 610000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 618000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 626000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 634000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 642000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 650000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 658000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 666000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 674000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 682000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 690000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 698000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 706000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 714000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 722000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 730000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 738000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 746000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 754000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 762000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 770000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 778000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 786000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 794000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 802000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 810000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 818000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 826000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 834000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 842000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 850000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
-T 858000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
diff --git a/util/scan/dvb-t/de-Baden-Wuerttemberg b/util/scan/dvb-t/de-Baden-Wuerttemberg
index 200ef17..bc69e09 100644
--- a/util/scan/dvb-t/de-Baden-Wuerttemberg
+++ b/util/scan/dvb-t/de-Baden-Wuerttemberg
@@ -10,7 +10,7 @@ T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH39: SWR-BW, Bayerisches Fernsehe
T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: SWR-BW, Bayerisches Fernsehen, hr, WDR
T 634000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH41: SWR-BW, Bayerisches Fernsehen, hr, WDR
T 650000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH43: Das Erste, arte, Phoenix, EinsPlus
-T 666000000 8MHz 3/4 NONE QAM16 8k 1/8 NONE # CH45: RTL, RTL 2, Super RTL, VOX, RTL Crime, Passion [Sendenorm: MPEG-4]
+T 666000000 8MHz 3/4 NONE QAM16 8k 1/8 NONE # CH45: RTL, RTL2, Super RTL, VOX, RTL Crime, Passion [Sendenorm: MPEG-4]
T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: SWR-BW, Bayerisches Fernsehen, hr, WDR
T 706000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH50: SWR-BW, Bayerisches Fernsehen, hr, WDR
T 722000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH52: Das Erste, arte, Phoenix, EinsPlus
diff --git a/util/scan/dvb-t/de-Bayern b/util/scan/dvb-t/de-Bayern
index 6839380..bf3b55e 100644
--- a/util/scan/dvb-t/de-Bayern
+++ b/util/scan/dvb-t/de-Bayern
@@ -1,7 +1,6 @@
# DVB-T Bayern
# Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-T 191500000 7MHz 3/4 NONE QAM16 8k 1/4 NONE # CH07: Das Erste, arte, Phoenix, EinsPlus (bis zum 11.12.2011)
T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
T 506000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH25: Bayerisches Fernsehen, BR-alpha, SWR, EinsExtra
# CH25: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
@@ -17,7 +16,6 @@ T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH39: Bayerisches Fernsehen, BR-al
T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: Bayerisches Fernsehen, BR-alpha, MDR, hr
# CH40: Das Erste, arte, Phoenix, EinsPlus
T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: Das Erste, arte, Phoenix, EinsPlus
- # CH42: Das Erste, arte, Phoenix, EinsPlus (Kanalwechsel am 12.12.2011)
# CH42: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH44: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: Das Erste, arte, Phoenix, EinsPlus
diff --git a/util/scan/dvb-t/de-Berlin b/util/scan/dvb-t/de-Berlin
index d66a54d..4881a88 100644
--- a/util/scan/dvb-t/de-Berlin
+++ b/util/scan/dvb-t/de-Berlin
@@ -6,7 +6,7 @@ T 522000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH27: Das Erste, RBB, Phoenix, Ein
T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE # CH39: QVC, DasVierte, Bibel.TV, BR-Fernsehen, n-tv, EuroNews/Channe21 Shop + 7 Radioprogr
T 658000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH44: ProSieben, Sat.1, Kabel1, N24
-T 682000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH47: MDR, NDR, arte
+T 682000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH47: MDR, NDR, arte, hr
T 706000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH50: Tele5, HSE 24, WDR, SWR (BW / RP)
T 754000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH56: Eurosport, TV.B, Music1, sixx,
-T 778000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH59: BerlinMix1, (freie Kapazitäten)
+T 778000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH59: BerlinerSpreekanal / JuveloTV, ServusTV, Anixe
diff --git a/util/scan/dvb-t/de-Bremen b/util/scan/dvb-t/de-Bremen
index 3be3735..1b4a86c 100644
--- a/util/scan/dvb-t/de-Bremen
+++ b/util/scan/dvb-t/de-Bremen
@@ -4,6 +4,6 @@
T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: Das Erste (RB), RB TV (NDR NDS), arte, Phoenix
T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH29: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
T 562000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH32: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
-T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: RTL, RTL 2, Super RTL, VOX
-T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: Tele 5, SIXX, QVC, Mona/Das Vierte
+T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: RTL, RTL2, Super RTL, VOX
+T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: Tele 5, SIXX, QVC, Mona / Bibel TV / Das Vierte
T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: ProSieben, Sat.1, Kabel1, N24
diff --git a/util/scan/dvb-t/de-Hamburg b/util/scan/dvb-t/de-Hamburg
index 7e5bca3..806e2d6 100644
--- a/util/scan/dvb-t/de-Hamburg
+++ b/util/scan/dvb-t/de-Hamburg
@@ -5,7 +5,7 @@ T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFneo, ZD
T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: NDR SH, WDR/NDR NDS, MDR/NDR MVP, BR Fernsehen/NDR HH
T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ProSieben, Sat.1/ Sat.1Regional, Kabel1, N24
T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: Das Erste, arte, Phoenix, EinsExtra
-T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: Tele 5, Das Vierte, QVC, Channel21/ Euronews
-T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: RTL / Guten Abend RTL, RTL 2, Super RTL, VOX
+T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: Tele5, Das Vierte, QVC, Channel21/ Euronews
+T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: RTL, RTL2, Super RTL, VOX
T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH46: SIXX, Hamburg 1, Bibel TV, Eurosport
T 738000000 8MHz 1/2 NONE QAM64 8k 1/8 NONE # CH54: NDR HH, WDR/NDR NDS, MDR/NDR MVP, BR Fernsehen/NDR SH
diff --git a/util/scan/dvb-t/de-Hessen b/util/scan/dvb-t/de-Hessen
index 132c02a..b1fca3a 100644
--- a/util/scan/dvb-t/de-Hessen
+++ b/util/scan/dvb-t/de-Hessen
@@ -3,17 +3,17 @@
# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
T 474000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH21: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
-T 498000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH24: Phoenix, Bayerisches Fernsehen, SWR-RP, WDR
+T 498000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH24: hr, Bayerisches Fernsehen, SWR-RP, WDR
T 506000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH25: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
-T 562000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH32: Das Erste, hr, arte / EinsExtra
-T 578000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH34: RTL, RTL 2, Super RTL, VOX
-T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH35: Phoenix, Bayerisches Fernsehen, SWR-RP, MDR
-T 602000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH37: Das Erste, hr, arte / EinsExtra
-T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH39: Phoenix, Bayerisches Fernsehen, SWR-RP
+T 562000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH32: Das Erste, Phoenix, arte, EinsExtra
+T 578000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH34: RTL, RTL2, Super RTL, VOX
+T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH35: hr, Bayerisches Fernsehen, SWR-RP, MDR
+T 602000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH37: Das Erste, Phoenix, arte, EinsExtra
+T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH39: hr, Bayerisches Fernsehen, SWR-RP, rbb
T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
-T 650000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH43: Das Erste, hr, arte / EinsExtra
+T 650000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH43: Das Erste, Phoenix, arte, EinsExtra
T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
-T 722000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH52: Tele5, QVC, rheinmaintv / Channel21, Bibel.TV
-T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH53: Bayerisches Fernsehen, hr, SWR-BW, WDR
+T 722000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH52: Tele5, QVC, rheinmaintv / Channel21, iMusic1 / Anixe
+T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH53: hr, Bayerisches Fernsehen, SWR-BW, WDR
T 738000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH54: ProSieben, Sat.1, Kabel1, N24
-T 746000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH55: Phoenix, NDR, MDR, WDR
+T 746000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH55: hr, NDR, MDR, WDR
diff --git a/util/scan/dvb-t/de-Niedersachsen b/util/scan/dvb-t/de-Niedersachsen
index cf474d2..a02bd59 100644
--- a/util/scan/dvb-t/de-Niedersachsen
+++ b/util/scan/dvb-t/de-Niedersachsen
@@ -5,9 +5,9 @@ T 474000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH21: NDR NDS, WDR/NDR SH, MDR/NDR
T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: Das Erste (RB), RB TV (NDR NDS), arte, Phoenix
# CH22: Das Erste, arte, Phoenix, EinsExtra
T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
-T 498000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH24: RTL, RTL 2, Super RTL, VOX
+T 498000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH24: RTL, RTL2, Super RTL, VOX
T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH26: Das Erste, arte, Phoenix, EinsExtra
-T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: Tele 5, Nickelodeon/Comedy Central, Eurosport, Mona/Das Vierte
+T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: Tele 5, Nickelodeon/Comedy Central, Eurosport, Mona / Bibel TV / Das Vierte
T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH29: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
T 554000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH31: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
T 562000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH32: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
@@ -15,15 +15,15 @@ T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH35: ZDF, 3sat, KiKa / ZDFneo, ZD
T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
T 610000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH38: Das Erste, arte, Phoenix, EinsExtra
# CH38: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
-T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: RTL, RTL 2, Super RTL, VOX
+T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: RTL, RTL2, Super RTL, VOX
# CH42: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
T 650000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH43: Das Erste, arte, Phoenix, EinsExtra
# CH43: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH44: ProSieben, Sat.1, Kabel1, N24
-T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: Tele 5, SIXX, QVC, Mona/Das Vierte
+T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: Tele 5, SIXX, QVC, Mona / Bibel TV / Das Vierte
T 682000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH47: Das Erste, arte, Phoenix, EinsExtra
T 690000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH48: Das Erste, arte, Phoenix, EinsExtra
T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: ProSieben, Sat.1, Kabel1, N24
T 770000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH58: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
T 778000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH59: Das Erste, arte, Phoenix, EinsExtra
-T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH60: Tele 5, Nickelodeon/Comedy Central, Eurosport, Mona/Das Vierte
+T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH60: Tele 5, Nickelodeon/Comedy Central, Eurosport, Mona / Bibel TV / Das Vierte
diff --git a/util/scan/dvb-t/de-Nordrhein-Westfalen b/util/scan/dvb-t/de-Nordrhein-Westfalen
index 0d60591..e0fbec3 100644
--- a/util/scan/dvb-t/de-Nordrhein-Westfalen
+++ b/util/scan/dvb-t/de-Nordrhein-Westfalen
@@ -1,23 +1,23 @@
# DVB-T Nordrhein-Westfalen
# Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-T 506000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH25: WDR-Dortmund, NDR/WDR-Essen, MDR, SWR
+T 506000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH25: WDR-Dortmund, NDR/WDR-Ruhr, MDR, SWR
T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH26: Das Erste, arte, Phoenix, EinsFestival
# CH26: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
-T 522000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE # CH27: WDR-Siegen, NDR, MDR, SWR
+T 522000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE # CH27: WDR-Südwestfalen, NDR, MDR, SWR
T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH29: RTL, RTL2, Super RTL, VOX
T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
-T 554000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE # CH31: WDR-Bielefeld, NDR/WDR-Siegen, MDR, SWR
+T 554000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE # CH31: WDR-OWL_aktuell, NDR/WDR-Südwestfalen, MDR, SWR
T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH35: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: Tele5, CNN, Eurosport, VIVA
T 602000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE # CH37: WDR-Aachen, NDR/WDR-Köln, MDR, SWR
-T 674000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE # CH46: WDR-Düsseldorf, MDR/WDR-Duisburg, NDR/WDR-Wuppertal, SWR
+T 674000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE # CH46: WDR-Düsseldorf, MDR/WDR-Duisburg, NDR/WDR-Berg.Land, SWR
T 690000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH48: Das Erste, arte, Phoenix, EinsFestival
T 698000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE # CH49: WDR-Köln, MDR/WDR-Bonn, NDR/WDR-Aachen, SWR
T 706000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH50: Das Erste, arte, Phoenix, EinsFestival
T 722000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH52: Tele5, CNN, Eurosport, VIVA
T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH53: ProSieben, Sat.1, Kabel1, N24
T 746000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH55: ProSieben, Sat.1, Kabel1, N24
-T 762000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH57: WDR-Essen, NDR/WDR-Dortmund, MDR, SWR
+T 762000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH57: WDR-Ruhr, NDR/WDR-Dortmund, MDR, SWR
T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH60: Das Erste, arte, Phoenix, EinsFestival
diff --git a/util/scan/dvb-t/de-Rheinland-Pfalz b/util/scan/dvb-t/de-Rheinland-Pfalz
index 6eabe6d..c8f4b9e 100644
--- a/util/scan/dvb-t/de-Rheinland-Pfalz
+++ b/util/scan/dvb-t/de-Rheinland-Pfalz
@@ -9,4 +9,3 @@ T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH46: Das Erste, arte, Phoenix, Ei
T 690000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH48: SWR-RP, Bayerisches Fernsehen, hr, WDR
T 754000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH56: Das Erste, arte, Phoenix, EinsPlus
T 762000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH57: Das Erste, arte, Phoenix, EinsPlus
-T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH60: Das Erste, arte, Phoenix, EinsPlus
diff --git a/util/scan/dvb-t/de-Saarland b/util/scan/dvb-t/de-Saarland
index 7ac26b3..a55037d 100644
--- a/util/scan/dvb-t/de-Saarland
+++ b/util/scan/dvb-t/de-Saarland
@@ -4,4 +4,4 @@
T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: Das Erste, SR Fernsehen, arte, Phoenix
T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH44: SWR-RP, Bayerisches Fernsehen, hr, WDR
-T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: Tele 5, QVC, Bibel.TV, freie Kapazität
+T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: Tele5, QVC, Bibel.TV, freie Kapazität
diff --git a/util/scan/dvb-t/de-Sachsen b/util/scan/dvb-t/de-Sachsen
index e56762f..274a949 100644
--- a/util/scan/dvb-t/de-Sachsen
+++ b/util/scan/dvb-t/de-Sachsen
@@ -5,7 +5,7 @@ T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFneo, ZD
T 498000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH24: Das Erste, arte, Phoenix, EinsFestival
T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH25: Das Erste, arte, Phoenix, EinsFestival
T 522000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH27: MDR-SN, rbb, Bayerisches Fernsehen, WDR
-T 530000000 8MHz 3/4 NONE QAM16 8k 1/8 NONE # CH28: RTL, RTL 2, Super RTL, VOX, RTL Crime, RTL Passion [Sendenorm: MPEG-4]
+T 530000000 8MHz 3/4 NONE QAM16 8k 1/8 NONE # CH28: RTL, RTL2, Super RTL, VOX, RTL Crime, Passion [Sendenorm: MPEG-4]
T 538000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH29: MDR-SN, rbb, Bayerisches Fernsehen, WDR
T 554000000 8MHz 2/3 NONE QAM16 8k 1/16 NONE # CH31: LF Leipzg.Ferns., InfoTVLeipzig, BBCWorld, Bibel.TV, RadioLeipzig, RadioHoreb
T 562000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH32: MDR-SN, rbb, Bayerisches Fernsehen, WDR
diff --git a/util/scan/dvb-t/de-Sachsen-Anhalt b/util/scan/dvb-t/de-Sachsen-Anhalt
index 9ff5de3..2b2afba 100644
--- a/util/scan/dvb-t/de-Sachsen-Anhalt
+++ b/util/scan/dvb-t/de-Sachsen-Anhalt
@@ -3,7 +3,7 @@
# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
T 498000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH24: Das Erste, arte, Phoenix, EinsFestival
-T 530000000 8MHz 3/4 NONE QAM16 8k 1/8 NONE # CH28: RTL, RTL 2, Super RTL, VOX, RTL Crime, RTL Passion [Sendenorm: MPEG-4]
+T 530000000 8MHz 3/4 NONE QAM16 8k 1/8 NONE # CH28: RTL, RTL2, Super RTL, VOX, RTL Crime, Passion [Sendenorm: MPEG-4]
T 538000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH29: Das Erste, arte, Phoenix, EinsFestival
T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
T 554000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH31: ZDF, 3sat, KiKa / ZDFneo, ZDFinfo
diff --git a/util/scan/dvb-t/de-Schleswig-Holstein b/util/scan/dvb-t/de-Schleswig-Holstein
index a4b905e..634f51b 100644
--- a/util/scan/dvb-t/de-Schleswig-Holstein
+++ b/util/scan/dvb-t/de-Schleswig-Holstein
@@ -11,8 +11,8 @@ T 554000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH31: ZDF, 3sat, KiKa / ZDFneo, ZD
T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: Das Erste, arte, Phoenix, EinsExtra
T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH35: ProSieben, Sat.1/ Sat.1Regional, Kabel1, N24
T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH39: NDR SH, WDR/NDR NDS, MDR/NDR MVP, BR Fernsehen/NDR HH
-T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: RTL / Guten Abend RTL, RTL 2, Super RTL, VOX
-T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: RTL / Guten Abend RTL, RTL 2, Super RTL, VOX
+T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: RTL, RTL2, Super RTL, VOX
+T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: RTL, RTL2, Super RTL, VOX
T 682000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH47: Das Erste, arte, Phoenix, EinsExtra
T 762000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH57: Tele 5, SIXX, das Vierte, Bibel TV
T 778000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH59: Tele 5, SIXX, das Vierte, Bibel TV
diff --git a/util/scan/dvb-t/es-Huesca b/util/scan/dvb-t/es-Huesca
index 8079b83..aaada34 100644
--- a/util/scan/dvb-t/es-Huesca
+++ b/util/scan/dvb-t/es-Huesca
@@ -1,8 +1,15 @@
-# DVB-T Huesca (Aragón) [Spain] [es-Huesca]
+# DVB-T Huesca (Aragon) [Spain] [es-Huesca]
# Generated by Vicente Hernando Ara <bizenton@gmail.com>
-T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # Canal 57: ARAGON TV, ARAGON RADIO, ARAGON HD
-T 794000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 61: La 1, La 2, 24h, Clan, RNE1, RNEC, RNE3
-T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 66: Teledeporte, Canal Ingenieria, VEO7, SONY TV en VEO, Tienda en VEO, GUIDE PLUS+, Intereconomia, Radio Intereconomia, RADIO MARCA
-T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 67: laSexta, CUATRO, CNN+, 40 LATINO, PROMO, SER, 40 PRINCIPALES, CADENA DIAL
-T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 68: Telecinco, FDF, Telecinco 2, Disney Channel, Cincoshop
-T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 69: ANTENA 3, ANTENA.NEOX, ANTENA.NOVA, ONDA CERO, EUROPA FM, ONDA MELODÍA, HOGAR 10
+# T[2] [plp_id] [system_id] <freq> <bw> <fec_hi> <fec_lo> <mod> <tm> <guard> <hi> [# comment]
+#------------------------------------------------------------------------------
+
+T 650000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH 43 HTV-HuescaTelevision
+T 658000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH 44 La Sexta 2
+T 666000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH 45 TVE HD
+T 690000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH 48 NITRO
+T 738000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH 54 BOING
+T 762000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH 57 ARAGON TV
+T 794000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH 61 TVE
+T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH 67
+T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH 68
+T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH 69
diff --git a/util/scan/dvb-t/fi-Espoo b/util/scan/dvb-t/fi-Espoo
index 2764c44..ed5e30f 100644
--- a/util/scan/dvb-t/fi-Espoo
+++ b/util/scan/dvb-t/fi-Espoo
@@ -4,3 +4,4 @@ T 562000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
diff --git a/util/scan/dvb-t/fi-Eurajoki b/util/scan/dvb-t/fi-Eurajoki
index 6ed4e1b..625d5a7 100644
--- a/util/scan/dvb-t/fi-Eurajoki
+++ b/util/scan/dvb-t/fi-Eurajoki
@@ -4,3 +4,4 @@ T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 722000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
diff --git a/util/scan/dvb-t/fi-Jyvaskyla b/util/scan/dvb-t/fi-Jyvaskyla
index a85ec1e..b443b70 100644
--- a/util/scan/dvb-t/fi-Jyvaskyla
+++ b/util/scan/dvb-t/fi-Jyvaskyla
@@ -4,3 +4,4 @@ T 546000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+T 586000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
diff --git a/util/scan/dvb-t/fi-Lahti b/util/scan/dvb-t/fi-Lahti
index 23f3b29..a24074f 100644
--- a/util/scan/dvb-t/fi-Lahti
+++ b/util/scan/dvb-t/fi-Lahti
@@ -4,3 +4,4 @@ T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 682000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
diff --git a/util/scan/dvb-t/fi-Lohja b/util/scan/dvb-t/fi-Lohja
index 68287ee..92ce45a 100644
--- a/util/scan/dvb-t/fi-Lohja
+++ b/util/scan/dvb-t/fi-Lohja
@@ -1,6 +1,6 @@
# automatically generated from http://www.digitv.fi/sivu.asp?path=1;8224;9519
# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-T 706000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+T 690000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 746000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
-T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
diff --git a/util/scan/dvb-t/fi-Oulu b/util/scan/dvb-t/fi-Oulu
index e0b88da..e9fc242 100644
--- a/util/scan/dvb-t/fi-Oulu
+++ b/util/scan/dvb-t/fi-Oulu
@@ -4,3 +4,4 @@ T 634000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 738000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
diff --git a/util/scan/dvb-t/fi-Tampere b/util/scan/dvb-t/fi-Tampere
index 408e9d4..d3839f3 100644
--- a/util/scan/dvb-t/fi-Tampere
+++ b/util/scan/dvb-t/fi-Tampere
@@ -4,3 +4,4 @@ T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 490000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 770000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+T 730000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
diff --git a/util/scan/dvb-t/fi-Turku b/util/scan/dvb-t/fi-Turku
index 187d618..7a63bbb 100644
--- a/util/scan/dvb-t/fi-Turku
+++ b/util/scan/dvb-t/fi-Turku
@@ -4,3 +4,4 @@ T 714000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 738000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 762000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
T 786000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
diff --git a/util/scan/dvb-t/ie-CairnHill b/util/scan/dvb-t/ie-CairnHill
new file mode 100644
index 0000000..002881a
--- /dev/null
+++ b/util/scan/dvb-t/ie-CairnHill
@@ -0,0 +1,5 @@
+# Ireland, Cairn Hill
+# Generated from http://www.comreg.ie/_fileupload/File/Technical%20Parameters_20111004.xlsx
+# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+T 682000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH47: Saorview MUX1
+T 658000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH44: Saorview MUX2
diff --git a/util/scan/dvb-t/ie-ClermontCarn b/util/scan/dvb-t/ie-ClermontCarn
new file mode 100644
index 0000000..680ffce
--- /dev/null
+++ b/util/scan/dvb-t/ie-ClermontCarn
@@ -0,0 +1,5 @@
+# Ireland, Clermont Carn
+# Generated from http://www.comreg.ie/_fileupload/File/Technical%20Parameters_20111004.xlsx
+# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+T 730000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH53: Saorview MUX1
+T 762000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH57: Saorview MUX2
diff --git a/util/scan/dvb-t/ie-Dungarvan b/util/scan/dvb-t/ie-Dungarvan
new file mode 100644
index 0000000..7f5d6a3
--- /dev/null
+++ b/util/scan/dvb-t/ie-Dungarvan
@@ -0,0 +1,5 @@
+# Ireland, Dungarvan
+# Generated from http://www.comreg.ie/_fileupload/File/Technical%20Parameters_20111004.xlsx
+# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+T 746000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH55: Saorview MUX1
+T 778000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH59: Saorview MUX2
diff --git a/util/scan/dvb-t/ie-HolywellHill b/util/scan/dvb-t/ie-HolywellHill
new file mode 100644
index 0000000..4557ec1
--- /dev/null
+++ b/util/scan/dvb-t/ie-HolywellHill
@@ -0,0 +1,5 @@
+# Ireland, Holywell Hill
+# Generated from http://www.comreg.ie/_fileupload/File/Technical%20Parameters_20111004.xlsx
+# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+T 546000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH30: Saorview MUX1
+T 506000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH25: Saorview MUX2
diff --git a/util/scan/dvb-t/ie-Kippure b/util/scan/dvb-t/ie-Kippure
new file mode 100644
index 0000000..723f7be
--- /dev/null
+++ b/util/scan/dvb-t/ie-Kippure
@@ -0,0 +1,5 @@
+# Ireland, Kippure
+# Generated from http://www.comreg.ie/_fileupload/File/Technical%20Parameters_20111004.xlsx
+# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+T 738000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH54: Saorview MUX1
+T 770000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH58: Saorview MUX2
diff --git a/util/scan/dvb-t/ie-Maghera b/util/scan/dvb-t/ie-Maghera
new file mode 100644
index 0000000..8144c38
--- /dev/null
+++ b/util/scan/dvb-t/ie-Maghera
@@ -0,0 +1,5 @@
+# Ireland, Maghera
+# Generated from http://www.comreg.ie/_fileupload/File/Technical%20Parameters_20111004.xlsx
+# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+T 690000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH48: Saorview MUX1
+T 746000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH55: Saorview MUX2
diff --git a/util/scan/dvb-t/ie-MountLeinster b/util/scan/dvb-t/ie-MountLeinster
new file mode 100644
index 0000000..780ac0a
--- /dev/null
+++ b/util/scan/dvb-t/ie-MountLeinster
@@ -0,0 +1,5 @@
+# Ireland, Mount Leinster
+# Generated from http://www.comreg.ie/_fileupload/File/Technical%20Parameters_20111004.xlsx
+# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+T 666000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH45: Saorview MUX1
+T 618000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH39: Saorview MUX2
diff --git a/util/scan/dvb-t/ie-Mullaghanish b/util/scan/dvb-t/ie-Mullaghanish
new file mode 100644
index 0000000..aae3e97
--- /dev/null
+++ b/util/scan/dvb-t/ie-Mullaghanish
@@ -0,0 +1,5 @@
+# Ireland, Mullaghanish
+# Generated from http://www.comreg.ie/_fileupload/File/Technical%20Parameters_20111004.xlsx
+# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+T 474000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH21: Saorview MUX1
+T 498000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH24: Saorview MUX2
diff --git a/util/scan/dvb-t/ie-SpurHill b/util/scan/dvb-t/ie-SpurHill
new file mode 100644
index 0000000..e8db8a5
--- /dev/null
+++ b/util/scan/dvb-t/ie-SpurHill
@@ -0,0 +1,5 @@
+# Ireland, Spur Hill
+# Generated from http://www.comreg.ie/_fileupload/File/Technical%20Parameters_20111004.xlsx
+# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+T 666000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH45: Saorview MUX1
+T 698000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH49: Saorview MUX2
diff --git a/util/scan/dvb-t/ie-ThreeRock b/util/scan/dvb-t/ie-ThreeRock
new file mode 100644
index 0000000..ba4d43f
--- /dev/null
+++ b/util/scan/dvb-t/ie-ThreeRock
@@ -0,0 +1,5 @@
+# Ireland, Three Rock
+# Generated from http://www.comreg.ie/_fileupload/File/Technical%20Parameters_20111004.xlsx
+# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+T 738000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH54: Saorview MUX1
+T 770000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH58: Saorview MUX2
diff --git a/util/scan/dvb-t/ie-Truskmore b/util/scan/dvb-t/ie-Truskmore
new file mode 100644
index 0000000..2418f16
--- /dev/null
+++ b/util/scan/dvb-t/ie-Truskmore
@@ -0,0 +1,5 @@
+# Ireland, Truskmore
+# Generated from http://www.comreg.ie/_fileupload/File/Technical%20Parameters_20111004.xlsx
+# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+T 730000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH53: Saorview MUX1
+T 762000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH57: Saorview MUX2
diff --git a/util/scan/dvb-t/ie-WoodcockHill b/util/scan/dvb-t/ie-WoodcockHill
new file mode 100644
index 0000000..6ca3d15
--- /dev/null
+++ b/util/scan/dvb-t/ie-WoodcockHill
@@ -0,0 +1,5 @@
+# Ireland, Woodcock Hill
+# Generated from http://www.comreg.ie/_fileupload/File/Technical%20Parameters_20111004.xlsx
+# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+T 682000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH47: Saorview MUX1
+T 658000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE # CH44: Saorview MUX2
diff --git a/util/scan/dvb-t/it-All b/util/scan/dvb-t/it-All
new file mode 100644
index 0000000..e1134c3
--- /dev/null
+++ b/util/scan/dvb-t/it-All
@@ -0,0 +1,135 @@
+# This file lists all frequencies used in Western Europe for DVB-T.
+# The transmission parameters listed here are the ones generally used in
+# Italy, broadcast neworks in other countries do use different parameters.
+# Moreover, other countries use a bandwidth of 8 MHz also for Band III
+# channels.
+#
+# Compiled in December 2010 by Marco d'Itri <md@linux.it>.
+#
+# References:
+# http://en.wikipedia.org/wiki/Band_I#Europe
+# http://en.wikipedia.org/wiki/Band_III#Europe
+# http://en.wikipedia.org/wiki/File:VHF_Usage.svg
+# http://en.wikipedia.org/wiki/Television_channel_frequencies
+
+# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+
+### VHF - Band III ###
+# 5
+T 177500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 6
+T 184500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 7
+T 191500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 8
+T 198500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 9
+T 205500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 10
+T 212500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 11
+T 219500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 12
+T 226500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
+
+### UHF - Band IV ###
+# 21
+T 474000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 22
+T 482000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 23
+T 490000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 24
+T 498000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 25
+T 506000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 26
+T 514000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 27
+T 522000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 28
+T 530000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 29
+T 538000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 30
+T 546000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 31
+T 554000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 32
+T 562000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 33
+T 570000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 34
+T 578000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 35
+T 586000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 36
+T 594000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 37
+T 602000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+
+### UHF - Band V ###
+# 38
+T 610000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 39
+T 618000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 40
+T 626000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 41
+T 634000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 42
+T 642000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 43
+T 650000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 44
+T 658000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 45
+T 666000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 46
+T 674000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 47
+T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 48
+T 690000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 49
+T 698000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 50
+T 706000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 51
+T 714000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 52
+T 722000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 53
+T 730000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 54
+T 738000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 55
+T 746000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 56
+T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 57
+T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 58
+T 770000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 59
+T 778000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 60
+T 786000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 61
+T 794000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 62
+T 802000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 63
+T 810000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 64
+T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 65
+T 826000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 66
+T 834000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 67
+T 842000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 68
+T 850000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+# 69
+T 858000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-Aosta b/util/scan/dvb-t/it-Aosta
deleted file mode 100644
index 28c32ae..0000000
--- a/util/scan/dvb-t/it-Aosta
+++ /dev/null
@@ -1,21 +0,0 @@
-# Italia / Aosta (it-Aosta) -- mailto: Marco <lovebuzz@email.it>
-#
-# A me funziona solo il Mux Mediaset 2 non riesco a capire come mai...
-# (magari colpa della mia pinnacle pctv 301i saa7133)
-# Gli altri Mux inseriti li ho inseriti come da sito http://www.digitv.it...
-#
-# Chi avesse news o riuscisse a venirne a capo usando anche gli altri mux potrebbe scrivermi
-# inviare una maila kaffeine-user@lists.sf.net per aggiornare/correggere questo file...
-#
-# MUX-A RAI
-T 226500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX MEDIASET 1
-T 474000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MBONE
-T 746000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX DFREE
-T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX MEDIASET 2
-T 770000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# TIMB1
-T 786000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-Bari b/util/scan/dvb-t/it-Bari
deleted file mode 100644
index efcc852..0000000
--- a/util/scan/dvb-t/it-Bari
+++ /dev/null
@@ -1,18 +0,0 @@
-# Italy, Bari
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-# MUX-A RAI
-T 219500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX-B RAI
-T 546000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX MEDIASET 1
-T 514000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX DFREE
-T 226500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX MEDIASET 2
-T 826000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MBONE
-T 498000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# TIMB1
-T 530000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# TeleNorba, TelePuglia, altro...
-T 794000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-Bologna b/util/scan/dvb-t/it-Bologna
deleted file mode 100644
index 8f5a136..0000000
--- a/util/scan/dvb-t/it-Bologna
+++ /dev/null
@@ -1,28 +0,0 @@
-# DVB-T Collserola (Barcelona)
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-#TeleSanterno
-T 186000000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
-#RaiA
-T 203500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Sestarete / Rete 7
-T 212500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Modena
-T 219500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
-#ReteA, Camera e Senato
-T 594000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Sestarete / Rete 7
-T 610000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#DFree
-T 634000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mediaset Mux-B
-T 698000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#La7
-T 714000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#RaiB
-T 722000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mediaset Mux-A
-T 794000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#TeleSanterno
-T 802000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#LA7-2
-T 842000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-Bolzano b/util/scan/dvb-t/it-Bolzano
deleted file mode 100644
index f4a8e9b..0000000
--- a/util/scan/dvb-t/it-Bolzano
+++ /dev/null
@@ -1,5 +0,0 @@
-# DVB-T Bolzano
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-
-#RAS DVB-t NETWORK
-T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE
diff --git a/util/scan/dvb-t/it-Cagliari b/util/scan/dvb-t/it-Cagliari
deleted file mode 100644
index 2cfb4c1..0000000
--- a/util/scan/dvb-t/it-Cagliari
+++ /dev/null
@@ -1,23 +0,0 @@
-# DVB-T Cagliari
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-T 205500000 7MHz 3/4 NONE QAM64 8k 1/32 NONE
-T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
-T 514000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
-T 522000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE
-T 546000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 562000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
-T 594000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE
-T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
-T 626000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 642000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE
-T 650000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
-T 674000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE
-T 682000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
-T 698000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
-T 722000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE
-T 730000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
-T 746000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE
-T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 762000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
-T 786000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
-T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-Caivano b/util/scan/dvb-t/it-Caivano
deleted file mode 100644
index 86a9847..0000000
--- a/util/scan/dvb-t/it-Caivano
+++ /dev/null
@@ -1,17 +0,0 @@
-# DVB-T Caivano (Naples) 80023
-# 30/10/2008 by Nicola Costanzo
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 690000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX DFREE
-T 546000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX MEDIASET 1
-T 810000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX MEDIASET 2
-T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX LA7/MTV
-T 834000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# TIMB1
-T 602000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX-A RAI
-T 722000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-Catania b/util/scan/dvb-t/it-Catania
deleted file mode 100644
index 20bacd6..0000000
--- a/util/scan/dvb-t/it-Catania
+++ /dev/null
@@ -1,27 +0,0 @@
-# it-Catania
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-
-# MUX DFREE (Canale 5,Italia1,SportItalia,LCI,RadioItalia Tv)
-T 810000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 690000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 618000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-
-# MUX LA7/MTV (La 7,MTV ITALIA,Canale D,Music Box)
-#T 586000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-
-# MUX RTI (Rete 4,Class News,Sole 24 Ore TV,BBC World)
-T 586000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-
-# MUX MEDIASET 1
-T 226500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 834000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-
-# MUX MEDIASET 2
-T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 650000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-
-# MUX-A RAI (Rai Utile,Rai Doc,RaiSportSAT,RaiNews24,Rai EDU1)
-T 610000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-
-# MUX-B RAI (Rai Utile,Rai Doc,RaiSportSAT,RaiNews24,Rai EDU1)
-T 482000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-Conero b/util/scan/dvb-t/it-Conero
deleted file mode 100644
index 2d48138..0000000
--- a/util/scan/dvb-t/it-Conero
+++ /dev/null
@@ -1,8 +0,0 @@
-# Italia / Conero (it-Conero) -- mailto: simon <f.simon@email.it>
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-# C50
-T 706000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# C46
-T 674000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# C21
-T 474000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-Firenze b/util/scan/dvb-t/it-Firenze
deleted file mode 100644
index eca721a..0000000
--- a/util/scan/dvb-t/it-Firenze
+++ /dev/null
@@ -1,20 +0,0 @@
-# This channel list is made by Michele Ficarra
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-# MUX-A RAI
-T 554000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX-B RAI
-T 842000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX MEDIASET 1
-T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX MEDIASET 2
-T 826000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX La7/MTV
-T 618000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX DFREE
-T 738000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX MBON
-T 778000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX Digitoscana
-T 219500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX Tele37
-T 786000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-Genova b/util/scan/dvb-t/it-Genova
deleted file mode 100644
index 5a1b6dd..0000000
--- a/util/scan/dvb-t/it-Genova
+++ /dev/null
@@ -1,12 +0,0 @@
-# Italia / Genova (it-Genova) - Angelo Conforti <angeloxx@angeloxx.it>
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-# MUX-A RAI
-T 498000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX-B RAI
-T 219500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX La7/MTV
-T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX DFREE
-T 770000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX Mediaset
-T 850000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-Livorno b/util/scan/dvb-t/it-Livorno
deleted file mode 100644
index 075d8b4..0000000
--- a/util/scan/dvb-t/it-Livorno
+++ /dev/null
@@ -1,15 +0,0 @@
-# This channel list is made by G.U.L.LI. LIvorno's Linux Users Group
-# Thanks to: Alessandro Guarguaglini, Stefano Lenzi
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-# MUX-A RAI
-T 698000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX-B RAI
-T 658000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX MEDIASET 1
-T 618000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX MEDIASET 2
-T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX La7/MTV
-T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX DFREE
-T 586000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-Milano b/util/scan/dvb-t/it-Milano
deleted file mode 100644
index a0a5da2..0000000
--- a/util/scan/dvb-t/it-Milano
+++ /dev/null
@@ -1,49 +0,0 @@
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-# MUX-A RAI
-T 800000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 490000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX-B RAI
-T 482000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX-A MEDIASET
-T 842000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX-A MEDIASET-2
-T 618000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MEDIASET LA 5
-T 538000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX La7/MTV
-T 802000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX DFREE
-T 706000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX DFREE 2
-T 538000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX RETE A
-T 714000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX STUDIO1
-T 184500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX STUDIO NORD
-T 191500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX VIDEO STAR NOVARA
-T 219500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX TELENOVA
-T 474000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX TELE 7 LAGHI
-T 495250000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX VIDEO BERGAMO
-T 594000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX TELE MILANO
-T 602000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# RETE 55
-T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# TELE LIBERTA'
-T 735250000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# RSI
-T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# TELE COLOR PRIMARETE
-T 783250000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 786000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# TELESTAR
-T 807250000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 810000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# TELECAMPIONE
-T 847250000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 850000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-Modena b/util/scan/dvb-t/it-Modena
deleted file mode 100644
index 56dd106..0000000
--- a/util/scan/dvb-t/it-Modena
+++ /dev/null
@@ -1,50 +0,0 @@
-# DVB-T Collserola (Barcelona)
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-#Mux 1 Rai
-T 177500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux 2 Rai
-T 546000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux 3 Rai
-T 514000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux 4 Rai
-# T 626000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux Timb 1
-T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux Timb 2
-T 786000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux Timb 3
-T 690000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux Mediaset 1
-T 722000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux Mediaset 2
-T 594000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux Mediaset 4
-T 698000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux Mediaset 5
-T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux Mediaset 6
-T 770000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux Rete A 1
-T 658000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux DFree
-T 706000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux Di. TV
-T 184500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux TV Rete 7
-T 642000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux Telestudio Modena
-T 650000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux Sesta Rete
-T 666000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux Trc Telemodena
-T 674000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux Canale Italia
-T 730000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux Telecentro Emilia Romagna
-T 802000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux Canale 24
-T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux VMT
-T 826000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#Mux Nuovarete
-T 834000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-Montevergine b/util/scan/dvb-t/it-Montevergine
deleted file mode 100644
index 0d7c30d..0000000
--- a/util/scan/dvb-t/it-Montevergine
+++ /dev/null
@@ -1,18 +0,0 @@
-# DVB-T Montevergine (Avellino) 83100
-# 12/12/2009 by Antonio Galasso anto1714@libero.it
-# (ricordati di mettere il lettore in posizione stop orima di iniziare la scansione dei canali)
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-# C-MUX
-T 177500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 482000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
-T 498000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 514000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
-T 522000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 530000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 546000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
-T 554000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 594000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
-T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
-T 682000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
-T 690000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
-T 698000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
diff --git a/util/scan/dvb-t/it-Pagnacco b/util/scan/dvb-t/it-Pagnacco
deleted file mode 100644
index c6f482d..0000000
--- a/util/scan/dvb-t/it-Pagnacco
+++ /dev/null
@@ -1,27 +0,0 @@
-# Italia / Pagnacco (it-Pagnacco)
-# DVB-T Pagnacco (Italia)
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-
-# MUX-A RAI
-
-T 602000000 8MHz 3/4 NONE QAM64 8k 1/32 NONE
-
-# MUX-B RAI
-
-T 490000000 8MHz 3/4 NONE QAM64 8k 1/32 NONE
-T 226500000 8MHz 3/4 NONE QAM64 8k 1/32 NONE
-
-# MUX-Dfree
-
-T 634000000 8MHz 3/4 NONE QAM64 8k 1/32 NONE
-T 594000000 8MHz 3/4 NONE QAM64 8k 1/32 NONE
-
-# MUX-LA7/MTV
-
-T 522000000 8MHz 3/4 NONE QAM64 8k 1/32 NONE
-
-# Mediaset
-
-T 818000000 8MHz 3/4 NONE QAM64 8k 1/32 NONE
-
-# Europa
diff --git a/util/scan/dvb-t/it-Palermo b/util/scan/dvb-t/it-Palermo
deleted file mode 100644
index e375565..0000000
--- a/util/scan/dvb-t/it-Palermo
+++ /dev/null
@@ -1,23 +0,0 @@
-# Palermo, Italy
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-
-# MUX DFREE (Canale 5,Italia1,SportItalia,LCI,RadioItalia Tv)
-T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 602000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 850000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-
-# MUX LA7/MTV (La 7,MTV ITALIA,Canale D,Music Box)
-#T 730000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-
-# MUX RTI (Rete 4,Class News,Sole 24 Ore TV,BBC World)
-T 842000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-
-# MUX MEDIASET 2
-T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 650000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-
-# MUX-A RAI (Rai Utile,Rai Doc,RaiSportSAT,RaiNews24,Rai EDU1)
-T 610000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-
-# MUX-B RAI (Rai Utile,Rai Doc,RaiSportSAT,RaiNews24,Rai EDU1)
-T 482000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-Pescara b/util/scan/dvb-t/it-Pescara
deleted file mode 100644
index 1c89646..0000000
--- a/util/scan/dvb-t/it-Pescara
+++ /dev/null
@@ -1,15 +0,0 @@
-# Italy, Pescara San Silvestro
-# Antonio de Vincentiis, www.devincentiis.it, Montesilvano (PE)
-# update 06.02.2009
-# MUX-A RAI canale: VHF-E polarizzazione: O
-T 186000000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX-B RAI canale: VHF-F polarizzazione: O
-T 194500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX MEDIASET 1 canale: UHF-69 polarizzazione: V
-T 858000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX DFREE canale: UHF-56 polarizzazione: V
-T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX MEDIASET 2 canale: UHF-49 polarizzazione: V
-T 698000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MBONE canale: UHF-34 polarizzazione: V
-T 578000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-Pisa b/util/scan/dvb-t/it-Pisa
deleted file mode 100644
index 8723d99..0000000
--- a/util/scan/dvb-t/it-Pisa
+++ /dev/null
@@ -1,18 +0,0 @@
-# This channel list is made by G.U.L.LI. LIvorno's Linux Users Group
-# Thanks to: Alessandro Guarguaglini, Stefano Lenzi
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-# MUX-A RAI
-T 698000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX-B RAI
-T 658000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX MEDIASET 1
-T 634000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 618000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX DFREE
-T 746000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX MEDIASET 2
-T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX MBONE
-T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX TIMB1
-T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-Roma b/util/scan/dvb-t/it-Roma
deleted file mode 100644
index 7e84900..0000000
--- a/util/scan/dvb-t/it-Roma
+++ /dev/null
@@ -1,16 +0,0 @@
-# DVB-T Roma
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-# MUX DFREE
-T 810000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX La7/MTV
-T 730000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX MEDIASET 1
-T 626000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX MEDIASET 2
-T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX-A RAI
-T 698000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX-B RAI
-T 186000000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
-# SUPER 3
-T 538000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-S-Stefano_al_mare b/util/scan/dvb-t/it-S-Stefano_al_mare
deleted file mode 100644
index 7dd0275..0000000
--- a/util/scan/dvb-t/it-S-Stefano_al_mare
+++ /dev/null
@@ -1,19 +0,0 @@
-#DVB Santo Stefano al mare (IM)
-#Aggiornato al 10/08/2008
-#Fonte: DGTVI.it
-#s-stefano@email.it
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-#MUX-A RAI
-T 586000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#MUX-B RAI
-T 666000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#MUX MEDIASET 1
-T 570000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#MUX MEDIASET 2
-T 482000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#MUX MBONE
-T 522000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#MUX DFREE
-T 650000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#MUX TIMB 1
-T 594000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-Sassari b/util/scan/dvb-t/it-Sassari
deleted file mode 100644
index 23ba817..0000000
--- a/util/scan/dvb-t/it-Sassari
+++ /dev/null
@@ -1,33 +0,0 @@
-# DVB-T Sassari Channels List by frippertronics@alice.it ;)
-# MUX DFREE
-T 746000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX LA7/MTV
-T 826000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX MEDIASET1
-T 802000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX MEDIASET2
-T 634000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX-A RAI
-T 786000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 530000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX-B RAI
-T 842000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 858000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MBONE
-T 738000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# TCS
-T 658000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# VIDEOLINA
-T 610000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# TIMEDIA MUX A
-T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 650000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 850000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# T 474000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 810000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# TIMEDIA MUX B
-T 177500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 602000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# T 177500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# SUPER TV
-# T 650000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-Torino b/util/scan/dvb-t/it-Torino
deleted file mode 100644
index 4587a21..0000000
--- a/util/scan/dvb-t/it-Torino
+++ /dev/null
@@ -1,13 +0,0 @@
-# DVB-T Torino (Italia)
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-#MUX-A RAI
-T 834000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE
-#MUX-B RAI
-T 514000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE
-#MUX RTI
-T 474000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE
-#MUX LA7
-T 850000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE
-T 602000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE
-#MUX DFREE
-T 650000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE
diff --git a/util/scan/dvb-t/it-Trieste b/util/scan/dvb-t/it-Trieste
deleted file mode 100644
index 0f92785..0000000
--- a/util/scan/dvb-t/it-Trieste
+++ /dev/null
@@ -1,23 +0,0 @@
-# Trieste, Italy
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-# MUX MEDIASET 1 (Class News, 24Ore TV, Coming soon, BBC World, Boing, Mediaset Premium)
-T 778000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-T 474000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#
-# MUX-B RAI (Rai Doc-Futura, RaiSportSAT, RaiNotizie24, Rai EDU1, Sat2000, Radio1, Radio2, Radio3, FDAuditorium)
-T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#
-# MUX-A RAI (Rai Uno, Rai Due, Rai Tre, Rai Utile)
-T 602000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#
-# MUX DFREE (Rete 4, Italia 1, Sportitalia, LCI / Prima, Si Live24)
-T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#
-# MUX (All Music)
-T 666000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#
-# MUX (Triveneta)
-T 698000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-#
-# MUX (La7 Telemarket Retecapri MTv italia Sitcom Uno)
-T 674000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-Varese b/util/scan/dvb-t/it-Varese
deleted file mode 100644
index 7ee9bb5..0000000
--- a/util/scan/dvb-t/it-Varese
+++ /dev/null
@@ -1,16 +0,0 @@
-# Italia / Varese -- mailto: b.gabriele <gb.dvbch@dveprojects.com>
-#
-# From: http://www.dgtvi.it/copertura.aspx
-#
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-#
-# MUX-A RAI VHF H2 226,5 O CAMPO DEI FIORI
-T 226500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX DFREE UHF C50 706 V CAMPO DEI FIORI
-T 706000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX LA7-MTV UHF C37 602 V CAMPO DEI FIORI
-T 602000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX RTI UHF C26 514 O CAMPO DEI FIORI PRIMA CAPPELLA
-T 514000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# MUX RTI UHF C38 514 V CAMPO DEI FIORI ALBERGO
-T 610000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-Venezia b/util/scan/dvb-t/it-Venezia
deleted file mode 100644
index af9f4a1..0000000
--- a/util/scan/dvb-t/it-Venezia
+++ /dev/null
@@ -1,19 +0,0 @@
-# Italia / Venzia (it-Venezia) -- mailto: Rob <rob.davis@libero.it>
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-#
-# According to Eurosat 1/2006
-#
-# C50 - MediaSet
-T 706000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# C37 - Rai A - Doesn't work in Mestre though
-T 602000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# C23 -Rai B
-T 490000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# C64 DFree
-T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# C65 La 7
-T 826000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# C58 Mediaset 2
-T 770000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# C36 DFree
-T 594000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/it-Verona b/util/scan/dvb-t/it-Verona
deleted file mode 100644
index b7df944..0000000
--- a/util/scan/dvb-t/it-Verona
+++ /dev/null
@@ -1,19 +0,0 @@
-# Italia / Verona / Sommacampagna - 02/03/2009
-# Italia / Verona / Zevio - 28/02/2009
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-# C26 - TIMB1
-T 514000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# C34 - Mux B Rai
-T 578000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# C41 - Mux DFree
-T 634000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# C54 - MBone
-T 738000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# C58 - Rete All Music
-T 770000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# C61 - Mux Mediaset 2
-T 794000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# C64 - Mux DFree
-T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
-# C67 - Mediaset 1
-T 842000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
diff --git a/util/scan/dvb-t/pl-Gdansk b/util/scan/dvb-t/pl-Gdansk
new file mode 100644
index 0000000..3b64d73
--- /dev/null
+++ b/util/scan/dvb-t/pl-Gdansk
@@ -0,0 +1,4 @@
+# Gdańsk, Poland
+# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+T 610000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+T 722000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
diff --git a/util/scan/dvb-t/pl-Krakow b/util/scan/dvb-t/pl-Krakow
new file mode 100644
index 0000000..d81b77d
--- /dev/null
+++ b/util/scan/dvb-t/pl-Krakow
@@ -0,0 +1,17 @@
+#------------------------------------------------------------------------------
+# file automatically generated by w_scan
+# (http://wirbel.htpc-forum.de/w_scan/index2.html)
+#! <w_scan> 20091230 1 0 OFDM PL </w_scan>
+#------------------------------------------------------------------------------
+# location and provider: Poland, Krakow
+# date (yyyy-mm-dd) : 2011-10-29
+# provided by (opt) : Damian Golda
+#
+# T[2] <freq> <bw> <fec_hi> <fec_lo> <mod> <tm> <guard> <hi> [# comment]
+#------------------------------------------------------------------------------
+T 490000000 8MHz 5/6 NONE QAM64 8k 1/4 NONE # Ch.23, Mux2 Tarnow/g.Sw.Marcina
+T 690000000 8MHz 5/6 NONE QAM64 8k 1/4 NONE # NW 04 Malopolskie, Ch.48, Mux3 Krakow/Choragwica 2kW
+T 698000000 8MHz 5/6 NONE QAM64 8k 1/4 NONE # Ch.49, Mux2 Katowice/Kosztowy
+T 714000000 8MHz 5/6 NONE QAM64 8k 1/4 NONE # Ch.51, Mux3 Katowice/Kosztowy 2.5kW
+T 802000000 8MHz 5/6 NONE QAM64 8k 1/4 NONE # Ch.62, Mux1 Wisla/Skrzyczne
+T 818000000 8MHz 5/6 NONE QAM64 8k 1/4 NONE # TP EmiTel Ch.64, Mux3 Krakow/Choragwica
diff --git a/util/scan/dvb-t/sk-Bratislava b/util/scan/dvb-t/sk-Bratislava
index 8d4fb83..ded67d0 100644
--- a/util/scan/dvb-t/sk-Bratislava
+++ b/util/scan/dvb-t/sk-Bratislava
@@ -7,3 +7,10 @@ T 754000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
# 3.st multiplex (public) - on channel 27
T 522000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+
+#
+# T- Video Agency
+# (TODO: http://www.zive.sk/bratislava-sa-dockala-novych-programov-v-dvb-t-divaci-si-naladia-uz-aj-ta3/sc-4-a-298830/default.aspx)
+#
+# regional multiplex - on channel 55
+T 746000000 8MHz 2/1 NONE QAM64 8k 1/4 NONE
diff --git a/util/scan/dvb-t/uk-CrystalPalace b/util/scan/dvb-t/uk-CrystalPalace
index fc7e55e..9251b81 100644
--- a/util/scan/dvb-t/uk-CrystalPalace
+++ b/util/scan/dvb-t/uk-CrystalPalace
@@ -1,10 +1,17 @@
-# UK, Crystal Palace
-# Auto-generated from http://www.dtg.org.uk/retailer/dtt_channels.html
-# and http://www.ofcom.org.uk/static/reception_advice/index.asp.html
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-T 505833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
-T 481833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
-T 561833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
-T 529833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
-T 578167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
-T 537833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+#------------------------------------------------------------------------------
+# file automatically generated by w_scan
+# (http://wirbel.htpc-forum.de/w_scan/index2.html)
+#! <w_scan> 20120112 1 0 TERRESTRIAL GB </w_scan>
+#------------------------------------------------------------------------------
+# location and provider: Crystal Palace, UK
+# date (yyyy-mm-dd) : 2012-02-12
+#
+# T[2] [plp_id] [system_id] <freq> <bw> <fec_hi> <fec_lo> <mod> <tm> <guard> <hi> [# comment]
+#------------------------------------------------------------------------------
+T 481833330 8MHz 2/3 NONE QAM64 2k 1/32 NONE # London.
+T 537833330 8MHz 3/4 NONE QAM16 2k 1/32 NONE # London.
+T 505833330 8MHz 3/4 NONE QAM16 2k 1/32 NONE # London.
+T 561833330 8MHz 2/3 NONE QAM64 2k 1/32 NONE # London.
+T 529833330 8MHz 3/4 NONE QAM16 2k 1/32 NONE # London.
+T 578166670 8MHz 3/4 NONE QAM16 2k 1/32 NONE # London.
+T2 0 16435 554000000 8MHz AUTO AUTO AUTO AUTO AUTO AUTO # London.
diff --git a/util/scan/dvb-t/uk-EmleyMoor b/util/scan/dvb-t/uk-EmleyMoor
index 16df648..af57649 100644
--- a/util/scan/dvb-t/uk-EmleyMoor
+++ b/util/scan/dvb-t/uk-EmleyMoor
@@ -1,10 +1,7 @@
# UK, Emley Moor
-# Auto-generated from http://www.dtg.org.uk/retailer/dtt_channels.html
-# and http://www.ofcom.org.uk/static/reception_advice/index.asp.html
# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-T 722167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
-T 625833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
-T 649833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
-T 673833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
-T 705833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
-T 697833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+T 682000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE # PSB1/BBCA
+T 658000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE # PSB2/D3&4
+T 714000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE # COM4/SDN
+T 722000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE # COM5/ARQA
+T 690000000 8MHz 2/3 1/2 QAM64 8k 1/32 NONE # COM6/ARQB
diff --git a/util/scan/dvb-t/uk-Tacolneston b/util/scan/dvb-t/uk-Tacolneston
index b062cca..3d0ee06 100644
--- a/util/scan/dvb-t/uk-Tacolneston
+++ b/util/scan/dvb-t/uk-Tacolneston
@@ -1,10 +1,16 @@
-# UK, Tacolneston
-# Auto-generated from http://www.dtg.org.uk/retailer/dtt_channels.html
-# and http://www.ofcom.org.uk/static/reception_advice/index.asp.html
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-T 810000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
-T 786000000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
-T 730167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
-T 769833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
-T 794000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
-T 818000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+#------------------------------------------------------------------------------
+# file automatically generated by w_scan
+# (http://wirbel.htpc-forum.de/w_scan/index2.html)
+#! <w_scan> 20120128 1 0 TERRESTRIAL GB </w_scan>
+#------------------------------------------------------------------------------
+# location and provider: Tacolneston UK
+# date (yyyy-mm-dd) : 2012-03-10
+#
+# T[2] [plp_id] [system_id] <freq> <bw> <fec_hi> <fec_lo> <mod> <tm> <guard> <hi> [# comment]
+#------------------------------------------------------------------------------
+T 642000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # East Anglia
+T 745833000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # East Anglia
+T 777833000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # East Anglia
+T 666000000 8MHz 3/4 NONE QAM64 8k 1/32 NONE # East Anglia
+T 706000000 8MHz 3/4 NONE QAM64 8k 1/32 NONE # East Anglia
+T2 0 16417 802000000 8MHz AUTO AUTO AUTO AUTO AUTO AUTO # East Anglia
diff --git a/util/scan/scan.c b/util/scan/scan.c
index 972d529..46bdb08 100644
--- a/util/scan/scan.c
+++ b/util/scan/scan.c
@@ -1934,14 +1934,54 @@ static int __tune_to_transponder (int frontend_fd, struct transponder *t)
return -1;
}
+static set_delivery_system(int fd, unsigned type)
+{
+ struct dtv_properties props;
+ struct dtv_property dvb_prop[1];
+ unsigned delsys;
+
+ switch (type) {
+ case FE_QPSK:
+ delsys = SYS_DVBS;
+ break;
+ case FE_QAM:
+ delsys = SYS_DVBC_ANNEX_AC;
+ break;
+ case FE_OFDM:
+ delsys = SYS_DVBT;
+ break;
+ case FE_ATSC:
+ delsys = SYS_ATSC;
+ break;
+ default:
+ return -1;
+ }
+
+ dvb_prop[0].cmd = DTV_DELIVERY_SYSTEM;
+ dvb_prop[0].u.data = delsys;
+ props.num = 1;
+ props.props = dvb_prop;
+ if (ioctl(fd, FE_SET_PROPERTY, &props) >= 0)
+ return 0;
+ return errno;
+}
+
static int tune_to_transponder (int frontend_fd, struct transponder *t)
{
+ int rc;
+
/* move TP from "new" to "scanned" list */
list_del_init(&t->list);
list_add_tail(&t->list, &scanned_transponders);
t->scan_done = 1;
if (t->type != fe_info.type) {
+ rc = set_delivery_system(frontend_fd, t->type);
+ if (!rc)
+ fe_info.type = t->type;
+ }
+
+ if (t->type != fe_info.type) {
warning("frontend type (%s) is not compatible with requested tuning type (%s)\n",
fe_type2str(fe_info.type),fe_type2str(t->type));
/* ignore cable descriptors in sat NIT and vice versa */
diff --git a/util/szap/Makefile b/util/szap/Makefile
index 48d7149..837e989 100644
--- a/util/szap/Makefile
+++ b/util/szap/Makefile
@@ -1,5 +1,11 @@
# Makefile for linuxtv.org dvb-apps/util/szap
+# get DVB API version
+VERSION_FILE := "/usr/include/linux/dvb/version.h"
+
+DVB_API_MAJOR := $(word 3, $(shell grep -m1 "DVB_API_VERSION" $(VERSION_FILE)) )
+DVB_API_MINOR := $(word 3, $(shell grep -m1 "DVB_API_VERSION_MINOR" $(VERSION_FILE)) )
+
objects = lnb.o util.o
binaries = azap \
@@ -12,6 +18,7 @@ inst_bin = $(binaries)
.PHONY: all
all: $(binaries)
+$(info DVB API is $(DVB_API_MAJOR).$(DVB_API_MINOR))
$(binaries): $(objects)
diff --git a/util/szap/azap.c b/util/szap/azap.c
index ea13236..230a7b9 100644
--- a/util/szap/azap.c
+++ b/util/szap/azap.c
@@ -21,18 +21,18 @@ static char DEMUX_DEV [80];
#define CHANNEL_FILE "/.azap/channels.conf"
#define ERROR(x...) \
- do { \
- fprintf(stderr, "ERROR: "); \
- fprintf(stderr, x); \
- fprintf (stderr, "\n"); \
- } while (0)
+ do { \
+ fprintf(stderr, "ERROR: "); \
+ fprintf(stderr, x); \
+ fprintf (stderr, "\n"); \
+ } while (0)
#define PERROR(x...) \
- do { \
- fprintf(stderr, "ERROR: "); \
- fprintf(stderr, x); \
- fprintf (stderr, " (%s)\n", strerror(errno)); \
- } while (0)
+ do { \
+ fprintf(stderr, "ERROR: "); \
+ fprintf(stderr, x); \
+ fprintf (stderr, " (%s)\n", strerror(errno)); \
+ } while (0)
typedef struct {
@@ -353,49 +353,49 @@ int main(int argc, char **argv)
return -1;
- if (rec_psi) {
- pmtpid = get_pmt_pid(DEMUX_DEV, sid);
- if (pmtpid <= 0) {
- fprintf(stderr,"couldn't find pmt-pid for sid %04x\n",sid);
- return -1;
- }
-
- if ((pat_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
- perror("opening pat demux failed");
- return -1;
- }
- if (set_pesfilter(pat_fd, 0, DMX_PES_OTHER, dvr) < 0)
- return -1;
-
- if ((pmt_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
- perror("opening pmt demux failed");
- return -1;
- }
- if (set_pesfilter(pmt_fd, pmtpid, DMX_PES_OTHER, dvr) < 0)
- return -1;
- }
-
- if ((video_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
- PERROR("failed opening '%s'", DEMUX_DEV);
- return -1;
- }
+ if (rec_psi) {
+ pmtpid = get_pmt_pid(DEMUX_DEV, sid);
+ if (pmtpid <= 0) {
+ fprintf(stderr,"couldn't find pmt-pid for sid %04x\n",sid);
+ return -1;
+ }
+
+ if ((pat_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
+ perror("opening pat demux failed");
+ return -1;
+ }
+ if (set_pesfilter(pat_fd, 0, DMX_PES_OTHER, dvr) < 0)
+ return -1;
+
+ if ((pmt_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
+ perror("opening pmt demux failed");
+ return -1;
+ }
+ if (set_pesfilter(pmt_fd, pmtpid, DMX_PES_OTHER, dvr) < 0)
+ return -1;
+ }
+
+ if ((video_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
+ PERROR("failed opening '%s'", DEMUX_DEV);
+ return -1;
+ }
printf ("video pid 0x%04x, audio pid 0x%04x\n", vpid, apid);
if (set_pesfilter (video_fd, vpid, DMX_PES_VIDEO, dvr) < 0)
return -1;
if ((audio_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
- PERROR("failed opening '%s'", DEMUX_DEV);
- return -1;
- }
+ PERROR("failed opening '%s'", DEMUX_DEV);
+ return -1;
+ }
if (set_pesfilter (audio_fd, apid, DMX_PES_AUDIO, dvr) < 0)
return -1;
check_frontend (frontend_fd);
- close (pat_fd);
- close (pmt_fd);
+ close (pat_fd);
+ close (pmt_fd);
close (audio_fd);
close (video_fd);
close (frontend_fd);
diff --git a/util/szap/czap.c b/util/szap/czap.c
index e04ed4b..8a97d98 100644
--- a/util/szap/czap.c
+++ b/util/szap/czap.c
@@ -242,19 +242,18 @@ int check_frontend (int fe_fd, int human_readable)
static const char *usage =
- "\nusage: %s [options] -l\n"
- " list known channels\n"
- " %s [options] {-n channel-number|channel_name}\n"
- " zap to channel via number or full name (case insensitive)\n"
- " -a number : use given adapter (default 0)\n"
- " -f number : use given frontend (default 0)\n"
- " -d number : use given demux (default 0)\n"
- " -c file : read channels list from 'file'\n"
- " -x : exit after tuning\n"
- " -H : human readable output\n"
- " -r : set up /dev/dvb/adapterX/dvr0 for TS recording\n"
- " -p : add pat and pmt to TS recording (implies -r)\n"
-;
+ "\nusage: %s [options] -l\n"
+ " list known channels\n"
+ " %s [options] {-n channel-number|channel_name}\n"
+ " zap to channel via number or full name (case insensitive)\n"
+ " -a number : use given adapter (default 0)\n"
+ " -f number : use given frontend (default 0)\n"
+ " -d number : use given demux (default 0)\n"
+ " -c file : read channels list from 'file'\n"
+ " -x : exit after tuning\n"
+ " -H : human readable output\n"
+ " -r : set up /dev/dvb/adapterX/dvr0 for TS recording\n"
+ " -p : add pat and pmt to TS recording (implies -r)\n";
int main(int argc, char **argv)
{
diff --git a/util/szap/lnb.c b/util/szap/lnb.c
index 9052d1c..3202da1 100644
--- a/util/szap/lnb.c
+++ b/util/szap/lnb.c
@@ -44,8 +44,7 @@ static struct lnb_types_st lnbs[] = {
* Increment curno each time
*/
-struct lnb_types_st *
-lnb_enum(int curno)
+struct lnb_types_st *lnb_enum(int curno)
{
if (curno >= (int) (sizeof(lnbs) / sizeof(lnbs[0])))
return (struct lnb_types_st *)NULL;
@@ -57,16 +56,16 @@ lnb_enum(int curno)
* otherwise low[,high[,switch]]
*/
-int
-lnb_decode(char *str, struct lnb_types_st *lnbp)
+int lnb_decode(char *str, struct lnb_types_st *lnbp)
{
-int i;
-char *cp, *np;
+ int i;
+ char *cp, *np;
memset(lnbp, 0, sizeof(*lnbp));
cp = str;
while(*cp && isspace(*cp))
cp++;
+
if (isalpha(*cp)) {
for (i = 0; i < (int)(sizeof(lnbs) / sizeof(lnbs[0])); i++) {
if (!strcasecmp(lnbs[i].name, cp)) {
diff --git a/util/szap/lnb.h b/util/szap/lnb.h
index 6370fd4..6cc9e1d 100644
--- a/util/szap/lnb.h
+++ b/util/szap/lnb.h
@@ -10,13 +10,11 @@ struct lnb_types_st {
* Increment curno each time
*/
-struct lnb_types_st *
-lnb_enum(int curno);
+struct lnb_types_st *lnb_enum(int curno);
/* Decode an lnb type, for example given on a command line
* If alpha and standard type, e.g. "Universal" then match that
* otherwise low[,high[,switch]]
*/
-int
-lnb_decode(char *str, struct lnb_types_st *lnbp);
+int lnb_decode(char *str, struct lnb_types_st *lnbp);
diff --git a/util/szap/szap.c b/util/szap/szap.c
index 78da3a6..9de752e 100644
--- a/util/szap/szap.c
+++ b/util/szap/szap.c
@@ -75,46 +75,46 @@ static int exit_after_tuning;
static int interactive;
static char *usage_str =
- "\nusage: szap -q\n"
- " list known channels\n"
- " szap [options] {-n channel-number|channel_name}\n"
- " zap to channel via number or full name (case insensitive)\n"
- " -a number : use given adapter (default 0)\n"
- " -f number : use given frontend (default 0)\n"
- " -d number : use given demux (default 0)\n"
- " -c file : read channels list from 'file'\n"
- " -b : enable Audio Bypass (default no)\n"
- " -x : exit after tuning\n"
- " -H : human readable output\n"
- " -r : set up /dev/dvb/adapterX/dvr0 for TS recording\n"
- " -l lnb-type (DVB-S Only) (use -l help to print types) or \n"
- " -l low[,high[,switch]] in Mhz\n"
- " -i : run interactively, allowing you to type in channel names\n"
- " -p : add pat and pmt to TS recording (implies -r)\n"
- " or -n numbers for zapping\n";
+ "\nusage: szap -q\n"
+ " list known channels\n"
+ " szap [options] {-n channel-number|channel_name}\n"
+ " zap to channel via number or full name (case insensitive)\n"
+ " -a number : use given adapter (default 0)\n"
+ " -f number : use given frontend (default 0)\n"
+ " -d number : use given demux (default 0)\n"
+ " -c file : read channels list from 'file'\n"
+ " -b : enable Audio Bypass (default no)\n"
+ " -x : exit after tuning\n"
+ " -H : human readable output\n"
+ " -r : set up /dev/dvb/adapterX/dvr0 for TS recording\n"
+ " -l lnb-type (DVB-S Only) (use -l help to print types) or \n"
+ " -l low[,high[,switch]] in Mhz\n"
+ " -i : run interactively, allowing you to type in channel names\n"
+ " -p : add pat and pmt to TS recording (implies -r)\n"
+ " or -n numbers for zapping\n";
struct diseqc_cmd {
- struct dvb_diseqc_master_cmd cmd;
- uint32_t wait;
+ struct dvb_diseqc_master_cmd cmd;
+ uint32_t wait;
};
void diseqc_send_msg(int fd, fe_sec_voltage_t v, struct diseqc_cmd *cmd,
fe_sec_tone_mode_t t, fe_sec_mini_cmd_t b)
{
- if (ioctl(fd, FE_SET_TONE, SEC_TONE_OFF) == -1)
- perror("FE_SET_TONE failed");
- if (ioctl(fd, FE_SET_VOLTAGE, v) == -1)
- perror("FE_SET_VOLTAGE failed");
- usleep(15 * 1000);
- if (ioctl(fd, FE_DISEQC_SEND_MASTER_CMD, &cmd->cmd) == -1)
- perror("FE_DISEQC_SEND_MASTER_CMD failed");
- usleep(cmd->wait * 1000);
- usleep(15 * 1000);
- if (ioctl(fd, FE_DISEQC_SEND_BURST, b) == -1)
- perror("FE_DISEQC_SEND_BURST failed");
- usleep(15 * 1000);
- if (ioctl(fd, FE_SET_TONE, t) == -1)
- perror("FE_SET_TONE failed");
+ if (ioctl(fd, FE_SET_TONE, SEC_TONE_OFF) == -1)
+ perror("FE_SET_TONE failed");
+ if (ioctl(fd, FE_SET_VOLTAGE, v) == -1)
+ perror("FE_SET_VOLTAGE failed");
+ usleep(15 * 1000);
+ if (ioctl(fd, FE_DISEQC_SEND_MASTER_CMD, &cmd->cmd) == -1)
+ perror("FE_DISEQC_SEND_MASTER_CMD failed");
+ usleep(cmd->wait * 1000);
+ usleep(15 * 1000);
+ if (ioctl(fd, FE_DISEQC_SEND_BURST, b) == -1)
+ perror("FE_DISEQC_SEND_BURST failed");
+ usleep(15 * 1000);
+ if (ioctl(fd, FE_SET_TONE, t) == -1)
+ perror("FE_SET_TONE failed");
}
@@ -125,89 +125,89 @@ void diseqc_send_msg(int fd, fe_sec_voltage_t v, struct diseqc_cmd *cmd,
*/
static int diseqc(int secfd, int sat_no, int pol_vert, int hi_band)
{
- struct diseqc_cmd cmd =
- { {{0xe0, 0x10, 0x38, 0xf0, 0x00, 0x00}, 4}, 0 };
+ struct diseqc_cmd cmd =
+ { {{0xe0, 0x10, 0x38, 0xf0, 0x00, 0x00}, 4}, 0 };
- /* param: high nibble: reset bits, low nibble set bits,
- * bits are: option, position, polarization, band
- */
- cmd.cmd.msg[3] =
- 0xf0 | (((sat_no * 4) & 0x0f) | (hi_band ? 1 : 0) | (pol_vert ? 0 : 2));
+ /* param: high nibble: reset bits, low nibble set bits,
+ * bits are: option, position, polarization, band
+ */
+ cmd.cmd.msg[3] =
+ 0xf0 | (((sat_no * 4) & 0x0f) | (hi_band ? 1 : 0) | (pol_vert ? 0 : 2));
- diseqc_send_msg(secfd, pol_vert ? SEC_VOLTAGE_13 : SEC_VOLTAGE_18,
- &cmd, hi_band ? SEC_TONE_ON : SEC_TONE_OFF,
- sat_no % 2 ? SEC_MINI_B : SEC_MINI_A);
+ diseqc_send_msg(secfd, pol_vert ? SEC_VOLTAGE_13 : SEC_VOLTAGE_18,
+ &cmd, hi_band ? SEC_TONE_ON : SEC_TONE_OFF,
+ sat_no % 2 ? SEC_MINI_B : SEC_MINI_A);
- return TRUE;
+ return TRUE;
}
static int do_tune(int fefd, unsigned int ifreq, unsigned int sr)
{
- struct dvb_frontend_parameters tuneto;
- struct dvb_frontend_event ev;
-
- /* discard stale QPSK events */
- while (1) {
- if (ioctl(fefd, FE_GET_EVENT, &ev) == -1)
- break;
- }
-
- tuneto.frequency = ifreq;
- tuneto.inversion = INVERSION_AUTO;
- tuneto.u.qpsk.symbol_rate = sr;
- tuneto.u.qpsk.fec_inner = FEC_AUTO;
-
- if (ioctl(fefd, FE_SET_FRONTEND, &tuneto) == -1) {
- perror("FE_SET_FRONTEND failed");
- return FALSE;
- }
-
- return TRUE;
+ struct dvb_frontend_parameters tuneto;
+ struct dvb_frontend_event ev;
+
+ /* discard stale QPSK events */
+ while (1) {
+ if (ioctl(fefd, FE_GET_EVENT, &ev) == -1)
+ break;
+ }
+
+ tuneto.frequency = ifreq;
+ tuneto.inversion = INVERSION_AUTO;
+ tuneto.u.qpsk.symbol_rate = sr;
+ tuneto.u.qpsk.fec_inner = FEC_AUTO;
+
+ if (ioctl(fefd, FE_SET_FRONTEND, &tuneto) == -1) {
+ perror("FE_SET_FRONTEND failed");
+ return FALSE;
+ }
+
+ return TRUE;
}
-static
-int check_frontend (int fe_fd, int dvr, int human_readable)
+static int check_frontend (int fe_fd, int dvr, int human_readable)
{
- (void)dvr;
- fe_status_t status;
- uint16_t snr, signal;
- uint32_t ber, uncorrected_blocks;
- int timeout = 0;
-
- do {
- if (ioctl(fe_fd, FE_READ_STATUS, &status) == -1)
- perror("FE_READ_STATUS failed");
- /* some frontends might not support all these ioctls, thus we
- * avoid printing errors */
- if (ioctl(fe_fd, FE_READ_SIGNAL_STRENGTH, &signal) == -1)
- signal = -2;
- if (ioctl(fe_fd, FE_READ_SNR, &snr) == -1)
- snr = -2;
- if (ioctl(fe_fd, FE_READ_BER, &ber) == -1)
- ber = -2;
- if (ioctl(fe_fd, FE_READ_UNCORRECTED_BLOCKS, &uncorrected_blocks) == -1)
- uncorrected_blocks = -2;
-
- if (human_readable) {
- printf ("status %02x | signal %3u%% | snr %3u%% | ber %d | unc %d | ",
- status, (signal * 100) / 0xffff, (snr * 100) / 0xffff, ber, uncorrected_blocks);
- } else {
- printf ("status %02x | signal %04x | snr %04x | ber %08x | unc %08x | ",
- status, signal, snr, ber, uncorrected_blocks);
- }
+ (void)dvr;
+ fe_status_t status;
+ uint16_t snr, signal;
+ uint32_t ber, uncorrected_blocks;
+ int timeout = 0;
+
+ do {
+ if (ioctl(fe_fd, FE_READ_STATUS, &status) == -1)
+ perror("FE_READ_STATUS failed");
+ /* some frontends might not support all these ioctls, thus we
+ * avoid printing errors
+ */
+ if (ioctl(fe_fd, FE_READ_SIGNAL_STRENGTH, &signal) == -1)
+ signal = -2;
+ if (ioctl(fe_fd, FE_READ_SNR, &snr) == -1)
+ snr = -2;
+ if (ioctl(fe_fd, FE_READ_BER, &ber) == -1)
+ ber = -2;
+ if (ioctl(fe_fd, FE_READ_UNCORRECTED_BLOCKS, &uncorrected_blocks) == -1)
+ uncorrected_blocks = -2;
+
+ if (human_readable) {
+ printf ("status %02x | signal %3u%% | snr %3u%% | ber %d | unc %d | ",
+ status, (signal * 100) / 0xffff, (snr * 100) / 0xffff, ber, uncorrected_blocks);
+ } else {
+ printf ("status %02x | signal %04x | snr %04x | ber %08x | unc %08x | ",
+ status, signal, snr, ber, uncorrected_blocks);
+ }
- if (status & FE_HAS_LOCK)
- printf("FE_HAS_LOCK");
- printf("\n");
+ if (status & FE_HAS_LOCK)
+ printf("FE_HAS_LOCK");
+ printf("\n");
- if (exit_after_tuning && ((status & FE_HAS_LOCK) || (++timeout >= 10)))
- break;
+ if (exit_after_tuning && ((status & FE_HAS_LOCK) || (++timeout >= 10)))
+ break;
- usleep(1000000);
- } while (1);
+ usleep(1000000);
+ } while (1);
- return 0;
+ return 0;
}
@@ -217,126 +217,125 @@ int zap_to(unsigned int adapter, unsigned int frontend, unsigned int demux,
unsigned int sr, unsigned int vpid, unsigned int apid, int sid,
int dvr, int rec_psi, int bypass, int human_readable)
{
- char fedev[128], dmxdev[128], auddev[128];
- static int fefd, dmxfda, dmxfdv, audiofd = -1, patfd, pmtfd;
- int pmtpid;
- uint32_t ifreq;
- int hiband, result;
- static struct dvb_frontend_info fe_info;
-
- if (!fefd) {
- snprintf(fedev, sizeof(fedev), FRONTENDDEVICE, adapter, frontend);
- snprintf(dmxdev, sizeof(dmxdev), DEMUXDEVICE, adapter, demux);
- snprintf(auddev, sizeof(auddev), AUDIODEVICE, adapter, demux);
- printf("using '%s' and '%s'\n", fedev, dmxdev);
-
- if ((fefd = open(fedev, O_RDWR | O_NONBLOCK)) < 0) {
- perror("opening frontend failed");
- return FALSE;
- }
-
- result = ioctl(fefd, FE_GET_INFO, &fe_info);
-
- if (result < 0) {
- perror("ioctl FE_GET_INFO failed");
- close(fefd);
- return FALSE;
- }
-
- if (fe_info.type != FE_QPSK) {
- fprintf(stderr, "frontend device is not a QPSK (DVB-S) device!\n");
- close(fefd);
- return FALSE;
- }
-
- if ((dmxfdv = open(dmxdev, O_RDWR)) < 0) {
- perror("opening video demux failed");
- close(fefd);
- return FALSE;
- }
-
- if ((dmxfda = open(dmxdev, O_RDWR)) < 0) {
- perror("opening audio demux failed");
- close(fefd);
- return FALSE;
- }
-
- if (dvr == 0) /* DMX_OUT_DECODER */
- audiofd = open(auddev, O_RDWR);
-
- if (rec_psi){
- if ((patfd = open(dmxdev, O_RDWR)) < 0) {
- perror("opening pat demux failed");
- close(audiofd);
- close(dmxfda);
- close(dmxfdv);
- close(fefd);
- return FALSE;
- }
-
- if ((pmtfd = open(dmxdev, O_RDWR)) < 0) {
- perror("opening pmt demux failed");
- close(patfd);
- close(audiofd);
- close(dmxfda);
- close(dmxfdv);
- close(fefd);
- return FALSE;
- }
- }
- }
-
- hiband = 0;
- if (lnb_type.switch_val && lnb_type.high_val &&
- freq >= lnb_type.switch_val)
- hiband = 1;
-
- if (hiband)
- ifreq = freq - lnb_type.high_val;
- else {
- if (freq < lnb_type.low_val)
- ifreq = lnb_type.low_val - freq;
- else
- ifreq = freq - lnb_type.low_val;
- }
- result = FALSE;
-
- if (diseqc(fefd, sat_no, pol, hiband))
- if (do_tune(fefd, ifreq, sr))
- if (set_pesfilter(dmxfdv, vpid, DMX_PES_VIDEO, dvr))
- if (audiofd >= 0)
- (void)ioctl(audiofd, AUDIO_SET_BYPASS_MODE, bypass);
- if (set_pesfilter(dmxfda, apid, DMX_PES_AUDIO, dvr)) {
- if (rec_psi) {
- pmtpid = get_pmt_pid(dmxdev, sid);
- if (pmtpid < 0) {
- result = FALSE;
- }
- if (pmtpid == 0) {
- fprintf(stderr,"couldn't find pmt-pid for sid %04x\n",sid);
- result = FALSE;
- }
- if (set_pesfilter(patfd, 0, DMX_PES_OTHER, dvr))
- if (set_pesfilter(pmtfd, pmtpid, DMX_PES_OTHER, dvr))
- result = TRUE;
- } else {
- result = TRUE;
- }
- }
-
- check_frontend (fefd, dvr, human_readable);
-
- if (!interactive) {
- close(patfd);
- close(pmtfd);
- if (audiofd >= 0)
- close(audiofd);
- close(dmxfda);
- close(dmxfdv);
- close(fefd);
- }
-
- return result;
+ char fedev[128], dmxdev[128], auddev[128];
+ static int fefd, dmxfda, dmxfdv, audiofd = -1, patfd, pmtfd;
+ int pmtpid;
+ uint32_t ifreq;
+ int hiband, result;
+ static struct dvb_frontend_info fe_info;
+
+ if (!fefd) {
+ snprintf(fedev, sizeof(fedev), FRONTENDDEVICE, adapter, frontend);
+ snprintf(dmxdev, sizeof(dmxdev), DEMUXDEVICE, adapter, demux);
+ snprintf(auddev, sizeof(auddev), AUDIODEVICE, adapter, demux);
+ printf("using '%s' and '%s'\n", fedev, dmxdev);
+
+ if ((fefd = open(fedev, O_RDWR | O_NONBLOCK)) < 0) {
+ perror("opening frontend failed");
+ return FALSE;
+ }
+
+ result = ioctl(fefd, FE_GET_INFO, &fe_info);
+ if (result < 0) {
+ perror("ioctl FE_GET_INFO failed");
+ close(fefd);
+ return FALSE;
+ }
+
+ if (fe_info.type != FE_QPSK) {
+ fprintf(stderr, "frontend device is not a QPSK (DVB-S) device!\n");
+ close(fefd);
+ return FALSE;
+ }
+
+ if ((dmxfdv = open(dmxdev, O_RDWR)) < 0) {
+ perror("opening video demux failed");
+ close(fefd);
+ return FALSE;
+ }
+
+ if ((dmxfda = open(dmxdev, O_RDWR)) < 0) {
+ perror("opening audio demux failed");
+ close(fefd);
+ return FALSE;
+ }
+
+ if (dvr == 0) /* DMX_OUT_DECODER */
+ audiofd = open(auddev, O_RDWR);
+
+ if (rec_psi) {
+ if ((patfd = open(dmxdev, O_RDWR)) < 0) {
+ perror("opening pat demux failed");
+ close(audiofd);
+ close(dmxfda);
+ close(dmxfdv);
+ close(fefd);
+ return FALSE;
+ }
+ if ((pmtfd = open(dmxdev, O_RDWR)) < 0) {
+ perror("opening pmt demux failed");
+ close(patfd);
+ close(audiofd);
+ close(dmxfda);
+ close(dmxfdv);
+ close(fefd);
+ return FALSE;
+ }
+ }
+ }
+
+ hiband = 0;
+ if (lnb_type.switch_val && lnb_type.high_val && freq >= lnb_type.switch_val)
+ hiband = 1;
+
+ if (hiband)
+ ifreq = freq - lnb_type.high_val;
+ else {
+ if (freq < lnb_type.low_val)
+ ifreq = lnb_type.low_val - freq;
+ else
+ ifreq = freq - lnb_type.low_val;
+ }
+ result = FALSE;
+
+ if (diseqc(fefd, sat_no, pol, hiband))
+ if (do_tune(fefd, ifreq, sr))
+ if (set_pesfilter(dmxfdv, vpid, DMX_PES_VIDEO, dvr))
+ if (audiofd >= 0)
+ (void)ioctl(audiofd, AUDIO_SET_BYPASS_MODE, bypass);
+
+ if (set_pesfilter(dmxfda, apid, DMX_PES_AUDIO, dvr)) {
+ if (rec_psi) {
+ pmtpid = get_pmt_pid(dmxdev, sid);
+ if (pmtpid < 0) {
+ result = FALSE;
+ }
+ if (pmtpid == 0) {
+ fprintf(stderr,"couldn't find pmt-pid for sid %04x\n",sid);
+ result = FALSE;
+ }
+ if (set_pesfilter(patfd, 0, DMX_PES_OTHER, dvr))
+ if (set_pesfilter(pmtfd, pmtpid, DMX_PES_OTHER, dvr))
+ result = TRUE;
+ } else {
+ result = TRUE;
+ }
+ }
+
+ check_frontend (fefd, dvr, human_readable);
+ if (!interactive) {
+ close(patfd);
+ close(pmtfd);
+
+ if (audiofd >= 0)
+ close(audiofd);
+
+ close(dmxfda);
+ close(dmxfdv);
+ close(fefd);
+ }
+
+ return result;
}
@@ -346,165 +345,174 @@ static int read_channels(const char *filename, int list_channels,
unsigned int demux, int dvr, int rec_psi,
int bypass, int human_readable)
{
- FILE *cfp;
- char buf[4096];
- char inp[256];
- char *field, *tmp, *p;
- unsigned int line;
- unsigned int freq, pol, sat_no, sr, vpid, apid, sid;
- int ret;
+ FILE *cfp;
+ char buf[4096];
+ char inp[256];
+ char *field, *tmp, *p;
+ unsigned int line;
+ unsigned int freq, pol, sat_no, sr, vpid, apid, sid;
+ int ret;
again:
- line = 0;
- if (!(cfp = fopen(filename, "r"))) {
- fprintf(stderr, "error opening channel list '%s': %d %m\n",
- filename, errno);
- return FALSE;
- }
+ line = 0;
+ if (!(cfp = fopen(filename, "r"))) {
+ fprintf(stderr, "error opening channel list '%s': %d %m\n",
+ filename, errno);
+ return FALSE;
+ }
+
+ if (interactive) {
+ fprintf(stderr, "\n>>> ");
+
+ if (!fgets(inp, sizeof(inp), stdin)) {
+ printf("\n");
+ return -1;
+ }
+ if (inp[0] == '-' && inp[1] == 'n') {
+ chan_no = strtoul(inp+2, NULL, 0);
+ chan_name = NULL;
+ if (!chan_no) {
+ fprintf(stderr, "bad channel number\n");
+ goto again;
+ }
+ } else {
+ p = strchr(inp, '\n');
+ if (p)
+ *p = '\0';
+ chan_name = inp;
+ chan_no = 0;
+ }
+ }
+
+ while (!feof(cfp)) {
+ if (fgets(buf, sizeof(buf), cfp)) {
+ line++;
+
+ if (chan_no && chan_no != line)
+ continue;
+
+ tmp = buf;
+ field = strsep(&tmp, ":");
+
+ if (!field)
+ goto syntax_err;
+
+ if (list_channels) {
+ printf("%03u %s\n", line, field);
+ continue;
+ }
+
+ if (chan_name && strcasecmp(chan_name, field) != 0)
+ continue;
+
+ printf("zapping to %d '%s':\n", line, field);
+
+ if (!(field = strsep(&tmp, ":")))
+ goto syntax_err;
+
+ freq = strtoul(field, NULL, 0);
+
+ if (!(field = strsep(&tmp, ":")))
+ goto syntax_err;
+
+ pol = (field[0] == 'h' ? 0 : 1);
+
+ if (!(field = strsep(&tmp, ":")))
+ goto syntax_err;
+
+ sat_no = strtoul(field, NULL, 0);
- if (interactive) {
- fprintf(stderr, "\n>>> ");
- if (!fgets(inp, sizeof(inp), stdin)) {
- printf("\n");
- return -1;
- }
- if (inp[0] == '-' && inp[1] == 'n') {
- chan_no = strtoul(inp+2, NULL, 0);
- chan_name = NULL;
- if (!chan_no) {
- fprintf(stderr, "bad channel number\n");
- goto again;
- }
- } else {
- p = strchr(inp, '\n');
- if (p)
- *p = '\0';
- chan_name = inp;
- chan_no = 0;
- }
- }
-
- while (!feof(cfp)) {
- if (fgets(buf, sizeof(buf), cfp)) {
- line++;
-
- if (chan_no && chan_no != line)
- continue;
-
- tmp = buf;
- field = strsep(&tmp, ":");
-
- if (!field)
- goto syntax_err;
-
- if (list_channels) {
- printf("%03u %s\n", line, field);
- continue;
- }
-
- if (chan_name && strcasecmp(chan_name, field) != 0)
- continue;
-
- printf("zapping to %d '%s':\n", line, field);
-
- if (!(field = strsep(&tmp, ":")))
- goto syntax_err;
-
- freq = strtoul(field, NULL, 0);
-
- if (!(field = strsep(&tmp, ":")))
- goto syntax_err;
-
- pol = (field[0] == 'h' ? 0 : 1);
-
- if (!(field = strsep(&tmp, ":")))
- goto syntax_err;
-
- sat_no = strtoul(field, NULL, 0);
-
- if (!(field = strsep(&tmp, ":")))
- goto syntax_err;
-
- sr = strtoul(field, NULL, 0) * 1000;
-
- if (!(field = strsep(&tmp, ":")))
- goto syntax_err;
-
- vpid = strtoul(field, NULL, 0);
- if (!vpid)
- vpid = 0x1fff;
-
- if (!(field = strsep(&tmp, ":")))
- goto syntax_err;
-
- p = strchr(field, ';');
-
- if (p) {
- *p = '\0';
- p++;
- if (bypass) {
- if (!p || !*p)
- goto syntax_err;
- field = p;
- }
- }
-
- apid = strtoul(field, NULL, 0);
- if (!apid)
- apid = 0x1fff;
-
- if (!(field = strsep(&tmp, ":")))
- goto syntax_err;
-
- sid = strtoul(field, NULL, 0);
-
- printf("sat %u, frequency = %u MHz %c, symbolrate %u, "
- "vpid = 0x%04x, apid = 0x%04x sid = 0x%04x\n",
- sat_no, freq, pol ? 'V' : 'H', sr, vpid, apid, sid);
+ if (!(field = strsep(&tmp, ":")))
+ goto syntax_err;
- fclose(cfp);
-
- ret = zap_to(adapter, frontend, demux, sat_no, freq * 1000,
- pol, sr, vpid, apid, sid, dvr, rec_psi, bypass, human_readable);
- if (interactive)
- goto again;
+ sr = strtoul(field, NULL, 0) * 1000;
- if (ret)
- return TRUE;
+ if (!(field = strsep(&tmp, ":")))
+ goto syntax_err;
- return FALSE;
+ vpid = strtoul(field, NULL, 0);
+ if (!vpid)
+ vpid = 0x1fff;
- syntax_err:
- fprintf(stderr, "syntax error in line %u: '%s'\n", line, buf);
- } else if (ferror(cfp)) {
- fprintf(stderr, "error reading channel list '%s': %d %m\n",
- filename, errno);
- fclose(cfp);
- return FALSE;
- } else
- break;
- }
+ if (!(field = strsep(&tmp, ":")))
+ goto syntax_err;
- fclose(cfp);
+ p = strchr(field, ';');
- if (!list_channels) {
- fprintf(stderr, "channel not found\n");
- if (!interactive)
- return FALSE;
- }
- if (interactive)
- goto again;
+ if (p) {
+ *p = '\0';
+ p++;
+ if (bypass) {
+ if (!p || !*p)
+ goto syntax_err;
+ field = p;
+ }
+ }
+ apid = strtoul(field, NULL, 0);
+ if (!apid)
+ apid = 0x1fff;
+
+ if (!(field = strsep(&tmp, ":")))
+ goto syntax_err;
+
+ sid = strtoul(field, NULL, 0);
+
+ printf("sat %u, frequency = %u MHz %c, symbolrate %u, "
+ "vpid = 0x%04x, apid = 0x%04x sid = 0x%04x\n",
+ sat_no, freq, pol ? 'V' : 'H', sr, vpid, apid, sid);
+
+ fclose(cfp);
+
+ ret = zap_to(adapter,
+ frontend,
+ demux,
+ sat_no,
+ freq * 1000,
+ pol,
+ sr,
+ vpid,
+ apid,
+ sid,
+ dvr,
+ rec_psi,
+ bypass,
+ human_readable);
+
+ if (interactive)
+ goto again;
+ if (ret)
+ return TRUE;
+
+ return FALSE;
+syntax_err:
+ fprintf(stderr, "syntax error in line %u: '%s'\n", line, buf);
+ } else if (ferror(cfp)) {
+ fprintf(stderr, "error reading channel list '%s': %d %m\n", filename, errno);
+ fclose(cfp);
+ return FALSE;
+ } else {
+ break;
+ }
+ }
+
+ fclose(cfp);
+ if (!list_channels) {
+ fprintf(stderr, "channel not found\n");
+ if (!interactive)
+ return FALSE;
+ }
+ if (interactive)
+ goto again;
- return TRUE;
+ return TRUE;
}
-void
-bad_usage(char *pname, int prlnb)
+void bad_usage(char *pname, int prlnb)
{
-int i;
-struct lnb_types_st *lnbp;
-char **cp;
+ int i;
+ struct lnb_types_st *lnbp;
+ char **cp;
if (!prlnb) {
fprintf (stderr, usage_str, pname);
@@ -523,107 +531,125 @@ char **cp;
int main(int argc, char *argv[])
{
- const char *home;
- char chanfile[2 * PATH_MAX];
- int list_channels = 0;
- unsigned int chan_no = 0;
- const char *chan_name = NULL;
- unsigned int adapter = 0, frontend = 0, demux = 0, dvr = 0, rec_psi = 0;
- int bypass = 0;
- int opt, copt = 0;
- int human_readable = 0;
-
- lnb_type = *lnb_enum(0);
- while ((opt = getopt(argc, argv, "Hhqrpn:a:f:d:c:l:xib")) != -1) {
- switch (opt)
- {
- case '?':
- case 'h':
- default:
- bad_usage(argv[0], 0);
- case 'b':
- bypass = 1;
- break;
- case 'q':
- list_channels = 1;
- break;
- case 'r':
- dvr = 1;
- break;
- case 'n':
- chan_no = strtoul(optarg, NULL, 0);
- break;
- case 'a':
- adapter = strtoul(optarg, NULL, 0);
- break;
- case 'f':
- frontend = strtoul(optarg, NULL, 0);
- break;
- case 'p':
- rec_psi = 1;
- break;
- case 'd':
- demux = strtoul(optarg, NULL, 0);
- break;
- case 'c':
- copt = 1;
- strncpy(chanfile, optarg, sizeof(chanfile));
- break;
- case 'l':
- if (lnb_decode(optarg, &lnb_type) < 0) {
- bad_usage(argv[0], 1);
+ const char *home;
+ char chanfile[2 * PATH_MAX];
+ int list_channels = 0;
+ unsigned int chan_no = 0;
+ const char *chan_name = NULL;
+ unsigned int adapter = 0, frontend = 0, demux = 0, dvr = 0, rec_psi = 0;
+ int bypass = 0;
+ int opt, copt = 0;
+ int human_readable = 0;
+
+ lnb_type = *lnb_enum(0);
+
+ while ((opt = getopt(argc, argv, "Hhqrpn:a:f:d:c:l:xib")) != -1) {
+ switch (opt) {
+ case '?':
+ case 'h':
+ default:
+ bad_usage(argv[0], 0);
+ case 'b':
+ bypass = 1;
+ break;
+ case 'q':
+ list_channels = 1;
+ break;
+ case 'r':
+ dvr = 1;
+ break;
+ case 'n':
+ chan_no = strtoul(optarg, NULL, 0);
+ break;
+ case 'a':
+ adapter = strtoul(optarg, NULL, 0);
+ break;
+ case 'f':
+ frontend = strtoul(optarg, NULL, 0);
+ break;
+ case 'p':
+ rec_psi = 1;
+ break;
+ case 'd':
+ demux = strtoul(optarg, NULL, 0);
+ break;
+ case 'c':
+ copt = 1;
+ strncpy(chanfile, optarg, sizeof(chanfile));
+ break;
+ case 'l':
+ if (lnb_decode(optarg, &lnb_type) < 0) {
+ bad_usage(argv[0], 1);
+ return -1;
+ }
+ break;
+ case 'x':
+ exit_after_tuning = 1;
+ break;
+ case 'H':
+ human_readable = 1;
+ break;
+ case 'i':
+ interactive = 1;
+ exit_after_tuning = 1;
+ }
+ }
+ lnb_type.low_val *= 1000; /* convert to kiloherz */
+ lnb_type.high_val *= 1000; /* convert to kiloherz */
+ lnb_type.switch_val *= 1000; /* convert to kiloherz */
+
+ if (optind < argc)
+ chan_name = argv[optind];
+
+ if (chan_name && chan_no) {
+ bad_usage(argv[0], 0);
+ return -1;
+ }
+ if (list_channels && (chan_name || chan_no)) {
+ bad_usage(argv[0], 0);
+ return -1;
+ }
+ if (!list_channels && !chan_name && !chan_no && !interactive) {
+ bad_usage(argv[0], 0);
return -1;
- }
- break;
- case 'x':
- exit_after_tuning = 1;
- break;
- case 'H':
- human_readable = 1;
- break;
- case 'i':
- interactive = 1;
- exit_after_tuning = 1;
- }
- }
- lnb_type.low_val *= 1000; /* convert to kiloherz */
- lnb_type.high_val *= 1000; /* convert to kiloherz */
- lnb_type.switch_val *= 1000; /* convert to kiloherz */
- if (optind < argc)
- chan_name = argv[optind];
- if (chan_name && chan_no) {
- bad_usage(argv[0], 0);
- return -1;
- }
- if (list_channels && (chan_name || chan_no)) {
- bad_usage(argv[0], 0);
- return -1;
- }
- if (!list_channels && !chan_name && !chan_no && !interactive) {
- bad_usage(argv[0], 0);
- return -1;
- }
-
- if (!copt) {
- if (!(home = getenv("HOME"))) {
- fprintf(stderr, "error: $HOME not set\n");
- return TRUE;
- }
- snprintf(chanfile, sizeof(chanfile),
- "%s/.szap/%i/%s", home, adapter, CHANNEL_FILE);
- if (access(chanfile, R_OK))
- snprintf(chanfile, sizeof(chanfile),
- "%s/.szap/%s", home, CHANNEL_FILE);
- }
-
- printf("reading channels from file '%s'\n", chanfile);
-
- if (rec_psi)
- dvr=1;
-
- if (!read_channels(chanfile, list_channels, chan_no, chan_name,
- adapter, frontend, demux, dvr, rec_psi, bypass, human_readable))
- return TRUE;
-
- return FALSE;
+ }
+
+ if (!copt) {
+ if (!(home = getenv("HOME"))) {
+ fprintf(stderr, "error: $HOME not set\n");
+ return TRUE;
+ }
+ snprintf(chanfile,
+ sizeof(chanfile),
+ "%s/.szap/%i/%s",
+ home,
+ adapter,
+ CHANNEL_FILE);
+
+ if (access(chanfile, R_OK))
+ snprintf(chanfile,
+ sizeof(chanfile),
+ "%s/.szap/%s",
+ home,
+ CHANNEL_FILE);
+ }
+ printf("reading channels from file '%s'\n", chanfile);
+
+ if (rec_psi)
+ dvr=1;
+
+ if (!read_channels(chanfile,
+ list_channels,
+ chan_no,
+ chan_name,
+ adapter,
+ frontend,
+ demux,
+ dvr,
+ rec_psi,
+ bypass,
+ human_readable))
+ return TRUE;
+
+ return FALSE;
}
diff --git a/util/szap/tzap.c b/util/szap/tzap.c
index b24bc2c..ce63832 100644
--- a/util/szap/tzap.c
+++ b/util/szap/tzap.c
@@ -47,18 +47,18 @@ static int exit_after_tuning;
#define CHANNEL_FILE "channels.conf"
#define ERROR(x...) \
- do { \
- fprintf(stderr, "ERROR: "); \
- fprintf(stderr, x); \
- fprintf (stderr, "\n"); \
- } while (0)
+ do { \
+ fprintf(stderr, "ERROR: "); \
+ fprintf(stderr, x); \
+ fprintf (stderr, "\n"); \
+ } while (0)
#define PERROR(x...) \
- do { \
- fprintf(stderr, "ERROR: "); \
- fprintf(stderr, x); \
- fprintf (stderr, " (%s)\n", strerror(errno)); \
- } while (0)
+ do { \
+ fprintf(stderr, "ERROR: "); \
+ fprintf(stderr, x); \
+ fprintf (stderr, " (%s)\n", strerror(errno)); \
+ } while (0)
typedef struct {
@@ -125,9 +125,7 @@ static const Param transmissionmode_list [] = {
#define LIST_SIZE(x) sizeof(x)/sizeof(Param)
-
-static
-int parse_param (int fd, const Param * plist, int list_size, int *param)
+static int parse_param (int fd, const Param * plist, int list_size, int *param)
{
char c;
int character = 0;
@@ -157,8 +155,7 @@ int parse_param (int fd, const Param * plist, int list_size, int *param)
}
-static
-int parse_int(int fd, int *val)
+static int parse_int(int fd, int *val)
{
char number[11]; /* 2^32 needs 10 digits... */
int character = 0;
@@ -190,8 +187,7 @@ int parse_int(int fd, int *val)
}
-static
-int find_channel(int fd, const char *channel)
+static int find_channel(int fd, const char *channel)
{
int character = 0;
@@ -346,13 +342,11 @@ int parse(const char *fname, const char *channel,
if ((err = try_parse_int(fd, apid, "Audio PID")))
return -13;
-
+
if ((err = try_parse_int(fd, sid, "Service ID")))
return -14;
-
-
- close(fd);
+ close(fd);
return 0;
}
@@ -372,7 +366,7 @@ int setup_frontend (int fe_fd, struct dvb_frontend_parameters *frontend)
return -1;
}
- if (silent<2)
+ if (silent < 2)
fprintf (stderr,"tuning to %i Hz\n", frontend->frequency);
if (ioctl(fe_fd, FE_SET_FRONTEND, frontend) < 0) {
@@ -383,25 +377,20 @@ int setup_frontend (int fe_fd, struct dvb_frontend_parameters *frontend)
return 0;
}
-static void
-do_timeout(int x)
+static void do_timeout(int x)
{
(void)x;
- if (timeout_flag==0)
- {
- timeout_flag=1;
+ if (timeout_flag == 0) {
+ timeout_flag = 1;
alarm(2);
signal(SIGALRM, do_timeout);
- }
- else
- {
+ } else {
/* something has gone wrong ... exit */
exit(1);
}
}
-static void
-print_frontend_stats (int fe_fd, int human_readable)
+static void print_frontend_stats(int fe_fd, int human_readable)
{
fe_status_t status;
uint16_t snr, _signal;
@@ -446,14 +435,13 @@ int check_frontend (int fe_fd, int human_readable)
}
#define BUFLEN (188*256)
-static
-void copy_to_file(int in_fd, int out_fd)
+static void copy_to_file(int in_fd, int out_fd)
{
char buf[BUFLEN];
int r;
long long int rc = 0LL;
- while(timeout_flag==0)
- {
+
+ while (timeout_flag==0) {
r=read(in_fd,buf,BUFLEN);
if (r < 0) {
if (errno == EOVERFLOW) {
@@ -469,36 +457,36 @@ void copy_to_file(int in_fd, int out_fd)
}
rc+=r;
}
- if (silent<2)
- {
+
+ if (silent<2) {
fprintf(stderr, "copied %lld bytes (%lld Kbytes/sec)\n",rc,rc/(1024*timeout));
}
}
static char *usage =
- "usage:\n"
- " tzap [options] <channel_name>\n"
- " zap to channel channel_name (case insensitive)\n"
- " -a number : use given adapter (default 0)\n"
- " -f number : use given frontend (default 0)\n"
- " -d number : use given demux (default 0)\n"
- " -c file : read channels list from 'file'\n"
- " -x : exit after tuning\n"
- " -r : set up /dev/dvb/adapterX/dvr0 for TS recording\n"
- " -p : add pat and pmt to TS recording (implies -r)\n"
- " -s : only print summary\n"
- " -S : run silently (no output)\n"
- " -H : human readable output\n"
- " -F : set up frontend only, don't touch demux\n"
- " -t number : timeout (seconds)\n"
- " -o file : output filename (use -o - for stdout)\n"
- " -h -? : display this help and exit\n";
+ "usage:\n"
+ " tzap [options] <channel_name>\n"
+ " zap to channel channel_name (case insensitive)\n"
+ " -a number : use given adapter (default 0)\n"
+ " -f number : use given frontend (default 0)\n"
+ " -d number : use given demux (default 0)\n"
+ " -c file : read channels list from 'file'\n"
+ " -x : exit after tuning\n"
+ " -r : set up /dev/dvb/adapterX/dvr0 for TS recording\n"
+ " -p : add pat and pmt to TS recording (implies -r)\n"
+ " -s : only print summary\n"
+ " -S : run silently (no output)\n"
+ " -H : human readable output\n"
+ " -F : set up frontend only, don't touch demux\n"
+ " -t number : timeout (seconds)\n"
+ " -o file : output filename (use -o - for stdout)\n"
+ " -h -? : display this help and exit\n";
int main(int argc, char **argv)
{
struct dvb_frontend_parameters frontend_param;
- char *homedir = getenv ("HOME");
+ char *homedir = getenv("HOME");
char *confname = NULL;
char *channel = NULL;
int adapter = 0, frontend = 0, demux = 0, dvr = 0;
@@ -569,32 +557,37 @@ int main(int argc, char **argv)
return -1;
}
- snprintf (FRONTEND_DEV, sizeof(FRONTEND_DEV),
- "/dev/dvb/adapter%i/frontend%i", adapter, frontend);
+ snprintf(FRONTEND_DEV,
+ sizeof(FRONTEND_DEV),
+ "/dev/dvb/adapter%i/frontend%i",
+ adapter,
+ frontend);
- snprintf (DEMUX_DEV, sizeof(DEMUX_DEV),
- "/dev/dvb/adapter%i/demux%i", adapter, demux);
+ snprintf(DEMUX_DEV,
+ sizeof(DEMUX_DEV),
+ "/dev/dvb/adapter%i/demux%i",
+ adapter,
+ demux);
- snprintf (DVR_DEV, sizeof(DVR_DEV),
- "/dev/dvb/adapter%i/dvr%i", adapter, demux);
+ snprintf(DVR_DEV,
+ sizeof(DVR_DEV),
+ "/dev/dvb/adapter%i/dvr%i",
+ adapter,
+ demux);
- if (silent<2)
+ if (silent < 2)
fprintf (stderr,"using '%s' and '%s'\n", FRONTEND_DEV, DEMUX_DEV);
- if (!confname)
- {
+ if (!confname) {
int len = strlen(homedir) + strlen(CHANNEL_FILE) + 18;
if (!homedir)
ERROR ("$HOME not set");
confname = malloc (len);
- snprintf (confname, len, "%s/.tzap/%i/%s",
- homedir, adapter, CHANNEL_FILE);
+ snprintf(confname, len, "%s/.tzap/%i/%s", homedir, adapter, CHANNEL_FILE);
if (access (confname, R_OK))
- snprintf (confname, len, "%s/.tzap/%s",
- homedir, CHANNEL_FILE);
+ snprintf(confname, len, "%s/.tzap/%s", homedir, CHANNEL_FILE);
}
printf("reading channels from file '%s'\n", confname);
-
memset(&frontend_param, 0, sizeof(struct dvb_frontend_parameters));
if (parse (confname, channel, &frontend_param, &vpid, &apid, &sid))
@@ -612,71 +605,62 @@ int main(int argc, char **argv)
goto just_the_frontend_dude;
if (rec_psi) {
- pmtpid = get_pmt_pid(DEMUX_DEV, sid);
- if (pmtpid <= 0) {
- fprintf(stderr,"couldn't find pmt-pid for sid %04x\n",sid);
- return -1;
- }
+ pmtpid = get_pmt_pid(DEMUX_DEV, sid);
+ if (pmtpid <= 0) {
+ fprintf(stderr,"couldn't find pmt-pid for sid %04x\n",sid);
+ return -1;
+ }
- if ((pat_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
- perror("opening pat demux failed");
- return -1;
- }
- if (set_pesfilter(pat_fd, 0, DMX_PES_OTHER, dvr) < 0)
- return -1;
+ if ((pat_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
+ perror("opening pat demux failed");
+ return -1;
+ }
+ if (set_pesfilter(pat_fd, 0, DMX_PES_OTHER, dvr) < 0)
+ return -1;
- if ((pmt_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
- perror("opening pmt demux failed");
- return -1;
- }
- if (set_pesfilter(pmt_fd, pmtpid, DMX_PES_OTHER, dvr) < 0)
- return -1;
+ if ((pmt_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
+ perror("opening pmt demux failed");
+ return -1;
+ }
+ if (set_pesfilter(pmt_fd, pmtpid, DMX_PES_OTHER, dvr) < 0)
+ return -1;
}
- if ((video_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
- PERROR("failed opening '%s'", DEMUX_DEV);
- return -1;
- }
+ if ((video_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
+ PERROR("failed opening '%s'", DEMUX_DEV);
+ return -1;
+ }
if (silent<2)
- fprintf (stderr,"video pid 0x%04x, audio pid 0x%04x\n", vpid, apid);
+ fprintf(stderr,"video pid 0x%04x, audio pid 0x%04x\n", vpid, apid);
- if (set_pesfilter (video_fd, vpid, DMX_PES_VIDEO, dvr) < 0)
+ if (set_pesfilter(video_fd, vpid, DMX_PES_VIDEO, dvr) < 0)
return -1;
if ((audio_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
- PERROR("failed opening '%s'", DEMUX_DEV);
- return -1;
- }
+ PERROR("failed opening '%s'", DEMUX_DEV);
+ return -1;
+ }
- if (set_pesfilter (audio_fd, apid, DMX_PES_AUDIO, dvr) < 0)
+ if (set_pesfilter(audio_fd, apid, DMX_PES_AUDIO, dvr) < 0)
return -1;
signal(SIGALRM,do_timeout);
- if (timeout>0)
+ if (timeout > 0)
alarm(timeout);
-
- if (record)
- {
- if (filename!=NULL)
- {
- if (strcmp(filename,"-")!=0)
- {
- file_fd = open (filename,O_WRONLY|O_LARGEFILE|O_CREAT,0644);
- if (file_fd<0)
- {
+ if (record) {
+ if (filename!=NULL) {
+ if (strcmp(filename,"-")!=0) {
+ file_fd = open(filename,O_WRONLY|O_LARGEFILE|O_CREAT,0644);
+ if (file_fd<0) {
PERROR("open of '%s' failed",filename);
return -1;
}
- }
- else
- {
+ } else {
file_fd=1;
}
- }
- else
- {
+ } else {
PERROR("Record mode but no filename!");
return -1;
}
@@ -686,23 +670,21 @@ int main(int argc, char **argv)
return -1;
}
if (silent<2)
- print_frontend_stats (frontend_fd, human_readable);
+ print_frontend_stats(frontend_fd, human_readable);
copy_to_file(dvr_fd,file_fd);
if (silent<2)
- print_frontend_stats (frontend_fd, human_readable);
- }
- else {
+ print_frontend_stats(frontend_fd, human_readable);
+ } else {
just_the_frontend_dude:
- check_frontend (frontend_fd, human_readable);
+ check_frontend(frontend_fd, human_readable);
}
- close (pat_fd);
- close (pmt_fd);
- close (audio_fd);
- close (video_fd);
- close (frontend_fd);
-
+ close(pat_fd);
+ close(pmt_fd);
+ close(audio_fd);
+ close(video_fd);
+ close(frontend_fd);
return 0;
}
diff --git a/util/szap/util.c b/util/szap/util.c
index 301d666..99d303a 100644
--- a/util/szap/util.c
+++ b/util/szap/util.c
@@ -35,92 +35,89 @@
int set_pesfilter(int dmxfd, int pid, int pes_type, int dvr)
{
- struct dmx_pes_filter_params pesfilter;
+ struct dmx_pes_filter_params pesfilter;
- /* ignore this pid to allow radio services */
- if (pid < 0 ||
- pid >= 0x1fff ||
- (pid == 0 && pes_type != DMX_PES_OTHER))
- return 0;
+ /* ignore this pid to allow radio services */
+ if (pid < 0 || pid >= 0x1fff || (pid == 0 && pes_type != DMX_PES_OTHER))
+ return 0;
+
+ if (dvr) {
+ int buffersize = 64 * 1024;
+ if (ioctl(dmxfd, DMX_SET_BUFFER_SIZE, buffersize) == -1)
+ perror("DMX_SET_BUFFER_SIZE failed");
+ }
- if (dvr) {
- int buffersize = 64 * 1024;
- if (ioctl(dmxfd, DMX_SET_BUFFER_SIZE, buffersize) == -1)
- perror("DMX_SET_BUFFER_SIZE failed");
- }
-
- pesfilter.pid = pid;
- pesfilter.input = DMX_IN_FRONTEND;
- pesfilter.output = dvr ? DMX_OUT_TS_TAP : DMX_OUT_DECODER;
- pesfilter.pes_type = pes_type;
- pesfilter.flags = DMX_IMMEDIATE_START;
-
- if (ioctl(dmxfd, DMX_SET_PES_FILTER, &pesfilter) == -1) {
- fprintf(stderr, "DMX_SET_PES_FILTER failed "
- "(PID = 0x%04x): %d %m\n", pid, errno);
- return -1;
- }
-
- return 0;
+ pesfilter.pid = pid;
+ pesfilter.input = DMX_IN_FRONTEND;
+ pesfilter.output = dvr ? DMX_OUT_TS_TAP : DMX_OUT_DECODER;
+ pesfilter.pes_type = pes_type;
+ pesfilter.flags = DMX_IMMEDIATE_START;
+
+ if (ioctl(dmxfd, DMX_SET_PES_FILTER, &pesfilter) == -1) {
+ fprintf(stderr, "DMX_SET_PES_FILTER failed "
+ "(PID = 0x%04x): %d %m\n", pid, errno);
+ return -1;
+ }
+ return 0;
}
int get_pmt_pid(char *dmxdev, int sid)
{
- int patfd, count;
- int pmt_pid = 0;
- int patread = 0;
- int section_length;
- unsigned char buft[4096];
- unsigned char *buf = buft;
- struct dmx_sct_filter_params f;
-
- memset(&f, 0, sizeof(f));
- f.pid = 0;
- f.filter.filter[0] = 0x00;
- f.filter.mask[0] = 0xff;
- f.timeout = 0;
- f.flags = DMX_IMMEDIATE_START | DMX_CHECK_CRC;
-
- if ((patfd = open(dmxdev, O_RDWR)) < 0) {
- perror("openening pat demux failed");
- return -1;
- }
-
- if (ioctl(patfd, DMX_SET_FILTER, &f) == -1) {
- perror("ioctl DMX_SET_FILTER failed");
- close(patfd);
- return -1;
- }
-
- while (!patread){
- if (((count = read(patfd, buf, sizeof(buft))) < 0) && errno == EOVERFLOW)
- count = read(patfd, buf, sizeof(buft));
- if (count < 0) {
- perror("read_sections: read error");
- close(patfd);
- return -1;
+ int patfd, count;
+ int pmt_pid = 0;
+ int patread = 0;
+ int section_length;
+ unsigned char buft[4096];
+ unsigned char *buf = buft;
+ struct dmx_sct_filter_params f;
+
+ memset(&f, 0, sizeof(f));
+ f.pid = 0;
+ f.filter.filter[0] = 0x00;
+ f.filter.mask[0] = 0xff;
+ f.timeout = 0;
+ f.flags = DMX_IMMEDIATE_START | DMX_CHECK_CRC;
+
+ if ((patfd = open(dmxdev, O_RDWR)) < 0) {
+ perror("openening pat demux failed");
+ return -1;
}
-
- section_length = ((buf[1] & 0x0f) << 8) | buf[2];
- if (count != section_length + 3)
- continue;
-
- buf += 8;
- section_length -= 8;
-
- patread = 1; /* assumes one section contains the whole pat */
- while (section_length > 0) {
- int service_id = (buf[0] << 8) | buf[1];
- if (service_id == sid) {
- pmt_pid = ((buf[2] & 0x1f) << 8) | buf[3];
- section_length = 0;
- }
- buf += 4;
- section_length -= 4;
+
+ if (ioctl(patfd, DMX_SET_FILTER, &f) == -1) {
+ perror("ioctl DMX_SET_FILTER failed");
+ close(patfd);
+ return -1;
}
- }
- close(patfd);
- return pmt_pid;
+ while (!patread) {
+ if (((count = read(patfd, buf, sizeof(buft))) < 0) && errno == EOVERFLOW)
+ count = read(patfd, buf, sizeof(buft));
+
+ if (count < 0) {
+ perror("read_sections: read error");
+ close(patfd);
+ return -1;
+ }
+ section_length = ((buf[1] & 0x0f) << 8) | buf[2];
+ if (count != section_length + 3)
+ continue;
+
+ buf += 8;
+ section_length -= 8;
+
+ patread = 1; /* assumes one section contains the whole pat */
+ while (section_length > 0) {
+ int service_id = (buf[0] << 8) | buf[1];
+
+ if (service_id == sid) {
+ pmt_pid = ((buf[2] & 0x1f) << 8) | buf[3];
+ section_length = 0;
+ }
+ buf += 4;
+ section_length -= 4;
+ }
+ }
+ close(patfd);
+ return pmt_pid;
}