[mythtv] Current SVN DVB-S zapping problems (diseqc?)
Yeasah Pell
yeasah at schwide.com
Thu Aug 31 07:35:10 UTC 2006
Simeon Simeonov wrote:
> For completeness: I was able to resolve my diseqc
> problem by two things:
>
> - delete the SetTone(false) from
> DiSEqCDevTree::Execute in diseqc.cpp and I have no
> idea why but there could be flaky thing for my type of
> cards (pure speculation on my side);
>
That one is really interesting to be sure. You're supposed to turn off
tone before doing diseqc (if it's on), to give a silence period between
the continuous tone and the diseqc tone modulation. (Some cards/drivers
do this automatically though) If you are using a universal LNB and the
last tuning you did was for the high band, the tone will indeed be on at
that time, so by not turning it off you're violating the diseqc spec.
But hey, if it works. Maybe you should turn the tone *on* there instead
of taking the line out, to make it consistent.
> - force resending the diseqc commands during retune by
> inserting diseqc_tree->Reset() before
> diseqc_tree->Execute() in dvbchannel.cpp
>
When you say "retune", you mean the single rotor-completion retune, or
some other retune mechanism you've added?
> Retuning by default does two things: sets the correct
> tunning voltage if it was overwritten for the rotor
> and sets once again the tone for tone controlled LNBs.
> It looks like for my card it is important to set the
> voltage in order to tune. So if my tunning voltage is
> 18 volts then by default it will not be set a second
> time. By forcing setting the voltage each time I had
> partial success when switching from one source to
>
Actually it should change the voltage back whether you call Reset() or
not -- the first thing Execute() does is call ApplyVoltage, which goes
and gets the current desired voltage (once the rotor is deemed complete
that will go back to whatever value it was before it was overridden to
18V), and calls SetVoltage, which checks to see if that voltage is in
fact different from the last voltage command that was sent, and sends it
if it's different. It's possible that there's a bug in there of course,
but I've never had a problem. It should be easy enough to tell from the
logs if it's doing the final voltage change correctly or not without
Reset(), it logs every time it changes the voltage.
It always sets the tone at the very end of every Execute() call as well
(for universal LNBs) -- it doesn't bother to figure out if it's already
in the desired state. So Reset() wouldn't affect the tone either.
So I think (unless something's amiss) that the only thing calling
Reset() changes in the context of a rotor completion retune is that the
diseqc commands get resent.
> another. But by repeating the whole diseqc sequence I
> had no problems switching between sources. My guess is
> the since I have a switch behind a rotor first the
> rotor command is sent and it starts rotating. Perhaps
> this generates some noise in the line and that is why
> the switch command that is sent at that time sometimes
> does not succeed.
>
But also, since you removed the initial tone off command, the second
diseqc command sequence is guaranteed to be surrounded by tone (for high
band frequencies, anyway), whereas the first command might not be. It
certainly seems strange, but it's possible that your setup needs to have
the tone on before diseqc in order for it to work, and maybe *that's*
what repeating the diseqc commands accomplishes.
I guess if switching is less reliable for low band transports, that's
good evidence toward that theory.
Thanks for the report!
-y
More information about the mythtv-dev
mailing list