[linux-dvb] More on the cx24123
Garnet MacPhee
garnet at signalpeak.net
Fri Apr 7 16:47:02 CEST 2006
I have a Stab Rotor Sat HH90 dish positioner that uses the DiSEqC 1.2 protcol. My receiver card is a
Kworld DVB-S 100 with the cx24123 demodulator. Is it possible to send DiSEqC commands to position
the dish with V4l/DVB as it now stands? Or will support for DiSEqC dish positioning be written soon?
In checking the web, I have not found any references to dish positioning with a cx24123, or any
references to dish positioning in the apps I have installed (mplayer, kaffeine, xawtv).
I am running Slackware 10.2 with Kernel 2.6.17-rc1 and Yeasah Pell's latest cx24123.patch applied.
Thanks, Garnet
Yeasah Pell wrote:
> I took a closer look at this, and I believe I have found the problem.
> The cx24123_send_diseqc_msg() function did not wait for the busy bit to
> be cleared before sending the message, only after. That behavior makes
> some intiutive sense, since the driver is the only one that should ever
> be sending messages through the card, but experiments show that
> nevertheless the diseqc queue is sometimes marked as busy at the time
> the diseqc command is sent, and previously the driver would just blast
> the message through anyway, and it would presumably be lost. Some other
> condition must cause the queue to become busy -- it looks like changing
> the LNB voltage or tone status might do this. This is certainly why
> adding extra delay made my positioner more reliable -- I assume it also
> applied to switches, but I must have not noticed for some reason.
>
> I've revised the patch to have the driver wait for the busy bit both
> before and after sending a disqec message.
>
> Yeasah Pell wrote:
>
>> From what I've seen, some DiSEqC switches can be *really* picky, and
>> I've seen lots of reports of switches working fine on one card but not
>> working at all on another (or working unreliably) I can't offer any
>> more detail or explanation than that though -- just my observation of
>> reports online.
>>
>> My understanding is that the main difference between DiSEqC 1.x and
>> 2.0 is that 2.0 is bidirectional, which this card does seem to
>> support, but this driver doesn't. But that should just mean you won't
>> get status back from the devices -- the control aspect ought to still
>> work fine. You wouldn't get status back unless the disqec commands
>> were set to request it anyway, which the software you are using
>> probably isn't doing.
>>
>> I can confirm that on my DVB-S 100, with either my patch or vadim's
>> original diseqc patch, I am able to control a 4 port generic diseqc
>> switch which claims to be "1.0/2.0" compliant, as well as a dish
>> positioner.
>>
>> One thing you might try is enabling debug messages in the cx24123
>> module (i.e. by putting a line saying "options cx24123 debug=1" in
>> /etc/modprobe.conf and reloading the modules or rebooting), that way
>> you should see confirmation messages in dmesg of the diseqc messages
>> being sent. That will at least confirm that 1) you are definitely
>> loading the patched driver and 2) diseqc commands are in fact being
>> issued to the card. You should see some lines including the text
>> "cx24123_send_diseqc_msg", and hopefully no error indications.
>>
>> The only other thing I would note is that in order to get my
>> positioner to accept disqec commands reliably I had to increase the
>> delay between the tone shutoff/voltage change and the diseqc command
>> being sent in the software I use. I didn't have that problem with the
>> switch, but I certainly would put that sort of timing issue high up on
>> the list of suspected causes -- this card might take longer than
>> normal for its LNB voltage to stabilize, or to actually stop sending
>> the tone.
>>
>> The popular timing seems to be to wait 15 msec, I upped that to 100
>> msec to get it to work with my positioner. It probably doesn't need
>> that much of an increase, that's just what I tried first, and it
>> doesn't really add a significant amount of time to the total command
>> sequence from a user perspective. I was using other software, but if
>> you want to try the change in dvbscan, change the first msleep(15) in
>> the diseqc_send_msg function in diseqc.c to msleep(100), and recompile
>> -- in fact you could try lengthening all the delays in that function,
>> it certainly can't hurt to wait longer on any of those steps (apart
>> from making the command sequence take longer)
>>
>> If you find that adding delays helps, please let us know, as it means
>> we should probably put some delays into the driver ioctls.
>>
>> Todd wrote:
>>
>>> I applied the your attached "cx24123.patch" to the 2.6.16.1 Kernel
>>> (it "took" just fine). I still can't get the DiSEqC functionality
>>> to work. I am using dvbscan from here:
>>> http://www.phobos.ca/dvb/
>>> ...on some DishPro switches (supposedly DiSEqC 2.0 switches). It
>>> works fine with my "Sky2PC/SkyStar 2 DVB-S" card, but not this kworld
>>> card. (Same tools, same commands; literally cut and pasted between
>>> SSH windows...even switch cabling into switch)
>>>
>>> Is this patch dated?...is there a new one? Does the kworld card
>>> support DiSEqC 2.0? (the marketing hype claims 2.x compatibility:
>>> http://www.kworld.com.tw/en/product/dvb-s/001/dvb-s100.htm )
>>>
>>> Thanks in advance,
>>> Todd
>>
>>
>>
>>
>> _______________________________________________
>> linux-dvb mailing list
>> linux-dvb at linuxtv.org
>> http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
More information about the linux-dvb
mailing list