diff options
author | etobi <git@e-tobi.net> | 2013-09-03 09:48:38 +0200 |
---|---|---|
committer | etobi <git@e-tobi.net> | 2013-09-03 09:48:38 +0200 |
commit | 6e40287e2f39a80fc72bd8d0fbc1a8334d688c2d (patch) | |
tree | 024bef311226653bdd1da4fa588becf5098bcff7 /util/szap | |
download | linux-dvb-apps-6e40287e2f39a80fc72bd8d0fbc1a8334d688c2d.tar.gz |
Imported Upstream version 1.1.0upstream/1.1.0
Diffstat (limited to '')
-rw-r--r-- | util/szap/Makefile | 35 | ||||
-rw-r--r-- | util/szap/README | 47 | ||||
-rw-r--r-- | util/szap/channels.conf-dvbc-berlin | 171 | ||||
-rw-r--r-- | util/szap/channels.conf-dvbs-astra | 226 | ||||
-rw-r--r-- | util/szap/channels.conf-dvbt-australia | 31 | ||||
-rw-r--r-- | util/szap/channels.conf-dvbt-berlin | 51 | ||||
-rw-r--r-- | util/szap/channels.conf-dvbt-collserola | 25 | ||||
-rw-r--r-- | util/szap/channels.conf-dvbt-crystal-palace | 70 | ||||
-rw-r--r-- | util/szap/channels.conf-dvbt-hannington | 28 | ||||
-rw-r--r-- | util/szap/channels.conf-dvbt-madrid | 16 | ||||
-rw-r--r-- | util/szap/channels.conf-dvbt-oxford | 41 | ||||
-rw-r--r-- | util/szap/channels.conf-dvbt-reigate | 51 | ||||
-rw-r--r-- | util/szap/channels.conf-dvbt-sandy_heath | 13 | ||||
-rw-r--r-- | util/szap/czap.c | 368 | ||||
-rw-r--r-- | util/szap/femon.c | 149 | ||||
-rw-r--r-- | util/szap/szap.c | 560 | ||||
-rw-r--r-- | util/szap/tzap.c | 477 |
17 files changed, 2359 insertions, 0 deletions
diff --git a/util/szap/Makefile b/util/szap/Makefile new file mode 100644 index 0000000..688c5d7 --- /dev/null +++ b/util/szap/Makefile @@ -0,0 +1,35 @@ +CC = gcc +CFLAGS = -MD -Wall -g -O2 -I../../include -I../lib +LFLAGS = -Wall -g -O2 +RM = rm -f + +TARGETS = szap tzap czap femon +OBJS = szap.o tzap.o czap.o femon.o + +all: $(OBJS) $(TARGETS) + @echo + @echo "--------------------------------------------------------------------------------" + @echo " please copy an appropriate channels.conf-XXX channel list for DVB-S/C/T" + @echo + @echo " to ~/.szap/channels.conf" + @echo " ~/.czap/channels.conf" + @echo " ~/.tzap/channels.conf" + @echo + @echo " and then call ./szap for DVB-S, ./czap for DVB-C or ./tzap for DVB-T" + @echo "--------------------------------------------------------------------------------" + @echo + +szap: szap.o ../lib/lnb.o + $(CC) $(LFLAGS) -o szap szap.o ../lib/lnb.o + +.c.o: + $(CC) $(CFLAGS) -o $@ -c $< + +.o: + $(CC) $(LFLAGS) -o $@ $< + +clean: + $(RM) $(TARGETS) core* *.o *.d .depend + +-include $(wildcard *.d) dummy + diff --git a/util/szap/README b/util/szap/README new file mode 100644 index 0000000..5c83c67 --- /dev/null +++ b/util/szap/README @@ -0,0 +1,47 @@ +Hi, + +this are some trivial zapping applications explaining how to use the frontend +and demux API. They are also pretty useful to test your hardware. + +For DVB-S, Astra Channel config file: + +$ ./szap -c channels.conf-dvbs-astra n24 + +will tune to N24. For DVB-C, Berlin Cable channel config: + +$ ./czap -c channels.conf-dvbc-berlin Arte + +For DVB-T, Berlin Config: + +$ ./czap -c channels.conf-dvbt-berlin phoenix + +By default the MPEG stream is routed to a hardware decoder. If you want to +record the stream to disk you will route it to the DVR device by using the +'-r' option: + +$ ./czap -c channels.conf-dvbt-berlin phoenix -r +[keep it running in one console] +$ cat /dev/dvr/adapter0/dvr0 > /tmp/recording.ts +[in a second console, will dump the MPEG transport stream to /tmp/recording.ts] + +The status messages have the following meaning: + +status 0x1f --- The demodulator status bits. + 0x1f means all bits set, everything ok. + +signal [0x0000...0xffff] --- Signal Strength. Values above 0x8000 should be ok. + +snr [0x0000...0xffff] --- Signal/Noise Ratio. Values above 0x8000 are ok. + +ber [0...0xffffffff] --- Bit Error Rate. The less the better. + +unc [0...0xffffffff] --- Number of Uncorrectable Blocks. + Small numbers are Preferable. + +If everything is alright and all frontend circuits are working stable +(are locked) you should see a FE_HAS_LOCK in the rightmost line. + +Good luck, + +Holger + diff --git a/util/szap/channels.conf-dvbc-berlin b/util/szap/channels.conf-dvbc-berlin new file mode 100644 index 0000000..7fb05a5 --- /dev/null +++ b/util/szap/channels.conf-dvbc-berlin @@ -0,0 +1,171 @@ +3sat:394000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:210:220 +ARD-Online-Kanal:426000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:1805 +CNBC:394000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:510:520 +DLF-K�ln:394000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:810 +DLR-Berlin:394000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:710 +EinsExtra:426000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:101:102 +EinsFestival:426000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:201:202 +EinsMuXx:426000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:301:302 +EuroNews:394000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:2221:2233 +Eurosport:394000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:410:420 +Fritz:426000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:901 +KiKa:394000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:310:320 +MDR FERNSEHEN:426000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:401:402 +MDR KULTUR:426000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:801 +MDR info:426000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:1101 +MHP ARD Online-Kanal:426000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:102 +NDR Fernsehen:426000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:2401:2402 +ORB-Fernsehen:426000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:501:502 +RADIOmultikulti:426000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:1301 +Radio 3:426000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:701 +SFB1:426000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:601:602 +SWR2:426000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:1401 +S�DWEST BW:410000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:801:802 +S�DWEST RP:426000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:3101:3102 +WDR 3:426000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:1501 +WDR 5:426000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:1601 +ZDF:394000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:110:120 +ZDFdigitext:394000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +ZDFdokukanal:394000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:660:670 +ZDFinfokanal:394000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:610:620 +ZDFtheaterkanal:394000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +JUMP:426000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:1001 +SPUTNIK:426000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:1201 +�sterreich 1:394000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:169 +ATV 2:434000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:631:632 +ATV 2:434000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:631:632 +Adagio:442000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +All Jazz:442000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +Avante:113000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:741:743 +B5 aktuell:410000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:3101 +BBC Prime:113000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:761:762 +BData3:402000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +BData4:402000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +BData5:402000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +BR-alpha:410000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:701:702 +Barock Fantasie:442000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +Bayerisches FS:410000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:201:202 +Bayern 1:410000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:3601 +Bayern 4 Klassik:410000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:3001 +BibelTV:113000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:731:732 +Bloomberg:346000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +CLASSICA:354000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:767:768 +COUNTRY:362000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:656 +Canal 24 Horas:121000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:991:992 +Club:113000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:711:713 +Cristal New Age:442000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +DANCE:370000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:304 +DW-tv:610000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:634:632 +Das Erste:410000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:101:102 +Detskij Mir:121000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:931:932 +ERT-Sat:434000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:691:692 +Einstein TV:113000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:701:702 +Euronews:610000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:597:596 +Eurosport News:113000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:771:772 +Extreme Sports:113000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:791:793 +Extreme Sports:346000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +Fashion TV:346000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +Fox Kids:434000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:671:672 +Fox Kids:434000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:671:673 +GOLD:370000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:320 +HITLISTE:370000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:784 +HR XXL:410000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:3501 +JAZZ:378000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:640 +Jazz legends:442000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +Kabel Wizard:346000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +Kanal 7:121000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +Kanal 7:610000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:49:52 +Kanal D:434000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:651:652 +Kanal D:434000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:651:652 +LATIN:362000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:368 +Landscape:346000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +Leitseite:346000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:2254:0 +Liberty TV:113000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:721:723 +MTV Base:113000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:781:782 +MV-Test:442000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +Modem-Setup:354000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +Movie Sounds:442000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +Musica Antica:442000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +Musica Camerata:442000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +NDR Info:410000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:3701 +NTV international:442000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +NTVI:434000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:611:612 +Nashe Kino:434000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:621:622 +NordwestRadio:410000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:3801 +OLD GOLD:362000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:336 +Opernfestival:442000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +PCNE:434000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:681:682 +PREMIERE SPORT INTERACTIVE:362000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +PREMIERE DIREKT 1:378000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +PREMIERE DIREKT 2:378000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +PREMIERE DIREKT 3:378000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +PREMIERE DIREKT 4:378000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:2815:2816 +PREMIERE EROTIK:378000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:1279:1280 +PREMIERE NOSTALGIE:378000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:2559:2560 +PREMIERE SERIE:378000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:1023:1024 +PREMIERE SPORT 1:362000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:255:258 +PREMIERE SPORT 2:378000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:3839:3840 +PREMIERE START:370000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:255:256 +Parlamentsfernsehen:610000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:33:36 +Phoenix:410000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:901:902 +Portal:402000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +RTP Internacional:434000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:661:662 +Rai 1:121000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:951:952 +Rai 2:121000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:961:962 +Rai 3:121000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:971:972 +SCHLAGER:370000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:384 +SR 1:410000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:3901 +SR Fernsehen Suedwest:410000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:501:502 +Show TV:121000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:911:912 +Sinfonica:442000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +TGRT:121000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:921:922 +TM V1.0:354000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +TV Polonia:434000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:641:642 +TVEi:121000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:981:982 +TW1:113000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:751:752 +Test-R:410000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:701:702 +Travel:610000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:595:594 +VCR-Setup:354000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +VH1 Classic:610000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:604:603 +Videotext:378000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +WDR FERNSEHEN:410000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:601:602 +ZEE TV:442000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +arte:410000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:401:403 +hessen fernsehen:410000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:301:302 +hr-chronos:410000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:3201 +hr-klassik:410000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:3401 +hr2:410000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:3301 +13 TH STREET:354000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:2303:2304 +ALTERNATIVE ROCK:370000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:544 +BEATE-UHSE.TV:354000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:1023:1024 +CHILLOUT:370000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:400 +CLASSIC ROCK:370000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:352 +DISCOVERY CHANNEL:378000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:1791:1792 +DISNEY CHANNEL:354000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:2559:2560 +DEUTSCHE HITS:370000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:800 +EASY LISTENING:378000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:608 +Einstein:346000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +FILM & MUSICAL:378000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:592 +FOX KIDS:354000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:1279:1280 +GOLDSTAR TV:354000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:3839:3840 +HARD ROCK:370000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:816 +HEIMATKANAL:354000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:1535:1536 +HIP HOP/R&B:370000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:576 +JUNIOR:354000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:255:256 +K-TOON:354000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 +KLASSIK POPUL�R:378000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:624 +KRIMI &CO:378000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:1535:1536 +LOVE SONGS:370000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:592 +NEW COUNTRY:362000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:384 +ORCHESTRALE WERKE:378000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:560 +PLANET:354000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:1791:1792 +PREMIERE 1:370000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:511:512 +PREMIERE 2:370000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:1791:1793 +PREMIERE 3:370000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:2303:2304 +PREMIERE 4:370000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:767:768 +PREMIERE 5:370000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:1279:1280 +PREMIERE 6:370000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:1535:1536 +PREMIERE 7:370000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:1023:1024 +SOUL CLASSICS:362000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:352 +STUDIO UNIVERSAL:354000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:2047:2048 +Sonnenklar TV:402000000:INVERSION_OFF:6900000:FEC_NONE:QAM_64:0:0 diff --git a/util/szap/channels.conf-dvbs-astra b/util/szap/channels.conf-dvbs-astra new file mode 100644 index 0000000..705f710 --- /dev/null +++ b/util/szap/channels.conf-dvbs-astra @@ -0,0 +1,226 @@ +Das Erste:11837:h:0:27500:101:102:1:28106 +ZDF:11954:h:0:27500:110:120:1:28006 +3sat:11954:h:0:27500:210:220:1:28007 +EinsMuXx:12110:h:0:27500:301:302:1:28203 +EinsFestival:12110:h:0:27500:201:202:1:28202 +EinsExtra:12110:h:0:27500:101:102:1:28201 +MDR FERNSEHEN:12110:h:0:27500:401:402:1:28204 +ORB-Fernsehen:12110:h:0:27500:501:502:1:28205 +B1 Berlin:12110:h:0:27500:601:602:1:28206 +SWR Fernsehen:11837:h:0:27500:801:802:1:28113 +SR Fernsehen Suedwes:11837:h:0:27500:501:502:1:28110 +hessen fernsehen:11837:h:0:27500:301:302:1:28108 +WDR FERNSEHEN:11837:h:0:27500:601:602:1:28111 +Bayerisches FS:11837:h:0:27500:201:202:1:28107 +N3:12110:h:0:27500:2401:2402:1:28224 +BR-alpha:11837:h:0:27500:701:702:1:28112 +KiKa:11954:h:0:27500:310:320:1:28008 +arte:11836:h:0:27500:401:402:1:28109 +ZDF Theaterkanal:11954:h:0:27500:1110:1120:1:28016 +ZDF.info:11954:h:0:27500:610:620:1:28011 +ZDF.doku:11954:h:0:27500:660:670:1:28014 +Phoenix:11837:h:0:27500:901:902:1:28114 +DW-tv:10786:v:0:21997:305:306:1:9005 +RTL Television:12188:h:0:27500:163:104:1:12003 +SAT.1:12480:v:0:27500:1791:1792:1:46 +ProSieben:12480:v:0:27500:255:256:1:898 +RTL2:12188:h:0:27500:166:128:1:12020 +Super RTL:12188:h:0:27500:165:120:1:12040 +KABEL1:12480:v:0:27500:511:512:1:899 +VOX:12188:h:0:27500:167:136:1:12060 +tm3:12480:v:0:27500:767:768:1:897 +Bloomberg TV Germany:12552:v:0:22000:162:99:1:12160 +EuroNews:11954:h:0:27500:2221:2233:1:28015 +N24:12480:v:0:27500:2047:2048:1:47 +n-tv:12670:v:0:22000:162:96:1:12730 +DSF:12480:v:0:27500:1023:1024:1:900 +Eurosport:11954:h:0:27500:410:420:1:28009 +Via 1 - Sch ner Re:12148:h:0:27500:511:512:1:44 +Home Order Tel:12480:v:0:27500:1279:1280:1:40 +QVC GERMANY:12552:v:0:22000:165:166:1:12100 +TW 1:12692:h:0:22000:166:167:1:13013 +Canal Canarias:12441:v:0:27500:513:681:1:29700 +ProSieben A:12051:v:0:27500:161:84:1:20002 +ProSieben CH:12051:v:0:27500:289:290:1:20001 +Kabel 1 Austria:12051:v:0:27500:166:167:1:20004 +Kabel 1 Schweiz:12051:v:0:27500:162:163:1:20003 +CNN Int.:12168:v:0:27500:165:100:1:28512 +Sky News:12552:v:0:22000:305:306:1:3995 +Travel:12168:v:0:27500:163:92:1:28001 +AB SAT / XXL:12266:h:0:27500:164:96:1:17004 +MOTEURS:12266:h:0:27500:160:80:1:17000 +HOT GM:12148:h:0:27500:767:768:1:45 +KTO:12129:v:0:27500:170:120:1:8411 +LA CINQUIEME:12207:v:0:27500:160:80:1:8501 +LCP:12207:v:0:27500:165:100:1:8506 +LibertyTV.com:12611:v:0:22000:941:942:1:12280 +TV5 Europe:12611:v:0:22000:45:46:1:12240 +Motors TV:12611:v:0:22000:191:194:1:12300 +Wishline:12611:v:0:22000:214:216:1:12320 +TV 5:10786:v:0:21997:164:112:1:9001 +RTM - MAROC:10786:v:0:21997:162:96:1:9002 +ESC1 - EGYPTE:10786:v:0:21997:163:104:1:9003 +RAI 1:10786:v:0:21997:289:290:1:9004 +RTPI:10786:v:0:21997:300:301:1:9006 +TV7:10786:v:0:21997:166:128:1:9007 +ARTE:10786:v:0:21997:167:136:1:9009 +Colourbars:12611:v:0:22000:48:49:1:3982 +Alice:12611:v:0:22000:162:96:1:12200 +Video Italia:12611:v:0:22000:121:122:1:12220 +ANDALUCIA TV:11934:v:0:27500:166:104:1:29011 +TVC INT.:12441:v:0:27500:512:660:1:29701 +TV4:11992:h:0:27500:165:98:1:20365 +TV Niepokalanow:11876:h:0:27500:161:82:1:20601 +VIVA:12670:v:0:22000:309:310:1:12732 +VIVA ZWEI:12552:v:0:22000:171:172:1:12120 +MTV Central:12699:v:0:22000:3031:3032:1:28643 +ONYX:12692:h:1:27500:161:84:1:502 +VIVA polska:11603:h:1:27500:190:191:1:611 +DeeJay TV:11603:h:1:27500:160:161:1:602 +NBC:11053:h:1:27500:550:551:1:8008 +EWTN:10722:h:1:29900:1001:1201:1:4601 +MTA INTL:10722:h:1:29900:1004:1204:1:4604 +VOX:11053:h:1:27500:500:501:1:8002 +SAT.1 A:11053:h:1:27500:511:512:1:8003 +RTL2 AUSTRIA:11053:h:1:27500:520:521:1:8004 +ZDF:11053:h:1:27500:570:571:1:8011 +K-TV:11053:h:1:27500:580:581:1:8012 +RTL Television:11053:h:1:27500:160:80:1:8001 +ARTE:11059:v:1:6510:98:99:1:1 +HOT Italia:11095:h:1:27500:4194:4195:1:3714 +Olisat:11095:h:1:27500:33:34:1:3718 +VIVA-POLSKA:11128:h:1:4340:98:99:1:1 +DW-tv:11195:v:1:9099:101:102:1:5301 +Canal 24 Horas:11203:h:1:3999:4130:4131:1:5301 +TV5:11337:v:1:5631:512:640:1:1 +SAT.1 CH:11603:h:1:27500:101:102:1:601 +KurdSat:11603:h:1:27500:111:112:1:603 +ARD "Das Erste":11603:h:1:27500:172:173:1:606 +RTL 2 CH:11603:h:1:27500:175:176:1:609 +Super RTL A:11603:h:1:27500:180:181:1:610 +TV ROMANIA:11622:v:1:27500:227:247:1:10707 +MRTV:11622:v:1:27500:222:242:1:10702 +102.5 HIT Ch:11622:v:1:27500:224:244:1:10704 +TLC SAT:11622:v:1:27500:225:245:1:10705 +PRO-SAT:11622:v:1:27500:246:226:1:10706 +Channel SUN:11622:v:1:27500:229:249:1:10709 +Racing Channel:11622:v:1:27500:228:248:1:10708 +3 ABN:11622:v:1:27500:221:241:1:10701 +Bloom.Germany:11642:h:1:27500:1460:1420:1:4 +Bloomberg TV UK:11642:h:1:27500:1560:1520:1:4 +Sat 7:11642:h:1:27500:1660:1620:1:4 +EDTV 1:11746:h:1:27500:4130:4131:1:9501 +EDTV SPORT:11746:h:1:27500:4386:4387:1:9502 +EDTV BUSINESS:11746:h:1:27500:4642:4643:1:9503 +EDTV DRAMA:11746:h:1:27500:4898:4899:1:9504 +RAI1:11765:v:1:27499:160:80:1:3401 +RAI2:11765:v:1:27499:161:84:1:3402 +RAI3:11765:v:1:27499:162:88:1:3403 +RaiWayTEST2:11765:v:1:27499:516:654:1:3405 +RAIMOSAICO:11765:v:1:27499:518:8191:1:3407 +RAINews24:11803:v:1:27500:516:654:1:3301 +CAMERA DEPUTATI:11803:v:1:27500:517:655:1:3302 +TELEPACE:11803:v:1:27500:515:653:1:3304 +RAISPORTSAT:11803:v:1:27500:512:650:1:3305 +RAINettunoSAT2:11803:v:1:27500:513:651:1:3306 +RAIeducational:11803:v:1:27500:514:652:1:3307 +RAINettunoSAT1:11803:v:1:27500:519:657:1:3308 +SAT2000:11803:v:1:27500:518:656:1:3309 +I1:11918:v:1:27499:512:650:1:1 +C5:11918:v:1:27499:513:660:1:2 +R4:11918:v:1:27499:514:670:1:3 +Telesierra:12091:h:1:27500:4160:4161:1:8704 +C. Milagro:12091:h:1:27500:4368:4369:1:8711 +Italia Sat:12091:h:1:27500:4600:4601:1:8728 +TVE Internacional:12091:h:1:27500:4208:4209:1:8707 +Fiesta:12091:h:1:27500:4432:4433:1:8720 +Retelsat:12091:h:1:27500:4464:4465:1:8722 +ART EUROPE:12013:h:1:27495:164:96:1:450 +EGYPT SAT. CH. 2:12013:h:1:27495:166:104:1:470 +IQRA:12013:h:1:27495:168:112:1:474 +MAURITANIA TV:12110:v:1:27500:230:231:1:704 +ARMENIA TV:12110:v:1:27500:240:241:1:705 +SAILING CHANNEL:12110:v:1:27500:260:261:1:707 +AL JAZEERA:12110:v:1:27500:270:271:1:708 +Coming Soon TV:12110:v:1:27500:310:311:1:717 +SaluteBenessere:12110:v:1:27500:320:321:1:718 +AH-EDP1:12148:v:1:27499:96:97:1:7201 +AH-EDP2:12148:v:1:27499:112:113:1:7202 +Espresso:12148:v:1:27499:192:193:1:7203 +Alice:12148:v:1:27499:160:161:1:7220 +Nuvolari:12148:v:1:27499:176:177:1:7221 +Leonardo:12148:v:1:27499:128:129:1:7222 +AH-EDP3:12148:v:1:27499:36:37:1:7205 +OTE Promo:12187:v:1:27500:517:655:1:1001 +RTS SAT:12187:v:1:27500:519:657:1:1022 +ERT SAT:12187:v:1:27500:514:652:1:1102 +EXTRA:12187:v:1:27500:516:654:1:1106 +TRIAL:12187:v:1:27500:513:651:1:1108 +Minimax:11303:h:1:19540:300:301:1:3 +TVN1:12209:h:1:5631:4194:4195:1:1 +RR TEST:10978:v:1:8998:33:34:1:1 +TV 5 Thailand:10978:v:1:8998:1057:1058:1:2 +TEST-1:10978:v:1:8998:3105:3106:1:4 +FASHION:12244:h:1:27500:123:133:1:103 +AJARA TV:12244:h:1:27500:127:137:1:107 +SLO-TV1:12300:v:1:27495:200:201:1:3201 +POLONIA 1:12302:v:1:27500:205:206:1:3203 +SUPER 1:12302:v:1:27500:207:208:1:3207 +NAPOLI INT.:12302:v:1:27500:240:241:1:3210 +MAGIC:12302:v:1:27500:245:246:1:3211 +COUNTDOWN:12302:v:1:27500:235:236:1:3212 +TBNE:12302:v:1:27500:230:231:1:3213 +NAPOLI CHANNEL:12302:v:1:27500:227:228:1:3215 +KURDISTAN TV:12302:v:1:27500:225:226:1:3214 +ATLAS TV:12379:v:1:27500:3022:3032:1:3002 +TELE 24 SWITZERLAND:12379:v:1:27500:3023:3033:1:3003 +Abu Dhabi TV:12379:v:1:27500:3024:3034:1:3004 +RTV MONTENEGRO:12379:v:1:27500:3026:3036:1:3006 +JAAM-E-JAM 1:12436:h:1:27500:160:80:1:1 +JAAM-E-JAM 2:12436:h:1:27500:161:82:1:2 +SAHAR:12436:h:1:27500:162:84:1:3 +SAHAR 2:12436:h:1:27500:163:86:1:4 +IRINN:12436:h:1:27500:164:88:1:5 +Musicmax:11303:h:1:19540:500:501:1:6 +TEST:12474:h:1:27500:771:8191:1:10608 +EbS:12474:h:1:27500:101:201:1:10601 +MOU.2:12474:h:1:27500:42:43:1:10602 +PINK PLUS:12474:h:1:27500:308:256:1:10605 +LibertyTV.com:12474:h:1:27500:941:942:1:10603 +2M Maroc:12474:h:1:27500:601:602:1:10607 +ZEE TV:12474:h:1:27500:910:911:1:10604 +WorldNet Europe:12483:v:1:8299:4260:4220:1:1 +WorldNet:12483:v:1:8299:4560:4520:1:4 +SICILIA INTERNATIONA:12519:v:1:27499:501:502:1:8309 +SARDEGNA UNO:12519:v:1:27499:503:504:1:8310 +EuroMed:12519:v:1:27499:510:511:1:8312 +TGRT:12519:v:1:27499:505:506:1:8313 +VIDEOLINA:12519:v:1:27499:515:516:1:8318 +MEDIOLANUM:12538:h:1:27500:1131:1132:1:8987 +www.travel:12538:h:1:27500:1180:1183:1:8992 +MonteCarloSat:12538:h:1:27500:5126:5122:1:8877 +Bulgaria TV:12538:h:1:27500:4612:4613:1:8827 +TVN1:12571:h:1:5631:4194:4195:1:1 +JSTV 1:12595:v:1:27500:2000:2001:1:8213 +JSTV 2:12595:v:1:27500:2011:2013:1:8214 +MBC:12595:v:1:27500:160:80:1:8201 +ANN:12595:v:1:27500:161:84:1:8202 +BET:12595:v:1:27500:167:108:1:8208 +EuroNews:12595:v:1:27500:2221:2231:1:8211 +Sharjah Arabs:12653:h:1:27500:1160:1120:1:1 +Qatar Arabs:12653:h:1:27500:1260:1220:1:2 +Saudi 1 Arabs:12653:h:1:27500:1360:1320:1:3 +Kuwait Arabs:12653:h:1:27500:1460:1420:1:4 +Libya Arabs:12653:h:1:27500:1560:1520:1:5 +Sudan Arabs:12653:h:1:27500:1660:1620:1:6 +Oman Arabs:12653:h:1:27500:1760:1720:1:7 +Jordan Arabs:12653:h:1:27500:1860:1820:1:8 +IRAQ TV:12653:h:1:27500:1960:1920:1:9 +Dubai Sport:12653:h:1:27500:1060:1020:1:10 +Digitaly:12672:v:1:27500:220:221:1:4203 +Telemarket:12672:v:1:27500:350:351:1:4211 +eVision:12672:v:1:27500:360:361:1:4214 +Thai TV5:12672:v:1:27500:200:201:1:4201 +Studio Europa:12672:v:1:27500:230:231:1:4204 +Video Italia:12672:v:1:27500:340:341:1:4210 +GAME NETWORK:12672:v:1:27500:291:292:1:4213 diff --git a/util/szap/channels.conf-dvbt-australia b/util/szap/channels.conf-dvbt-australia new file mode 100644 index 0000000..9709b0b --- /dev/null +++ b/util/szap/channels.conf-dvbt-australia @@ -0,0 +1,31 @@ +ABC HDTV:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:2307:0:560 +ABC TV Melbourne:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:561 +ABC TV 2:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:562 +ABC TV 3:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:563 +ABC TV 4:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:564 +ABC DiG Radio:226500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_3_4:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:0:2311:566 +TEN Digital:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1585 +TEN Digital 1:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1586 +TEN Digital 2:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1587 +TEN Digital 3:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1588 +TEN Digital:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1589 +TEN Digital 4:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1590 +TEN Digital:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1591 +TEN HD:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:514:0:1592 +TEN Digital:219500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:650:1593 +Nine Digital:191625000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:513:660:1072 +Nine Digital HD:191625000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:512:0:1073 +Nine Guide:191625000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:514:670:1074 +7 Digital:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1328 +7 Digital 1:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1329 +7 Digital 2:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1330 +7 Digital 3:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:769:770:1331 +7 HD Digital:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:833:834:1332 +7 Program Guide:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:865:866:1334 +SBS HD:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:102:103:784 +SBS DIGITAL 1:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:161:81:785 +SBS DIGITAL 2:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:162:83:786 +SBS EPG:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:163:85:787 +SBS RADIO 1:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:201:798 +SBS RADIO 2:536500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:202:799 + diff --git a/util/szap/channels.conf-dvbt-berlin b/util/szap/channels.conf-dvbt-berlin new file mode 100644 index 0000000..dbddca5 --- /dev/null +++ b/util/szap/channels.conf-dvbt-berlin @@ -0,0 +1,51 @@ +c5:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:161:82 +c7:191500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_NONE:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:161:82 +c25:506000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:161:82 +c27:522000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:161:82 +c33:570000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:161:82 +c44:658000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:161:82 +c56:754000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:161:82 +c59:778000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:161:82 + +SWR BW:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:257:258:16 +WDR:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:241:242:15 +BBC World:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:49:50:16387 +FAB:177500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_3_4:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:3073:3074:16576 + +MDR Fernsehen:191500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_NONE:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:101:102:1 +arte:191500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_NONE:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:201:202:2 +NDR Fernsehen:191500000:INVERSION_OFF:BANDWIDTH_7_MHZ:FEC_2_3:FEC_NONE:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:301:302:3 + +RTL:506000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:337:338:16405 +RTL2:506000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:353:354:16406 +Super RTL:506000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:433:434:16411 +VOX:506000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:545:546:16418 + +Das Erste:522000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:1401:1402:14 +Phoenix:522000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:1301:1302:13 +RBB Berlin:522000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:1201:1202:12 +RBB Brandenburg:522000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:1101:1102:11 + +ZDF:570000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:545:546:514 +Info/3sat:570000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:561:562:515 +Doku/KiKa:570000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:593:594:517 + +Kabel 1:658000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:161:162:16394 +N24:658000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:225:226:16398 +ProSieben:658000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:305:306:16403 +SAT.1:658000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:385:386:16408 + +DSF:754000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:129:130:16392 +Testkanal n-tv:754000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:273:274:16401 +VIVA Plus:754000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:529:530:16417 +Eurosport:754000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:577:578:16420 + +Testkanal Eurosport:778000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:577:578:16420 +SUD:778000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:0:16642 +HUMAX DOWNLOAD SVC:778000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:0:16645 +IP Services:778000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:0:16640 +Media Broadcast Services:778000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:0:16641 +SUD 1:778000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:0:16643 +Kathrein Download:778000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:0:16644 +Testkanal MTV:778000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:193:194:16396 +Testkanal n-tv:778000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:273:274:16401 diff --git a/util/szap/channels.conf-dvbt-collserola b/util/szap/channels.conf-dvbt-collserola new file mode 100644 index 0000000..63456b2 --- /dev/null +++ b/util/szap/channels.conf-dvbt-collserola @@ -0,0 +1,25 @@ +#channels.conf for DVB-T - Collserola (Barcelona) Transmitter + +#C43 +TV3:650000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:111:112:801 +K3/33:650000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:121:122:802 +3/24:650000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:131:132:803 +Canal Pilot:650000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:141:142:804 +3XL.net:650000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:151:152:805 + +#C61 +TVE 1:794000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:101:103:1377 +TVE 2:794000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:201:203:1441 +ANTENA 3:794000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:301:303:1121 +CANAL+:794000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:501:503:1057 +TELECINCO:794000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:401:403:1185 + +#C66 +Veo TV:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:301:302:1536 +Net TV:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:401:402:1825 +Video Promocional 1:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:210:212:425 +Video Promocional 2:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:110:0:420 +[1388]:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:0:5000 +[138c]:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:0:5004 +[138a]:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:0:5002 + diff --git a/util/szap/channels.conf-dvbt-crystal-palace b/util/szap/channels.conf-dvbt-crystal-palace new file mode 100644 index 0000000..28fa018 --- /dev/null +++ b/util/szap/channels.conf-dvbt-crystal-palace @@ -0,0 +1,70 @@ +#channels.conf for DVB-T - Crystal Palace Transmitter + +# Multiplex 1 BBC - Channel 25, Offset -, Freq 505833333 +BBCi:505833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:4479 +CBBC Channel:505833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0:4671 +BBC ONE:505833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:600:601 +BBC TWO:505833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:610:611 +BBC THREE:505833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:620:621 +BBC NEWS 24:505833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:640:641 + +# Multiplex 2 Digital 3&4 - Channel 22, Offset -, Freq 481833333 +Teletext:481833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0 +FourText:481833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0 +CHANNEL4:481833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2827:2828 +ITV NEWS:481833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2850:2851 +ITV 1:481833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:512:650 +ITV 2:481833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2818:2819 +Ch 14:481833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2840:2841 + +#Multiplex A SDN - Channel 32, Offset -, Frequency 561833333 +ntl:561833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0 +Ch 15:561833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:660 +BBC Radio 1:561833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:6210 +BBC Radio 2:561833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:6226 +BBC Radio 3:561833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:6242 +BBC Radio 4:561833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:6258 +QVC:561833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:6049:6050 +FIVE:561833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:6017:6018 +bid-up.tv:561833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:6273:6274 +TV Travel Shop:561833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:6161:6161 + +#Multiplex B BBC - Channel 28, Offset -, Frequency 529833333 +#Community (0x4e00) 01: PCR 0x1fff +#703 (0x4c80) 01: PCR 0x1fff +BBC PARLMNT:529833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:403 +BBC FOUR:529833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:201:401 +701:529833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:204:411 +702:529833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:203:407 +CBeebies:529833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:401:402 +BBC Asian Net:529833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:435 +1Xtra BBC:529833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:434 +BBC 7:529833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:433 +BBC 6 Music:529833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:432 +BBC 5L SportsX:529833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:431 +BBC R5 Live:529833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:430 + +# Multiplex C Crown Castle - Channel 34, Offset +, Frequency 578166666 +UKHistory:578166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:401:402 +Sky Travel:578166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:301:302 +Sky Spts News:578166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:201:202 +Sky News:578166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:101:102 + +# Multiplex D Crown Castle - Channel 29, Offset -, Freq 537833333 +#UKBrightIdeas (0x64c0) 01: PCR 0x1fff +THE HITS:537833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:101:102 +TMF:537833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:201:202 +CBM:537833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:501:502 +Free2Play:537833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0 +Q:537833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:1901 +Magic:537833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:1801 +The Hits Radio:537833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:1701 +BBC World Sv:537833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:1601 +oneworld:537833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:1501 +jazz fm:537833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:1401 +Kerrang:537833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:1301 +Smash Hits:537833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:1201 +Kiss:537833333:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:1101 + + + diff --git a/util/szap/channels.conf-dvbt-hannington b/util/szap/channels.conf-dvbt-hannington new file mode 100644 index 0000000..b83620e --- /dev/null +++ b/util/szap/channels.conf-dvbt-hannington @@ -0,0 +1,28 @@ +BBC One:706000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:600:601 +BBC Two:706000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:610:611 +CBBC:706000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:620:621 +BBC Three:706000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:620:621 +BBC News 24:706000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:640:641 +CBeebies:674166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:201:401 +BBC Four:674166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:201:401 +BBC Parliament:674166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:403 +701:674166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:203:407 +702:674166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:204:411 +703:674166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0 +ITV 1:650166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:513:651 +ITV 2:650166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2818:2819 +Channel 4:650166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2822:2823 +ITV News:650166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2822:2823 +price-drop.tv:650166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2840:2841 +Five:626166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:6017:6018 +QVC:626166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:6059:6050 +Tv Travel Shop:626166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:6161:6162 +Channel 15:626166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:660 +bid-up.tv:626166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:6273:6274 +Sky News:658166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:101:102 +Sky Sports News:658166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:201:202 +Sky Travel:658166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:301:302 +UK History:658166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:401:402 +The Hits:634166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:101:102 +TMF:634166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:201:202 +UK Bright Ideas:634166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0 diff --git a/util/szap/channels.conf-dvbt-madrid b/util/szap/channels.conf-dvbt-madrid new file mode 100644 index 0000000..cdf515b --- /dev/null +++ b/util/szap/channels.conf-dvbt-madrid @@ -0,0 +1,16 @@ +Veo TV:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:301:302:1536 +Net TV:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:401:402:1825 +[1388]:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:0:5000 +[138c]:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:0:5004 +[138a]:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:0:5002 +Video Promocional:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:0:420 +Informe Semanal:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:0:425 +TVE 2:770000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:201:203:1441 +ANTENA 3:770000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:301:303:1121 +TELECINCO:770000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:401:403:1185 +CANAL+:770000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:501:503:1057 +TVE 1:770000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:101:103:1377 +Telemadrid:810000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:111:113:421 +La Otra:810000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:211:212:422 +Quiero Madrid:810000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:411:412:424 +Onda 6:810000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:311:312:423 diff --git a/util/szap/channels.conf-dvbt-oxford b/util/szap/channels.conf-dvbt-oxford new file mode 100644 index 0000000..29a53a2 --- /dev/null +++ b/util/szap/channels.conf-dvbt-oxford @@ -0,0 +1,41 @@ +BBC-Choice:578000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:620:621 +BBC-Knowledge:578000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:630:631 +BBC-News24:578000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:640:641 +BBC-1:578000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:600:601 +BBC-Parliament:578000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:660 +BBC-2:578000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:610:611 +ITV-1:850000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:513:651 +ITV-2:850000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2818:2819 +ITV-Sport:850000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2836:2837 +FilmFour:850000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2822:2823 +C4:850000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2826:2827 +E4:850000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2831:2832 +C5:713833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:6017:6018 +Shop:713833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:6049:6050 +ITVSelect-Info:713833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:6065:6066 +ITVSelect-1:713833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:6081:6082 +ITVSelect-2:713833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:6097:6098 +ITVSelect-3:713833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:6113:6114 +ITVSelect-4:713833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:6129:6130 +Carlton-Cinema:721833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:288:289 +Sky-One:721833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:544:545 +Sky-Sports-1:721833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:800:801 +Sky-Premier:721833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:1056:1057 +CartoonNetwork:721833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:1312:1313 +UK-Horizons:721833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2336:2337 +ITV-Sport-Plus:721833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2592:2593 +ITVSportSelect:721833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:2596 +BreezeMen&Mtrs:690000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:800:801 +Granada-Plus:690000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:544:545 +MTV:690000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:1568:1569 +Sky-Movie-Max:690000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:1312:1313 +Sky-Sports-2:690000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2080:2081 +UK-Gold:690000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:288:289 +Wellbeing:690000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:1824:1825 +PLAY-uk:538000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:288:289 +UK-Style:538000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:544:545 +no-name:538000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:800:801 +Discovery:538000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:1312:1313 +Nick/Paramount:538000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2080:2081 +Sky-Sports-3:538000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2336:2337 +Brit-Eurosport:538000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2592:2593 diff --git a/util/szap/channels.conf-dvbt-reigate b/util/szap/channels.conf-dvbt-reigate new file mode 100644 index 0000000..f5fe7cc --- /dev/null +++ b/util/szap/channels.conf-dvbt-reigate @@ -0,0 +1,51 @@ +BBC ONE:554000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:600:601 +BBC TWO:554000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:610:611 +ITV 1:474000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_1_2:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:512:650 +Channel 4:474000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_1_2:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2827:2828 +five:498000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_1_2:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:6017:6018 +ITV 2:474000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_1_2:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2818:2819 +BBC THREE:554000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0 +Teletext:474000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_1_2:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0 +BBC FOUR:522000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0 +Sky Travel:618166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:301:302 +UKHistory:618166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:401:402 +Ch 14:474000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_1_2:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2840:2841 +Ch 15:498000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_1_2:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:660 +QVC:498000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_1_2:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:6049:6050 +TV Travel Shop:498000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_1_2:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:6161:6162 +The HITS:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:101:102 +UKBrightIdeas:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:301:302 +f tn:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0 +TMF:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:201:202 +bid-up.tv:498000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_1_2:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:6273:6274 +CBM:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:501:502 +CBBC Channel:554000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:620:621 +CBeebies:522000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:201:401 +BBC NEWS 24:554000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:640:641 +ITV News:474000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_1_2:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2850:2851 +Sky News:618166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:101:102 +Sky Spts News:618166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:201:202 +BBC PARLMNT:522000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:403 +Community:522000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0 +FourText:474000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_1_2:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0 +BBCi:554000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0 +ntl:498000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_1_2:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0 +BBC Radio 1:498000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_1_2:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:6210 +1Xtra BBC:522000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:434 +BBC Radio 2:498000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_1_2:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:6226 +BBC Radio 3:498000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_1_2:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:6242 +BBC Radio 4:498000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_1_2:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:6258 +BBC R5 Live:522000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:430 +BBC 5L SportsX:522000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:431 +BBC 6 Music:522000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:432 +BBC 7:522000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:433 +BBC Asian Net.:522000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:435 +BBC World Sv.:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:1601 +Smash Hits!:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:1201 +Kiss:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:1101 +Kerrang!:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:1301 +jazz fm:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:1401 +oneword:834000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:1501 +701:522000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:203:407 +702:522000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:204:411 +703:522000000:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_3_4:FEC_NONE:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:0 diff --git a/util/szap/channels.conf-dvbt-sandy_heath b/util/szap/channels.conf-dvbt-sandy_heath new file mode 100644 index 0000000..a0cc632 --- /dev/null +++ b/util/szap/channels.conf-dvbt-sandy_heath @@ -0,0 +1,13 @@ +BBC-Choice:641833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:620:621 +BBC-Knowledge:641833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:630:631 +BBC-News24:641833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:640:641 +BBC-1:641833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:600:601 +BBC-Parliament:641833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:660 +BBC-2:641833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:610:611 +ITV-1:665833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:513:651 +ITV-2:665833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2819:2820 +C4:665833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2823:2824 +E4:665833334:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:2831:2832 +C5:650166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:6017:6018 +Shop:650166666:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:6049:6050 + diff --git a/util/szap/czap.c b/util/szap/czap.c new file mode 100644 index 0000000..9d183f9 --- /dev/null +++ b/util/szap/czap.c @@ -0,0 +1,368 @@ +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/ioctl.h> +#include <unistd.h> +#include <stdlib.h> +#include <stdint.h> +#include <string.h> +#include <stdio.h> +#include <fcntl.h> +#include <ctype.h> +#include <errno.h> + +#include <linux/dvb/frontend.h> +#include <linux/dvb/dmx.h> + + +static char FRONTEND_DEV [80]; +static char DEMUX_DEV [80]; + +#define CHANNEL_FILE "/.czap/channels.conf" + +#define ERROR(x...) \ + 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) + + +typedef struct { + char *name; + int value; +} Param; + +static const Param inversion_list[] = { + { "INVERSION_OFF", INVERSION_OFF }, + { "INVERSION_ON", INVERSION_ON }, + { "INVERSION_AUTO", INVERSION_AUTO } +}; + +static const Param fec_list[] = { + { "FEC_1_2", FEC_1_2 }, + { "FEC_2_3", FEC_2_3 }, + { "FEC_3_4", FEC_3_4 }, + { "FEC_4_5", FEC_4_5 }, + { "FEC_5_6", FEC_5_6 }, + { "FEC_6_7", FEC_6_7 }, + { "FEC_7_8", FEC_7_8 }, + { "FEC_8_9", FEC_8_9 }, + { "FEC_AUTO", FEC_AUTO }, + { "FEC_NONE", FEC_NONE } +}; + +static const Param modulation_list[] = { + { "QAM_16", QAM_16 }, + { "QAM_32", QAM_32 }, + { "QAM_64", QAM_64 }, + { "QAM_128", QAM_128 }, + { "QAM_256", QAM_256 }, + { "QAM_AUTO", QAM_AUTO } +}; + +#define LIST_SIZE(x) sizeof(x)/sizeof(Param) + + +static +int parse_param(const char *val, const Param * plist, int list_size) +{ + int i; + + for (i = 0; i < list_size; i++) { + if (strcasecmp(plist[i].name, val) == 0) + return plist[i].value; + } + return -1; +} + + +static char line_buf[256]; +static +char *find_channel(FILE *f, int list_channels, int *chan_no, const char *channel) +{ + size_t l; + int lno = 0; + + l = channel ? strlen(channel) : 0; + while (!feof(f)) { + if (!fgets(line_buf, sizeof(line_buf), f)) + return NULL; + lno++; + if (list_channels) { + printf("%3d %s", lno, line_buf); + } + else if (*chan_no) { + if (*chan_no == lno) + return line_buf; + } + else if ((strncasecmp(channel, line_buf, l) == 0) + && (line_buf[l] == ':')) { + *chan_no = lno; + return line_buf; + } + }; + + return NULL; +} + + +int parse(const char *fname, int list_channels, int chan_no, const char *channel, + struct dvb_frontend_parameters *frontend, int *vpid, int *apid) +{ + FILE *f; + char *chan; + char *name, *inv, *fec, *mod; + + if ((f = fopen(fname, "r")) == NULL) { + PERROR("could not open file '%s'", fname); + return -1; + } + + chan = find_channel(f, list_channels, &chan_no, channel); + fclose(f); + if (list_channels) + return 0; + if (!chan) { + ERROR("could not find channel '%s' in channel list", + channel); + return -2; + } + printf("%3d %s", chan_no, chan); + + if ((sscanf(chan, "%a[^:]:%d:%a[^:]:%d:%a[^:]:%a[^:]:%d:%d\n", + &name, &frontend->frequency, + &inv, &frontend->u.qam.symbol_rate, + &fec, &mod, vpid, apid) != 8) + || !name || !inv || !fec | !mod) { + ERROR("cannot parse service data"); + return -3; + } + frontend->inversion = parse_param(inv, inversion_list, LIST_SIZE(inversion_list)); + if (frontend->inversion < 0) { + ERROR("inversion field syntax '%s'", inv); + return -4; + } + frontend->u.qam.fec_inner = parse_param(fec, fec_list, LIST_SIZE(fec_list)); + if (frontend->u.qam.fec_inner < 0) { + ERROR("FEC field syntax '%s'", fec); + return -5; + } + frontend->u.qam.modulation = parse_param(mod, modulation_list, + LIST_SIZE(modulation_list)); + if (frontend->u.qam.modulation < 0) { + ERROR("modulation field syntax '%s'", mod); + return -6; + } + printf("%3d %s: f %d, s %d, i %d, fec %d, qam %d, v %#x, a %#x\n", + chan_no, name, frontend->frequency, frontend->u.qam.symbol_rate, + frontend->inversion, frontend->u.qam.fec_inner, + frontend->u.qam.modulation, *vpid, *apid); + free(name); + free(inv); + free(fec); + free(mod); + + return 0; +} + + + +static +int set_pesfilter (int fd, int pid, dmx_pes_type_t type, int dvr) +{ + struct dmx_pes_filter_params pesfilter; + + if (pid <= 0 || pid >= 0x1fff) + return 0; + + pesfilter.pid = pid; + pesfilter.input = DMX_IN_FRONTEND; + pesfilter.output = dvr ? DMX_OUT_TS_TAP : DMX_OUT_DECODER; + pesfilter.pes_type = type; + pesfilter.flags = DMX_IMMEDIATE_START; + + if (ioctl(fd, DMX_SET_PES_FILTER, &pesfilter) < 0) { + PERROR ("ioctl(DMX_SET_PES_FILTER) for %s PID failed", + type == DMX_PES_AUDIO ? "Audio" : + type == DMX_PES_VIDEO ? "Video" : "??"); + return -1; + } + + return 0; +} + +static +int setup_frontend(int fe_fd, struct dvb_frontend_parameters *frontend) +{ + struct dvb_frontend_info fe_info; + + if (ioctl(fe_fd, FE_GET_INFO, &fe_info) < 0) { + PERROR ("ioctl FE_GET_INFO failed"); + return -1; + } + + if (fe_info.type != FE_QAM) { + ERROR ("frontend device is not a QAM (DVB-C) device"); + return -1; + } + + if (ioctl(fe_fd, FE_SET_FRONTEND, frontend) < 0) { + PERROR ("ioctl FE_SET_FRONTEND failed"); + return -1; + } + + return 0; +} + + +static +int check_frontend (int fe_fd) +{ + fe_status_t status; + uint16_t snr, signal; + uint32_t ber, uncorrected_blocks; + + do { + ioctl(fe_fd, FE_READ_STATUS, &status); + ioctl(fe_fd, FE_READ_SIGNAL_STRENGTH, &signal); + ioctl(fe_fd, FE_READ_SNR, &snr); + ioctl(fe_fd, FE_READ_BER, &ber); + ioctl(fe_fd, FE_READ_UNCORRECTED_BLOCKS, &uncorrected_blocks); + + 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"); + + usleep(1000000); + + printf("\n"); + } while (1); + + return 0; +} + + +static const char *usage = "\nusage: %s [-a adapter_num] [-f frontend_id] [-d demux_id] [-c conf_file] {<channel name>| -n channel_num}\n" + " or: %s [-c conf_file] -l\n\n"; + + +int main(int argc, char **argv) +{ + struct dvb_frontend_parameters frontend_param; + char *homedir = getenv("HOME"); + char *confname = NULL; + char *channel = NULL; + int adapter = 0, frontend = 0, demux = 0, dvr = 0; + int vpid, apid; + int frontend_fd, video_fd, audio_fd; + int opt, list_channels = 0, chan_no = 0; + + while ((opt = getopt(argc, argv, "ln:hrn:a:f:d:c:")) != -1) { + switch (opt) { + case 'a': + adapter = strtoul(optarg, NULL, 0); + break; + case 'f': + frontend = strtoul(optarg, NULL, 0); + break; + case 'd': + demux = strtoul(optarg, NULL, 0); + break; + case 'r': + dvr = 1; + break; + case 'l': + list_channels = 1; + break; + case 'n': + chan_no = strtoul(optarg, NULL, 0); + break; + case 'c': + confname = optarg; + break; + case '?': + case 'h': + default: + fprintf (stderr, usage, argv[0], argv[0]); + return -1; + }; + } + + if (optind < argc) + channel = argv[optind]; + + if (!channel && chan_no <= 0 && !list_channels) { + fprintf (stderr, usage, argv[0], argv[0]); + return -1; + } + + if (!homedir) + ERROR("$HOME not set"); + + 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); + + printf ("using '%s' and '%s'\n", FRONTEND_DEV, DEMUX_DEV); + + if (!confname) + { + if (!homedir) + ERROR("$HOME not set"); + confname = malloc(strlen(homedir) + strlen(CHANNEL_FILE) + 1); + memcpy(confname, homedir, strlen(homedir)); + memcpy(confname + strlen(homedir), CHANNEL_FILE, + strlen(CHANNEL_FILE) + 1); + } + memset(&frontend_param, 0, sizeof(struct dvb_frontend_parameters)); + + if (parse(confname, list_channels, chan_no, channel, &frontend_param, &vpid, &apid)) + return -1; + if (list_channels) + return 0; + + if ((frontend_fd = open(FRONTEND_DEV, O_RDWR)) < 0) { + PERROR("failed opening '%s'", FRONTEND_DEV); + return -1; + } + + if (setup_frontend(frontend_fd, &frontend_param) < 0) + return -1; + + if ((video_fd = open(DEMUX_DEV, O_RDWR)) < 0) { + PERROR("failed opening '%s'", DEMUX_DEV); + return -1; + } + + 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; + } + + if (set_pesfilter (audio_fd, apid, DMX_PES_AUDIO, dvr) < 0) + return -1; + + check_frontend (frontend_fd); + + close (audio_fd); + close (video_fd); + close (frontend_fd); + + return 0; +} + diff --git a/util/szap/femon.c b/util/szap/femon.c new file mode 100644 index 0000000..47e37a3 --- /dev/null +++ b/util/szap/femon.c @@ -0,0 +1,149 @@ +/* femon -- monitor frontend status + * + * Copyright (C) 2003 convergence GmbH + * Johannes Stezenbach <js@convergence.de> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + +#include <stdio.h> +#include <stdlib.h> +#include <limits.h> +#include <string.h> +#include <errno.h> +#include <sys/ioctl.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/poll.h> +#include <fcntl.h> +#include <time.h> +#include <unistd.h> + +#include <stdint.h> +#include <sys/time.h> + +#include <linux/dvb/frontend.h> + +#ifndef TRUE +#define TRUE (1==1) +#endif +#ifndef FALSE +#define FALSE (1==0) +#endif + + +#define FRONTENDDEVICE "/dev/dvb/adapter%d/frontend%d" + +static char *usage_str = + "\nusage: femon [options]\n" + " -a number : use given adapter (default 0)\n" + " -f number : use given frontend (default 0)\n\n"; + + +static void usage(void) +{ + fprintf(stderr, usage_str); + exit(1); +} + + +static +int check_frontend (int fe_fd) +{ + fe_status_t status; + uint16_t snr, signal; + uint32_t ber, uncorrected_blocks; + + do { + ioctl(fe_fd, FE_READ_STATUS, &status); + ioctl(fe_fd, FE_READ_SIGNAL_STRENGTH, &signal); + ioctl(fe_fd, FE_READ_SNR, &snr); + ioctl(fe_fd, FE_READ_BER, &ber); + ioctl(fe_fd, FE_READ_UNCORRECTED_BLOCKS, &uncorrected_blocks); + + 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"); + usleep(1000000); + } while (1); + + return 0; +} + + +static +int do_mon(unsigned int adapter, unsigned int frontend) +{ + char fedev[128]; + int fefd; + int result; + struct dvb_frontend_info fe_info; + + snprintf(fedev, sizeof(fedev), FRONTENDDEVICE, adapter, frontend); + printf("using '%s'\n", fedev); + + if ((fefd = open(fedev, O_RDONLY | 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; + } + + printf("FE: %s (%s)\n", fe_info.name, fe_info.type == FE_QPSK ? "SAT" : + fe_info.type == FE_QAM ? "CABLE": "TERRESTRIAL"); + + check_frontend (fefd); + + close(fefd); + + return result; +} + +int main(int argc, char *argv[]) +{ + unsigned int adapter = 0, frontend = 0; + int opt; + + while ((opt = getopt(argc, argv, "hlrn:a:f:d:")) != -1) { + switch (opt) + { + case '?': + case 'h': + default: + usage(); + case 'a': + adapter = strtoul(optarg, NULL, 0); + break; + case 'f': + frontend = strtoul(optarg, NULL, 0); + } + } + + do_mon(adapter, frontend); + + return FALSE; +} + diff --git a/util/szap/szap.c b/util/szap/szap.c new file mode 100644 index 0000000..581c970 --- /dev/null +++ b/util/szap/szap.c @@ -0,0 +1,560 @@ +/* szap -- simple zapping tool for the Linux DVB API + * + * szap operates on VDR (http://www.cadsoft.de/people/kls/vdr/index.htm) + * satellite channel lists (e.g. from http://www.dxandy.de/cgi-bin/dvbchan.pl). + * szap assumes you have a "Universal LNB" (i.e. with LOFs 9750/10600 MHz). + * + * Compilation: `gcc -Wall -I../../ost/include -O2 szap.c -o szap` + * or, if your DVB driver is in the kernel source tree: + * `gcc -Wall -DDVB_IN_KERNEL -O2 szap.c -o szap` + * + * Copyright (C) 2001 Johannes Stezenbach (js@convergence.de) + * for convergence integrated media + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + +#include <stdio.h> +#include <stdlib.h> +#include <limits.h> +#include <string.h> +#include <errno.h> +#include <sys/ioctl.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/poll.h> +#include <fcntl.h> +#include <time.h> +#include <unistd.h> + +#include <stdint.h> +#include <sys/time.h> + +#include <linux/dvb/frontend.h> +#include <linux/dvb/dmx.h> +#include "lnb.h" + +#ifndef TRUE +#define TRUE (1==1) +#endif +#ifndef FALSE +#define FALSE (1==0) +#endif + +/* location of channel list file */ +#define CHANNEL_FILE "channels.conf" + +/* one line of the VDR channel file has the following format: + * ^name:frequency_MHz:polarization:sat_no:symbolrate:vpid:apid:?:service_id$ + */ + + +#define FRONTENDDEVICE "/dev/dvb/adapter%d/frontend%d" +#define DEMUXDEVICE "/dev/dvb/adapter%d/demux%d" + +static struct lnb_types_st lnb_type; + +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" + " -x : exit after tuning\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" + " or -n numbers for zapping\n"; + +static int set_demux(int dmxfd, int pid, int audio, int dvr) +{ + struct dmx_pes_filter_params pesfilter; + + if (pid <= 0 || pid >= 0x1fff) /* ignore this pid to allow radio services */ + return TRUE; + + 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 = audio ? DMX_PES_AUDIO : DMX_PES_VIDEO; + 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 FALSE; + } + + return TRUE; +} + + +struct diseqc_cmd { + 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"); +} + + + + +/* digital satellite equipment control, + * specification is available from http://www.eutelsat.com/ + */ +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 }; + + /* param: high nibble: reset bits, low nibble set bits, + * bits are: option, position, polarizaion, 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 / 4) % 2 ? SEC_MINI_B : SEC_MINI_A); + + 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; +} + + +static +int check_frontend (int fe_fd, int 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; + + 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 (exit_after_tuning && ((status & FE_HAS_LOCK) || (++timeout >= 10))) + break; + + usleep(1000000); + } while (1); + + return 0; +} + + +static +int zap_to(unsigned int adapter, unsigned int frontend, unsigned int demux, + unsigned int sat_no, unsigned int freq, unsigned int pol, + unsigned int sr, unsigned int vpid, unsigned int apid, int dvr) +{ + char fedev[128], dmxdev[128]; + static int fefd, videofd, audiofd; + 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); + 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 ((videofd = open(dmxdev, O_RDWR)) < 0) { + perror("opening video demux failed"); + close(fefd); + return FALSE; + } + + if ((audiofd = open(dmxdev, O_RDWR)) < 0) { + perror("opening audio demux failed"); + close(videofd); + 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_demux(videofd, vpid, 0, dvr)) + if (set_demux(audiofd, apid, 1, dvr)) + result = TRUE; + + check_frontend (fefd, dvr); + + if (!interactive) { + close(audiofd); + close(videofd); + close(fefd); + } + + return result; +} + + +static int read_channels(const char *filename, int list_channels, + uint32_t chan_no, const char *chan_name, + unsigned int adapter, unsigned int frontend, + unsigned int demux, int dvr) +{ + FILE *cfp; + char buf[4096]; + char inp[256]; + char *field, *tmp, *p; + unsigned int line; + unsigned int freq, pol, sat_no, sr, vpid, apid; + int ret; + +again: + 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 (!(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 (!(field = strsep(&tmp, ":"))) + goto syntax_err; + + apid = strtoul(field, NULL, 0); + + printf("sat %u, frequency = %u MHz %c, symbolrate %u, " + "vpid = 0x%04x, apid = 0x%04x\n", + sat_no, freq, pol ? 'V' : 'H', sr, vpid, apid); + + fclose(cfp); + + ret = zap_to(adapter, frontend, demux, + sat_no, freq * 1000, pol, sr, vpid, apid, dvr); + 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; +} + + +void +bad_usage(char *pname, int prlnb) +{ +int i; +struct lnb_types_st *lnbp; +char **cp; + + if (!prlnb) { + fprintf (stderr, usage_str, pname); + } else { + i = 0; + fprintf(stderr, "-l <lnb-type> or -l low[,high[,switch]] in Mhz\nwhere <lnb-type> is:\n"); + while(NULL != (lnbp = lnb_enum(i))) { + fprintf (stderr, "%s\n", lnbp->name); + for (cp = lnbp->desc; *cp ; cp++) { + fprintf (stderr, " %s\n", *cp); + } + i++; + } + } +} + +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; + int opt, copt = 0; + + lnb_type = *lnb_enum(0); + while ((opt = getopt(argc, argv, "hqrn:a:f:d:c:l:xi")) != -1) { + switch (opt) + { + case '?': + case 'h': + default: + bad_usage(argv[0], 0); + 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 '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 '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; + } + strncpy(chanfile, home, sizeof(chanfile)); + strcat(chanfile, "/.szap/" CHANNEL_FILE); + } + + printf("reading channels from file '%s'\n", chanfile); + + if (!read_channels(chanfile, list_channels, chan_no, chan_name, + adapter, frontend, demux, dvr)) + return TRUE; + + return FALSE; +} + diff --git a/util/szap/tzap.c b/util/szap/tzap.c new file mode 100644 index 0000000..2527c23 --- /dev/null +++ b/util/szap/tzap.c @@ -0,0 +1,477 @@ +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/ioctl.h> +#include <unistd.h> +#include <stdlib.h> +#include <stdint.h> +#include <string.h> +#include <stdio.h> +#include <fcntl.h> +#include <ctype.h> +#include <errno.h> + +#include <linux/dvb/frontend.h> +#include <linux/dvb/dmx.h> + + +static char FRONTEND_DEV [80]; +static char DEMUX_DEV [80]; + +#define CHANNEL_FILE "/.tzap/channels.conf" + +#define ERROR(x...) \ + 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) + + +typedef struct { + char *name; + int value; +} Param; + +static const Param inversion_list [] = { + { "INVERSION_OFF", INVERSION_OFF }, + { "INVERSION_ON", INVERSION_ON }, + { "INVERSION_AUTO", INVERSION_AUTO } +}; + +static const Param bw_list [] = { + { "BANDWIDTH_6_MHZ", BANDWIDTH_6_MHZ }, + { "BANDWIDTH_7_MHZ", BANDWIDTH_7_MHZ }, + { "BANDWIDTH_8_MHZ", BANDWIDTH_8_MHZ } +}; + +static const Param fec_list [] = { + { "FEC_1_2", FEC_1_2 }, + { "FEC_2_3", FEC_2_3 }, + { "FEC_3_4", FEC_3_4 }, + { "FEC_4_5", FEC_4_5 }, + { "FEC_5_6", FEC_5_6 }, + { "FEC_6_7", FEC_6_7 }, + { "FEC_7_8", FEC_7_8 }, + { "FEC_8_9", FEC_8_9 }, + { "FEC_AUTO", FEC_AUTO }, + { "FEC_NONE", FEC_NONE } +}; + +static const Param guard_list [] = { + {"GUARD_INTERVAL_1_16", GUARD_INTERVAL_1_16}, + {"GUARD_INTERVAL_1_32", GUARD_INTERVAL_1_32}, + {"GUARD_INTERVAL_1_4", GUARD_INTERVAL_1_4}, + {"GUARD_INTERVAL_1_8", GUARD_INTERVAL_1_8} +}; + +static const Param hierarchy_list [] = { + { "HIERARCHY_1", HIERARCHY_1 }, + { "HIERARCHY_2", HIERARCHY_2 }, + { "HIERARCHY_4", HIERARCHY_4 }, + { "HIERARCHY_NONE", HIERARCHY_NONE } +}; + +static const Param constellation_list [] = { + { "QPSK", QPSK }, + { "QAM_128", QAM_128 }, + { "QAM_16", QAM_16 }, + { "QAM_256", QAM_256 }, + { "QAM_32", QAM_32 }, + { "QAM_64", QAM_64 } +}; + +static const Param transmissionmode_list [] = { + { "TRANSMISSION_MODE_2K", TRANSMISSION_MODE_2K }, + { "TRANSMISSION_MODE_8K", TRANSMISSION_MODE_8K }, +}; + +#define LIST_SIZE(x) sizeof(x)/sizeof(Param) + + +static +int parse_param (int fd, const Param * plist, int list_size, int *param) +{ + char c; + int character = 0; + int index = 0; + + while (1) { + if (read(fd, &c, 1) < 1) + return -1; /* EOF? */ + + if ((c == ':' || c == '\n') + && plist->name[character] == '\0') + break; + + while (toupper(c) != plist->name[character]) { + index++; + plist++; + if (index >= list_size) /* parse error, no valid */ + return -2; /* parameter name found */ + } + + character++; + } + + *param = plist->value; + + return 0; +} + + +static +int parse_int(int fd, int *val) +{ + char number[11]; /* 2^32 needs 10 digits... */ + int character = 0; + + while (1) { + if (read(fd, &number[character], 1) < 1) + return -1; /* EOF? */ + + if (number[character] == ':' || number[character] == '\n') { + number[character] = '\0'; + break; + } + + if (!isdigit(number[character])) + return -2; /* parse error, not a digit... */ + + character++; + + if (character > 10) /* overflow, number too big */ + return -3; /* to fit in 32 bit */ + }; + + *val = strtol(number, NULL, 10); + + return 0; +} + + +static +int find_channel(int fd, const char *channel) +{ + int character = 0; + + while (1) { + char c; + + if (read(fd, &c, 1) < 1) + return -1; /* EOF! */ + + if (c == ':' && channel[character] == '\0') + break; + + if (toupper(c) == toupper(channel[character])) + character++; + else + character = 0; + }; + + return 0; +} + + +static +int try_parse_int(int fd, int *val, const char *pname) +{ + int err; + + err = parse_int(fd, val); + + if (err) + ERROR("error while parsing %s (%s)", pname, + err == -1 ? "end of file" : + err == -2 ? "not a number" : "number too big"); + + return err; +} + + +static +int try_parse_param(int fd, const Param * plist, int list_size, int *param, + const char *pname) +{ + int err; + + err = parse_param(fd, plist, list_size, param); + + if (err) + ERROR("error while parsing %s (%s)", pname, + err == -1 ? "end of file" : "syntax error"); + + return err; +} + + +int parse(const char *fname, const char *channel, + struct dvb_frontend_parameters *frontend, int *vpid, int *apid) +{ + int fd; + int err; + + if ((fd = open(fname, O_RDONLY | O_NONBLOCK)) < 0) { + PERROR ("could not open file '%s'", fname); + perror (""); + return -1; + } + + if (find_channel(fd, channel) < 0) { + ERROR("could not find channel '%s' in channel list", channel); + return -2; + } + + if ((err = try_parse_int(fd, &frontend->frequency, "frequency"))) + return -3; + + if ((err = try_parse_param(fd, + inversion_list, LIST_SIZE(inversion_list), + (int *) &frontend->inversion, + "inversion"))) + return -4; + + if ((err = try_parse_param(fd, bw_list, LIST_SIZE(bw_list), + (int *) &frontend->u.ofdm.bandwidth, + "bandwidth"))) + return -5; + + if ((err = try_parse_param(fd, fec_list, LIST_SIZE(fec_list), + (int *) &frontend->u.ofdm.code_rate_HP, + "code_rate_HP"))) + return -6; + + if ((err = try_parse_param(fd, fec_list, LIST_SIZE(fec_list), + (int *) &frontend->u.ofdm.code_rate_LP, + "code_rate_LP"))) + return -7; + + if ((err = try_parse_param(fd, constellation_list, + LIST_SIZE(constellation_list), + (int *) &frontend->u.ofdm.constellation, + "constellation"))) + return -8; + + if ((err = try_parse_param(fd, transmissionmode_list, + LIST_SIZE(transmissionmode_list), + (int *) &frontend->u.ofdm. + transmission_mode, + "transmission_mode"))) + return -9; + + if ((err = try_parse_param(fd, guard_list, LIST_SIZE(guard_list), + (int *) &frontend->u.ofdm. + guard_interval, "guard_interval"))) + return -10; + + if ((err = try_parse_param(fd, hierarchy_list, + LIST_SIZE(hierarchy_list), + (int *) &frontend->u.ofdm. + hierarchy_information, + "hierarchy_information"))) + return -11; + + if ((err = try_parse_int(fd, vpid, "Video PID"))) + return -12; + + if ((err = try_parse_int(fd, apid, "Audio PID"))) + return -13; + + close(fd); + + return 0; +} + + +static +int set_pesfilter (int fd, int pid, dmx_pes_type_t type, int dvr) +{ + struct dmx_pes_filter_params pesfilter; + + if (pid <= 0 || pid >= 0x1fff) + return 0; + + pesfilter.pid = pid; + pesfilter.input = DMX_IN_FRONTEND; + pesfilter.output = dvr ? DMX_OUT_TS_TAP : DMX_OUT_DECODER; + pesfilter.pes_type = type; + pesfilter.flags = DMX_IMMEDIATE_START; + + if (ioctl(fd, DMX_SET_PES_FILTER, &pesfilter) < 0) { + PERROR ("ioctl(DMX_SET_PES_FILTER) for %s PID failed", + type == DMX_PES_AUDIO ? "Audio" : + type == DMX_PES_VIDEO ? "Video" : "??"); + return -1; + } + + return 0; +} + + +static +int setup_frontend (int fe_fd, struct dvb_frontend_parameters *frontend) +{ + struct dvb_frontend_info fe_info; + + if (ioctl(fe_fd, FE_GET_INFO, &fe_info) < 0) { + PERROR("ioctl FE_GET_INFO failed"); + return -1; + } + + if (fe_info.type != FE_OFDM) { + ERROR ("frontend device is not a OFDM (DVB-T) device"); + return -1; + } + + printf ("tuning to %i Hz\n", frontend->frequency); + + if (ioctl(fe_fd, FE_SET_FRONTEND, frontend) < 0) { + PERROR("ioctl FE_SET_FRONTEND failed"); + return -1; + } + + return 0; +} + + +static +int check_frontend (int fe_fd) +{ + fe_status_t status; + uint16_t snr, signal; + uint32_t ber, uncorrected_blocks; + + do { + ioctl(fe_fd, FE_READ_STATUS, &status); + ioctl(fe_fd, FE_READ_SIGNAL_STRENGTH, &signal); + ioctl(fe_fd, FE_READ_SNR, &snr); + ioctl(fe_fd, FE_READ_BER, &ber); + ioctl(fe_fd, FE_READ_UNCORRECTED_BLOCKS, &uncorrected_blocks); + + 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"); + + usleep(1000000); + + printf("\n"); + } while (1); + + return 0; +} + + +static const char *usage = "\nusage: %s [-a adapter_num] [-f frontend_id] [-d demux_id] [-c conf_file] [-r] <channel name>\n\n"; + + +int main(int argc, char **argv) +{ + struct dvb_frontend_parameters frontend_param; + char *homedir = getenv ("HOME"); + char *confname = NULL; + char *channel = NULL; + int adapter = 0, frontend = 0, demux = 0, dvr = 0; + int vpid, apid; + int frontend_fd, audio_fd, video_fd; + int opt; + + while ((opt = getopt(argc, argv, "hrn:a:f:d:c:")) != -1) { + switch (opt) { + case 'a': + adapter = strtoul(optarg, NULL, 0); + break; + case 'f': + frontend = strtoul(optarg, NULL, 0); + break; + case 'd': + demux = strtoul(optarg, NULL, 0); + break; + case 'r': + dvr = 1; + break; + case 'c': + confname = optarg; + break; + case '?': + case 'h': + default: + fprintf (stderr, usage, argv[0]); + return -1; + }; + } + + if (optind < argc) + channel = argv[optind]; + + if (!channel) { + fprintf (stderr, usage, argv[0]); + return -1; + } + + 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); + + printf ("using '%s' and '%s'\n", FRONTEND_DEV, DEMUX_DEV); + + if (!confname) + { + if (!homedir) + ERROR ("$HOME not set"); + confname = malloc (strlen(homedir) + strlen(CHANNEL_FILE) + 1); + memcpy (confname, homedir, strlen(homedir)); + memcpy (confname + strlen(homedir), CHANNEL_FILE, + strlen(CHANNEL_FILE) + 1); + } + + memset(&frontend_param, 0, sizeof(struct dvb_frontend_parameters)); + + if (parse (confname, channel, &frontend_param, &vpid, &apid)) + return -1; + + if ((frontend_fd = open(FRONTEND_DEV, O_RDWR)) < 0) { + PERROR ("failed opening '%s'", FRONTEND_DEV); + return -1; + } + + if (setup_frontend (frontend_fd, &frontend_param) < 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; + } + + if (set_pesfilter (audio_fd, apid, DMX_PES_AUDIO, dvr) < 0) + return -1; + + check_frontend (frontend_fd); + + close (audio_fd); + close (video_fd); + close (frontend_fd); + + return 0; +} + |