[V4L-DVB] Add support for vendor specific DiSEqC switch "MAXIMUM DiSEqC 4/1 switch"

Hans Petter Selasky hselasky at c2i.net
Wed Mar 16 08:14:02 UTC 2011


On Tuesday 15 March 2011 23:19:02 handygewinnspiel at gmx.de wrote:
> Hi Hans Petter,
> 
> thank you for the patch, but i do have severe problems with it..
> 

Hi!

> First of all, i have to explain that i dont have any access to sat
> equipment at all - so i've to rely on understanding whats going on in even
> small patches or pieces of w_scan as good as i can. What i don't
> understand, i will not apply.

Probably the patches needs to be applied by hand.

> I cannot test anything sat related, i use terrestric and cable only.


> I was trying to translate your settings for vdr diseqc.conf into human
> readable things.. <snip>
> LNB.A 11700 V  9750 t F W45 v W15 W45 F W45 v W15 W45 t W45
> </snap>

The switch works like this that when the power is toggled, LNB.A is selected 
by default.

> define command chain for 'LNB.A' && frequencies below 11700MHz (=lowband)
> polarization vertical as follows
> 
>   1) '9750'   use LNB LO 9750MHz   // OK, translate lowband
> 10700MHz..11700MHz to 950MHz..1950MHz) 2) 't'      22kHz tone off       //
> this will select lowband on a multiband LNB. correct. 3) 'F'      lnb
> voltage off      // why switching *off*, if we want to program the LNB?
> wrong. 4) 'W45'    wait 45msec          //
>   5) 'v'      lnb voltage 13volts  // vertival = 13V, correct.
>   6) 'W15'    wait 15msec          // hmm..
>   7) 'W45'    wait 45msec          // ? wait again? and 45msec? 15 should
> be enough by spec. 8) 'F'      lnb voltage off      // why again switching
> LNB *off*? 9) 'W45'    wait 45msec          // wait again
>  10) 'v'      lnb voltage 13volts  // vertival = 13V, correct. But that was
> set before..? I'm confused. You lost me here completely.. 11) 'W15'   
> wait 15msec          // hmm..
>  12) 'W45'    wait 45msec          // ? wait again?

These commands where just a textual dump from the w_scan patches. I did not 
optimise anything. It is critical that the delay is in the range 45-50ms, else 
the programming does not work.

>  13) 't'      22kHz tone off       // if we hadnt switch off the LNB, we
> wouldnt have to set it again to low band. 14) 'W45'    wait 45msec
> 
> I cannot find any diseqc switch related command here; so that means
> something is intrinsic wrong on this line. As soon as a diseqc switch is
> inside your equipment, it *has* to be controlled *every time* you change
> satellite, low/high band or polarization. And it should be a 0x2X command
> if i read the diseqc spec.

That is the issue. The switch implements the diseqc signalling, but not the 
protocol. I did a complete protocol scan, testing all commands, and it only 
responded to 0x26 and 0x27.

> If i compare to w_scan's patch it does..
> 
>   2)          22kHz tone off tone off
>   3)          lnb voltage off
>   4)          wait 45msec
>   5)          lnb voltage 13volts
>   6)          wait 15msec
>   7)          wait 45msec          // that doesnt make sense to me.

Right, this can be optimised.

>   8)          lnb voltage off
>   9)          wait 45msec
>  10)          lnb voltage 13volts
>  11)          wait 15msec
>  12)          wait 45msec
>  13)          22kHz tone off
>  14)          <missing>            // the wait 45msec is missing compared
> to above.
> 
> If i compare to the other switch positions, i can find two diseqc commands:
> 
> MASTER_CMD_NO_RESPONSE, ADDR_ANY_LNB, 0x26, 0x00, 0x00, 0x00 // 0x26 ->
> Select Satellite position B (or position D) MASTER_CMD_NO_RESPONSE,
> ADDR_ANY_LNB, 0x27, 0x00, 0x00, 0x00 // 0x27 -> Select Switch Option B
> (e.g. positions C/D)
> 
> But what i'm actually missing is switching back to 'Option A', once you
> switched to 'Option B'; in the same way i miss selecting position A/B:
> 
> MASTER_CMD_NO_RESPONSE, ADDR_ANY_LNB, 0x22, 0x00, 0x00, 0x00 // 0x22 ->
> Select Satellite position A (or position C) MASTER_CMD_NO_RESPONSE,
> ADDR_ANY_LNB, 0x23, 0x00, 0x00, 0x00 // 0x23 -> Select Switch Option A
> (e.g. positions A/B)

The switch does not support these commands :-( Tested this pretty hard.

> For me it looks like, that you try to circumvent in a wrong way using the
> missing diseqc commands. If (only if..) i understand your coding
> correctly, your switch looks like a 2x2 matrix. The first one selecting
> A/B vs C/D, the second choosing the first or second of those preselected.
> 
> >From a more general point of view..
> 
> - function name 'setup_kjaerulff1_switch' << i dislike naming which is not
> self explaining. Naming should be consequently english. - a new command
> line switch. I tend to remove command line switches rather than adding new
> ones. Less is more. And even if a new is really necessary it should be '-D
> Nx', with x a new character and N = 0..3 - the patch doesnt include the
> new command line switch in the man page - function setup_switch should
> handle this new kind of switch, but setup_kjaerulff1_switch should not be
> called directly. - the '0x26' and '0x27' should use their already defined
> macros: CMD_SET_POS_B and CMD_SET_SOB. Using this macros already gives me
> hint, that you need CMD_SET_POS_A and CMD_SET_SOA also if you need the
> others.

Ok, should I generate a new patch for this? I'm not sure what class of switch 
I've got. Do you recognize the command set used?

> at this point, i think i cannot integrate your current patch as it is.
> Too many open questions, no datasheet and i cannot figure out by myself.

Which sources must I generate a patch against?

> If you could find out and answer the open questions, i would look again at
> this topic.
> 
> Thanks a lot for forwarding @ Juergen.
> 

--HPS


More information about the freebsd-multimedia mailing list