Hi, blindscan is a tool able to find all parameters of a DVB-S signal (freq, pol, spectral inversion, symbol rate, fec, pids), with zero prior information (only frequency range and symbol rate range). And it's fast! For example, let's check frequencies 10950-11200 on Eutelsat W3A (7E) for SCPC feeds (at 2004/08/01T12:46:00+0200): (olympics games are coming! :-)) ------ 10974 V + 6672 7/8 (10971+3) FOUND! ------ 10983 V + 6672 7/8 (10980+2) FOUND! ------ 10992 V + 6672 7/8 (10989+2) FOUND! ------ 11040 V + 6672 7/8 (11037+2) FOUND! ------ 11049 V + 6672 7/8 (11046+3) FOUND! ------ 11094 V + 6672 7/8 (11091+2) FOUND! ------ 11103 V + 6672 7/8 (11100+2) FOUND! ------ 11130 V + 5703 3/4 (11127+3) FOUND! ------ 11139 V + 6117 3/4 (11135+3) FOUND! ------ 10956 H + 6672 7/8 (10953+3) FOUND! ------ 10974 H + 6672 7/8 (10971+3) FOUND! ------ 11019 H + 6672 7/8 (11016+2) FOUND! ------ 11048 H + 6672 7/8 (11046+2) FOUND! ------ 11057 H + 6680 7/8 (11054+2) FOUND! ------ 11159 H - 5641 3/4 (11156+2) FOUND! 500MHz searched and 15 signals found in only 68 seconds (auto pids was disabled in this test) Note the variety of the parameters (including one spectral inverted signal). Another example, find all MCPC transponders on hotbird: (results not pasted for brevity) 4100MHz searched and 82 signals found in only 55 seconds (!), that is 74MHz/s and 0.67 s/signal (*without* using any builtin or received table of transponders) Amazing, but what about rescanning W3A with auto pids on? (pasted only one transponder) ------ 11048 V + 6672 7/8 (11045+2) FOUND! +------------+------------+------------+ | pid | clear Mb/s | encr. Mb/s | +------------+------------+------------+ |0000 ( 0) | 0.007 | | |0001 ( 1) | 0.001 | | |0010 ( 16) | 0.001 | | |0011 ( 17) | 0.001 | | |0012 ( 18) | 0.001 | | |0014 ( 20) | 0.001 | | |0020 ( 32) | 0.007 | | |0200 ( 512) | | 9.874 | |1010 (4112) | | 0.424 | |1020 (4128) | | 0.423 | |1fc0 (8128) | | 0.001 | |1ffe (8190) | | 0.046 | +------------+------------+------------+ | TOTAL | 0.021 | 10.769 | +------------+------------+------------+ we can see that there is a high quality video pid at 512 and two audio pids at 4112 and 4128; there are encrypted, though. Searching all 8192 pids in a transponder takes about one second (no dependency on number of active pids or bit rate), but if you're only interested in high bandwith pids (video and audio) one tenth of a second is enough. Now, how does it work? What do you need? My setup is Skystar2 2.3p with mt312 frontend (vp310, exactly) Requirements: - auto symbol rate ability in the hardware (depends on the frontend) - auto symbol rate ability in the driver (had to debug/improve mt312.c) if not, you have to know the symbol rate with a good precision - frequency offset ability in the hardware (depends on the frontend) - frequency offset ability in the driver (had to improve mt312.c) - frequency offset ability in the DVB API (had to create new ioctl) if not, the frequency fine tuning is not available and the algorithm has to be changed to explore nearby frequencies (at some cost of speed) - auto FEC/inversion (frontends typically have this) if not, you have to specify them manually - full bandwidth ability (pid 8192) in the hardware (depends on demultiplexer, skystar2 has it) - full bandwidth ability (pid 8192) in the driver (skystar2.c has it) if not, auto pid finding is not available In conclusion, I attach the code of the tool and the patch I applied to mt312.c and frontend.h (patch for DVB as in kernel 2.6.7). The patch has a few small improvements easily acceptable for inclusion, but there are two issues: 1) added a new ioctl (as other frontends may support the same functionality, I don't think it should be very controversial) 2) brutally hacked the symbol_rate parameter; I use low values (0-0xfff, well below symbol_rate_min) to ask for auto symbol rate; I don't see an easy and elegant way to achieve abstraction from hardware (this is very mt312 specific) without sacrifying functionality (such as multi frequency ranges) or seriously extending the API (set min and max symbol rate separately, at minimum). All the parameters are hard coded ATM. Watch out for the 10750000 oscillator, you may want 10600000 there (for a universal LNB). This is all under GPL. Future plans: avoid patches, parse options, documentation, integrate the pid finder with some existing table parser to group pids belonging to the same program and detect anomalies (such as wrong info from the broadcaster). Comments, suggestions, successes, failures, ideas kindly welcome. Have fun. -- Roberto Ragusa mail at robertoragusa.it
Attachment:
frontend.h.diff
Description: Binary data
Attachment:
mt312.c.diff
Description: Binary data
Attachment:
blindscan.c
Description: Binary data