Testing reception quality: Difference between revisions
Jump to navigation
Jump to search
(→Why? When?: better description) |
(→Why? When?: femon -H info) |
||
Line 143: | Line 143: | ||
Can be good when pointing the antenna. |
Can be good when pointing the antenna. |
||
Recent femon versions have this functionnality built-in by using |
|||
femon -H |
|||
=== Script === |
=== Script === |
Revision as of 16:13, 4 February 2008
Testing all channels and get an average
Why? When?
Script that gets you all channels and averages everything
Can be good when doing major changes to the installation, like replacing cables or installing a masthead amplifier. Create a baseline, then compare.
Script
#!/usr/bin/perl -w # Original script from José Oliver Segura # From Hex to % for signal strength by Nicolas Will, with help from GT, Feb. 1, 2008 # License unknown.... # Make sure that the tzap and channels.conf locations are correct #use strict; my($tzap) = "/usr/bin/tzap"; my($tzapArgs) = "-r"; my(@channels); my(%channelsHz); my(%channelsFEC1); my(%channelsFEC2); my(%signalFreqAcum); my(%signalFreqCount); my(%berFreqAcum); my(%berFreqCount); my(%uncFreqAcum); my(%uncFreqCount); sub loadChannels() { my $file = $ENV{"HOME"} . "/.tzap/channels.conf"; open (CHANNELS,"< $file") or die $!; while (<CHANNELS>) { chomp; @_ = split (/:/,$_); my $channelName = $_[0]; $channelsHz{$channelName} = $_[1]; $channelsFEC1{$channelName} = $_[4]; $channelsFEC2{$channelName} = $_[5]; push(@channels,$channelName); } close CHANNELS; } &loadChannels(); print "Starting...\n"; my $channel; foreach $channel (@channels) { my $count = 0; my $freq = $channelsHz{$channel}; my $fec1 = $channelsFEC1{$channel}; my $fec2 = $channelsFEC2{$channel}; print "================================================================================"; print "\n"; print "Tunning channel $channel ($freq)\n"; my $zapPid = open ZAP, "$tzap $tzapArgs \"$channel\" 2>&1 |" or die $! . ": $tzap $tzapArgs \"$channel\""; while ( $count < 10 && defined( my $line = <ZAP> ) ) { chomp($line); if ($line =~ /FE_HAS_LOCK/) { #print "$line\n"; $count++; ## ## status 1f | signal a1ae | snr 0000 | ber 00000000 | unc 00000012 | FE_HAS_LOCK ## $line =~ /.+signal (....).+ber (........).+unc (........).+/; my $signal = hex $1; my $ber = hex $2; my $unc = hex $3; $signalFreqAcum{$freq} += $signal; $signalFreqCount{$freq}++; $berFreqAcum{$freq} += $ber; $berFreqCount{$freq}++; $uncFreqAcum{$freq} += $unc; $uncFreqCount{$freq}++; print join("\t","Signal: ".int($signal/65536*100)."%","BER ".$ber,"UNC ".$unc),"\n"; } else { print "$line\n"; } } close ZAP; print "\n"; } print "Summary statistics:\n"; print "Frequency\tSignal\tBer \tUnc\n"; print "=========\t======\t========\t========\n"; my $freq; foreach $freq (keys(%signalFreqAcum)) { print "$freq\t"; print int($signalFreqAcum{$freq}/$signalFreqCount{$freq}/65536*100)." %"; print "\t"; #printf "%08x",$berFreqAcum{$freq}/$berFreqCount{$freq}; print $berFreqAcum{$freq}/$berFreqCount{$freq}; print "\t"; printf "%08x",$uncFreqAcum{$freq}/$uncFreqCount{$freq}; print "\n"; }
Original author: José Oliver Segura
How?
Requirements: a channels.conf file, tzap, veryfy the locations of programs and files in the code.
Usage:
perl signaltest.pl
Sample output
================================================================================ Tunning channel TopUp Anytime3 (722166670) using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0' tuning to 722166670 Hz video pid 0x0000, audio pid 0x0000 Signal: 42% BER 2097151 UNC 0 Signal: 43% BER 0 UNC 0 Signal: 42% BER 240 UNC 0 Signal: 43% BER 1232 UNC 0 Signal: 42% BER 192 UNC 0 Signal: 43% BER 256 UNC 0 Signal: 43% BER 416 UNC 0 Signal: 43% BER 240 UNC 0 Signal: 43% BER 592 UNC 0 Signal: 43% BER 368 UNC 0 Summary statistics: Frequency Signal Ber Unc ========= ====== ======== ======== 713833330 38 % 209715 00000000 634000000 41 % 214722 00000000 658000000 41 % 209715 00000000 578000000 51 % 209715 00000000 546000000 46 % 209715 00000000 722166670 43 % 210289 00000000
Test a channel continuously
Why? When?
Script that tunes a channel and simply converts the Signal strength into a percentage in the tzap output.
Can be good when pointing the antenna.
Recent femon versions have this functionnality built-in by using
femon -H
Script
#!/usr/bin/env python import sys f = sys.stdin while True: l = f.readline().strip() fields = l.split(" | ") if len(fields) < 2: print l else: # Sig Strength sigStr = fields[1].split(" ")[1] sig = int(sigStr, 16) / float(int('ffff', 16)) fields[1] = "signal %.1f%%" % (sig * 100.0) # BER berStr = fields[3].split(" ")[1] ber = int(berStr, 16) fields[3] = "ber %08d" % (ber) print " | ".join(fields)
Original author: Matt Doran
How?
Requirements: a channels.conf file, tzap
Usage:
tzap channel | tzapfilter.py
Sample output
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0' tuning to 578000000 Hz video pid 0x0000, audio pid 0x0000 status 1f | signal 51.0% | snr 0000 | ber 02097151 | unc 00000000 | FE_HAS_LOCK status 1f | signal 51.1% | snr 0000 | ber 00000000 | unc 0000000f | FE_HAS_LOCK status 1f | signal 51.1% | snr 0000 | ber 00000000 | unc 00000000 | FE_HAS_LOCK status 1f | signal 51.1% | snr 0000 | ber 00000000 | unc 00000000 | FE_HAS_LOCK status 1f | signal 51.0% | snr 0000 | ber 00000000 | unc 00000000 | FE_HAS_LOCK status 1f | signal 51.0% | snr 0000 | ber 00000000 | unc 00000000 | FE_HAS_LOCK status 1f | signal 51.0% | snr 0000 | ber 00000000 | unc 00000000 | FE_HAS_LOCK status 1f | signal 51.1% | snr 0000 | ber 00000000 | unc 00000000 | FE_HAS_LOCK status 1f | signal 51.1% | snr 0000 | ber 00000000 | unc 00000000 | FE_HAS_LOCK status 1f | signal 51.1% | snr 0000 | ber 00000000 | unc 00000000 | FE_HAS_LOCK