Signal strength

Ask fellow members about Ceton's infiniTV tuners here.
Forum rules
Ceton no longer participate in this forum. Official support may still be handled via the Ceton Ticket system.
Post Reply
KarlBeem

Posts: 10
Joined: Mon Aug 27, 2012 1:05 am
Location:

HTPC Specs: Show details

Signal strength

#1

Post by KarlBeem » Tue Dec 08, 2015 12:29 am

Is there a way to measure the signal strength of an eth 6?

cwinfield

Posts: 557
Joined: Tue Feb 12, 2013 1:14 am
Location: Monroe, NC

HTPC Specs: Show details

#2

Post by cwinfield » Tue Dec 08, 2015 1:22 am

AllCetonSignals. You need to have internet explorer run it. save as .hta extension. copy all the text below in a notepad and change file to a .hta from txt. You need to turn on file extensions on in your folder properties.

Code: Select all

<html>
    <head>
    </head>
    <body>

    <script type="text/vbscript">
    '
    ' -----------------------------------------------------------------------------------------------------------------
    '  AllCetonSignals.hta
    '  Script For Reading All Signal Level, SNR, and Frequency information for Ceton InfiniTV4 tuner.
    ' 
    '  Based on CetonSignals.hta script
    '  Author: User:WhatHappend from http://www.thegreenbutton.tv/forums/ , http://experts.windows.com
    '  01/15/13
    '
    '  History -
    '       01/15/13 - Improve measurement accuracy by adding more delay after tuning channel
    '       01/15/13 - First Version uploaded to http://experts.windows.com/frms/windows_entertainment_and_connected_home/f/115/t/103442.aspx
    ' -----------------------------------------------------------------------------------------------------------------
    '
    const BaseCetonUrl = "http://192.168.200.1"
    DIM CetonChannelXMLUrl
    CetonChannelXMLUrl = BaseCetonUrl & "/view_channel_map.cgi?page=0&xml=1"
    const MaxLenChanNums = 120

    '
    ' Progress bar class
    '
    Class ProgressBar
       Private m_PercentComplete
       Private m_CurrentStep
       Private m_ProgressBar
       Private m_Title
       Private m_Text
       Private m_StatusBarText

       'Initialize defaults
       Private Sub ProgessBar_Initialize
          m_PercentComplete = 0
          m_CurrentStep = 0
          m_Title = "Progress"
          m_Text = ""
       End Sub

       Public Function SetTitle(pTitle)
          m_Title = pTitle
       End Function

       Public Function SetText(pText)
          m_Text = pText
       End Function

       Public Function Update(percentComplete)
          m_PercentComplete = Int(percentComplete)
          UpdateProgressBar()
       End Function

       Public Function Show()
          Set m_ProgressBar = CreateObject("InternetExplorer.Application")
          'in code, the colon acts as a line feed
          m_ProgressBar.navigate2 "about:blank" : m_ProgressBar.width = 320 : m_ProgressBar.height = 40 : m_ProgressBar.toolbar = false : m_ProgressBar.menubar = false : m_ProgressBar.statusbar = false : m_ProgressBar.visible = True
          m_ProgressBar.document.write "<body Scroll=no style='margin:0px;padding:0px;'><div style='text-align:center;'><span name='PC' id='PC'>0</span></div>"
          m_ProgressBar.document.write "<div id='statusbar' name='statusbar' style='border:1px solid blue;line-height:10px;height:10px;color:blue;'></div>"
          m_ProgressBar.document.write "<div style='text-align:center'><span id='text' name='text'></span></div>"
          m_ProgressBar.document.focus()
       End Function

       Public Function Close()
          m_ProgressBar.quit
          Set m_ProgressBar = Nothing
       End Function

       Private Function UpdateProgressBar()
          If m_PercentComplete = 0 Then
             m_StatusBarText = ""
          End If
          For n = m_CurrentStep to m_PercentComplete - 1
             m_StatusBarText = m_StatusBarText & "|"
             m_ProgressBar.Document.GetElementById("statusbar").InnerHtml = m_StatusBarText
             m_ProgressBar.Document.title = n & "% Complete : " & m_Title
             m_ProgressBar.Document.GetElementById("PC").InnerHtml = n & "% Complete : " & m_Title
             'wscript.sleep 10
          Next
          m_ProgressBar.Document.GetElementById("statusbar").InnerHtml = m_StatusBarText
          m_ProgressBar.Document.title = m_PercentComplete & "% Complete : " & m_Title
          m_ProgressBar.Document.GetElementById("PC").InnerHtml = m_PercentComplete & "% Complete : " & m_Title
          m_ProgressBar.Document.GetElementById("text").InnerHtml = m_Text
          m_CurrentStep = m_PercentComplete
          m_ProgressBar.document.focus()
       End Function

    End Class
    '
    ' Channel Class 
    ' Holds the Channel's information
    '
    Class Channel
       Public CH_numbers
       Public frequency
       Public number   
       Public modulation

       Public Function Clone()
          Set Clone = New Channel
          Clone.CH_numbers = CH_numbers
          Clone.frequency = frequency
          Clone.number = number
          Clone.modulation = modulation
       End Function
    End Class

    '
    ' Class to keep track of all of the Channels found in line-up
    '
    Const NumMinMaxToTrack = 100
    Class ChannelList


       Public sizeOfAllFreqChannels

       Public AllFreqChannels()
       Public NumberOfChannels

       Public Sub Class_Initialize()

          NumberOfChannels = 0
       End Sub

       '
       '
       ' Add a Channel
       '
       Public Sub AddChannel( chan )
          Dim i,x,added
          chan.CH_numbers = CStr(chan.number)

          ' Make a Deep copies of Chan for the Smallest Freq and all Freq tracking
          Dim lowChan
          Set lowChan = chan.Clone()

          'Set AllFreqChannels(NumberOfChannels) = chan.Clone()  ' Save Deep Copy of Channel in All list
          NumberOfChannels = NumberOfChannels + 1

          added = False
          For i = 1 To sizeOfAllFreqChannels
             If lowChan.frequency = AllFreqChannels(i).frequency Then
                ' This Frequency already exists, add this channel number to the list
                ' cap channel number list len to MaxLenChanNums
                If Len(AllFreqChannels(i).CH_numbers) < MaxLenChanNums Then
                   AllFreqChannels(i).CH_numbers = AllFreqChannels(i).CH_numbers & ";" & lowChan.CH_numbers
                End If
                added = True
                Exit For
             ElseIf lowChan.frequency < AllFreqChannels(i).frequency Then
                ' Increment Count to indicate the new inserted frequency.
                sizeOfAllFreqChannels = sizeOfAllFreqChannels + 1
                ReDim Preserve AllFreqChannels(sizeOfAllFreqChannels)

                '  Shift all values to make room for new value
                For x = sizeOfAllFreqChannels to i + 1 Step -1
                   Set AllFreqChannels(x) = AllFreqChannels(x-1)
                Next

                Set AllFreqChannels(i) = lowChan
                added = True
                Exit For
             End If
          Next
          If Not added Then
             sizeOfAllFreqChannels = sizeOfAllFreqChannels + 1
             ReDim Preserve AllFreqChannels(sizeOfAllFreqChannels)
             Set AllFreqChannels(sizeOfAllFreqChannels) = lowChan
          End IF
          
       End Sub
    End Class

    '
    '   Retreive the Signal, SNR, & Frequency for the passed in channel#
    '
    Sub WriteFrequencyTable( IdleInstance, in_channel, channelList )
       Dim SNR, Signal, Frequency, intSNR
       Dim RegexObj
       Set RegexObj = New RegExp
        RegexObj.Global = True
       RegexObj.Pattern = "[^\d.\-]"
       Dim oHF , objHTTP
       Set objHTTP = CreateObject("Microsoft.XMLHTTP")
       objHTTP.open "POST", BaseCetonUrl & "/channel_request.cgi", False

       objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
       objHTTP.send "instance_id="&IdleInstance& Chr(38) & "channel=" & in_channel

       If objHTTP.Status = 200 Then
          ' This loop keeps checking the channel until the Ceton's returned channel == requested channel
          Do
             objHTTP.open "GET", BaseCetonUrl & "/get_var?i="&IdleInstance&"&s=cas&v=VirtualChannelNumber", False
             objHTTP.send
             Set oHF = CreateObject("HTMLFILE")
             oHF.write objHTTP.responseText
          Loop Until ( CInt(oHF.body.innerHTML) = CInt(in_channel) )
          
          objHTTP.open "GET", BaseCetonUrl & "/get_var?i="&IdleInstance&"&s=tuner&v=Frequency", False
          objHTTP.send
          Set oHF = CreateObject("HTMLFILE")
          oHF.write objHTTP.responseText
          Frequency = CStr(oHF.body.innerHTML)
          
          ' Delay before measuring the Signal level and SNR
          For yy = 1 To 3
             objHTTP.open "GET", BaseCetonUrl & "/get_var?i="&IdleInstance&"&s=tuner&v=Frequency", False
             objHTTP.send
             Set oHF = CreateObject("HTMLFILE")
             oHF.write objHTTP.responseText
          Next
          
          objHTTP.open "GET", BaseCetonUrl & "/get_var?i="&IdleInstance&"&s=diag&v=Signal_Level", False
          objHTTP.send
          Set oHF = CreateObject("HTMLFILE")
          oHF.write objHTTP.responseText
          Signal = CStr(oHF.body.innerHTML)
          If IsNumeric(RegexObj.Replace(Signal, "")) Then
             dblSignal = CDbl(RegexObj.Replace(Signal, ""))
          Else
             dblSignal = 0
          End If
          objHTTP.open "GET", BaseCetonUrl & "/get_var?i="&IdleInstance&"&s=diag&v=Signal_SNR", False
          objHTTP.send
          Set oHF = CreateObject("HTMLFILE")
          oHF.write objHTTP.responseText
          SNR = CStr(oHF.body.innerHTML)
          If IsNumeric(RegexObj.Replace(SNR, "")) Then
             dblSNR = CDbl(RegexObj.Replace(SNR, ""))
          Else
             dblSNR = 0
          End If
          

          If dblSNR < 32 Then
             SNRcolor = " bgcolor=#F00" 'Red
          ElseIf dblSNR < 35 Then
             SNRcolor = " bgcolor=#F0FF00" ' Yellow
          Else
             SNRcolor = ""
          End If

          If dblSignal < -15 Then
             Signalcolor = " bgcolor=#F00" 'Red
          ElseIf dblSignal < -5 Then
             Signalcolor = " bgcolor=#F0FF00" ' Yellow
          Else
             Signalcolor = ""
          End If

          document.write( "<tr><td"&Signalcolor&">" & Signal & "</td><td"&SNRcolor&">" & SNR & "</td><td>" & Frequency & "</td><td>"&channelList&"</td></tr>" )
        End If
       Set objHTTP = Nothing
    End Sub

    Private Function TestURL( ByVal strURL )     
         '// Testing a URL
        Dim oURL
       Set oURL = CreateObject("WinHttp.WinHttpRequest.5.1")
         
        On Error Resume Next
         
        With oURL
          .SetTimeouts 4000, 4000, 4000, 4000
            .Open "GET", strURL, False
            .Send
          if Err.Number = 0 then
             TestURL = (.Status = 200)
          Else
             TestURL = 0
          End IF
        End With
         
    End Function

    Set xmlDoc=CreateObject("Microsoft.XMLDOM")
    xmlDoc.async="false"
    If Not TestURL( CetonChannelXMLUrl ) Then
       document.write( "Error: Ceton Tuner not found at this URL: " + BaseCetonUrl )
    Else

       xmlDoc.load(CetonChannelXMLUrl)
       Dim objDocElem, strNode, strSubNode, xmlnn, xmlnv, xmlnc, xmldd, xmlfd, xmlfv, nodeName, nodeValue
       Dim SNR, Signal, Frequency
       Dim channel_list, chan
       Set channel_list = New ChannelList
       Dim i,z

       Set objDocElem=xmlDoc.documentElement

       Set y = objDocElem.childNodes

       Dim IdleInstance
       Dim oHF , objHTTP
       Set objHTTP = CreateObject("Microsoft.XMLHTTP")

       '
       ' Safety check, make sure one Ceton tuner instances is idle "STOPPED"
       '
       For IdleInstance= 0 to 3
          objHTTP.open "GET", BaseCetonUrl & "/get_var?i="&IdleInstance&"&s=av&v=TransportState", False
          objHTTP.send
          Set oHF = CreateObject("HTMLFILE")
          oHF.write objHTTP.responseText
          If oHF.body.innerHTML = "STOPPED"  Then
             Exit For
          End If
       Next
       If oHF.body.innerHTML <> "STOPPED" Then
          document.write( "Error: All Ceton tuner instances are busy!  Please retry when tuner is idle!")
       Else

          'Declare progressbar and percentage complete
          Dim pb
          Dim percentComplete
          Dim incr
          'Setup the initial progress bar
          Set pb = New ProgressBar
          percentComplete = 0.0
          pb.SetTitle("Step 1 of 3")
          pb.SetText("Parsing Channel Map..")
          pb.Show()

          For i=0 to y.length - 1
             If y(i).nodeType <> 3 Then
                if y(i).nodeName = "channel" Then
                   xmlnc = xmlnc + 1
                    
                   Set chan = New Channel
                   z=0
                   Do While z < y(i).childNodes.length
                      If y(i).childNodes(z).nodeType <> 3 Then

                         nodeName = y(i).childNodes(z).nodeName
                         nodeValue = y(i).childNodes(z).text
                         If nodeName = "frequency" Then
                            chan.frequency = CLng(nodeValue)
                         ElseIf nodeName = "number" Then
                            chan.number = CInt(nodeValue)
                         ElseIf nodeName = "modulation" Then
                            chan.modulation = CStr(nodeValue)
                         End If

                      End If
                   z=z+1
                   Loop
                   ' Skip NTSC Channels as the Ceton can't tune these....
                   If InStr(chan.modulation, "QAM") > 0 Then
                      channel_list.AddChannel chan
                   End If
                End if
             End If
          Next

          document.write("<b>Information From Ceton Card at: "&BaseCetonUrl&"</b><br />")
          document.write("<b>Tuner Instance Used for measurement:"&IdleInstance&"</b><br />")
          document.write("<b>Number of Frequecies in Cable Card Map:"&channel_list.sizeOfAllFreqChannels&"</b><br />")
          document.write("Channel List count: " & xmlnc & "<br />")

          pb.SetTitle("Step 2 of 3")
          pb.SetText("Tuning All Frequencies ..")
          pb.Update(percentComplete)

          incr = 100.0/(channel_list.sizeOfAllFreqChannels)
          ' Output a Table that shows Signal Level, SNR and Frequency   
          document.write( "<table border=""5px solid"" cellpadding=""2""><caption>Frequency Table</caption><tr><th>Signal</th><th>SNR</th><th>Frequency</th><th>channel#;channel#;...</th></tr>")
          For i= 1 To channel_list.sizeOfAllFreqChannels
             percentComplete=percentComplete+incr
             pb.Update(percentComplete)
             WriteFrequencyTable IdleInstance, channel_list.AllFreqChannels(i).number, channel_list.AllFreqChannels(i).CH_numbers
          Next
          document.write("</table>")

          pb.SetTitle("Step 3 of 3")
          pb.SetText("Outputting Frequency to Channel Table..")
          pb.Update(percentComplete)   


          pb.SetText("Done")
          percentComplete=100
          pb.Update(percentComplete)
          pb.Close()
       End If
    End If
    </script>
    </body>
    </html>

