[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 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