KarlBeem

Posts: 10
Joined: Mon Aug 27, 2012 1:05 am
Location:

HTPC Specs: Show details

#3

Post by KarlBeem » Tue Dec 08, 2015 3:03 am

Ok, when I run it, I get

/ Error: Ceton Tuner not found at this URL: http://192.168.200.1

The tuner is actually at 192.168.0.7.

User avatar
Scallica

Posts: 2574
Joined: Mon Jun 06, 2011 7:09 pm
Location: USA!

HTPC Specs: Show details
5+ Yrs TGB Veteran Staff

#4

Post by Scallica » Tue Dec 08, 2015 5:21 pm

KarlBeem wrote:Ok, when I run it, I get

/ Error: Ceton Tuner not found at this URL: http://192.168.200.1

The tuner is actually at 192.168.0.7.
Change the IP address in the code provided ;)
HTPC Enthusiast / Forum Moderator - TGB.tv Code of Conduct

KarlBeem

Posts: 10
Joined: Mon Aug 27, 2012 1:05 am
Location:

HTPC Specs: Show details

#5

Post by KarlBeem » Wed Dec 09, 2015 10:19 pm

Thanks. For good old ESPN, I get the following.

signal SNR
4.5 dBmV 39.4 dB 471000 846;847

How are these values?

cwinfield

Posts: 557
Joined: Tue Feb 12, 2013 1:14 am
Location: Monroe, NC

HTPC Specs: Show details

#6

Post by cwinfield » Thu Dec 10, 2015 1:13 am

It's good, 4.5db is a little hot but within +/-7db that Ceton calls for, 39.4db SNR is well above the >35db Ceton also says is acceptable.

KarlBeem

Posts: 10
Joined: Mon Aug 27, 2012 1:05 am
Location:

HTPC Specs: Show details

#7

Post by KarlBeem » Thu Dec 10, 2015 1:31 am

cwinfield wrote:It's good, 4.5db is a little hot but within +/-7db that Ceton calls for, 39.4db SNR is well above the >35db Ceton also says is acceptable.
Interesting. WMC is frequently complaining about a weak signal or asking me to "Update Playready" which never updates.

cwinfield

Posts: 557
Joined: Tue Feb 12, 2013 1:14 am
Location: Monroe, NC

HTPC Specs: Show details

#8

Post by cwinfield » Thu Dec 10, 2015 1:46 am


grecoder

Posts: 5
Joined: Fri Feb 24, 2012 6:26 pm
Location:

HTPC Specs: Show details

#9

Post by grecoder » Thu Aug 25, 2016 5:44 pm

Sorry to bump an old topic but I'm having weak signal issues myself. I checked two different channels and I have:

Channel 851
Signal: -12.5 dbmv, SNR: 36.0 db

Channel 850
Signal: -13.9 dbmv, SNR: 34.9 db

So when the Comcast technician comes to my house, I need to tell him to do what? Adjust the signal so that it's closer to "0" ?

When I contact Ceton years ago about an issue on FIOS, the technician said the following:

To answer your questions regarding signal, SNR should be 32-37 and the signal level should be between -12 and +12 with 0 dBmV ideal. So the ideal number is 37 SNR with 0 signal. Something to keep in mind, you can have low SNR (32-34) and high signal strength (+5 / +10) and be okay. You can have high SNR (36-37) and have low signal strength (-5 / -10) and be okay. You just can't have both low SNR and low signal strength at the same time, and have a good viewing experience. So, to put it succinctly, you ultimately want a high SNR and a signal strength of "0"

grecoder

Posts: 5
Joined: Fri Feb 24, 2012 6:26 pm
Location:

HTPC Specs: Show details

#10

Post by grecoder » Sun Aug 28, 2016 12:05 pm

The Comcast technician came yesterday and replaced the Ideal 5 way splitter with an Extreme 3 way splitter. This boosted the signal closer to 0 from -11 (signal is around -2) and fixed the issue. Seems that Ideal is a crappy splitter. He said that Comcast did extensive testing and found Extreme to have the best quality. Anyway, I'm all set now.

Post Reply