I am located in the UK using two LNBs with a 4 to 1 switch off a Nova DVB-S budget card. Using Myth 0.17 and cvs from a week ago I have been unable to get any signal from my second sat LNB into myth - setup scan and live tv only feed from first sat LNB. VDR happily receives from both sat so equipment is OK. The cause seems to be the following lines from line 243 in dvbdiseqc.cpp

  if (ioctl(fd_frontend, FE_DISEQC_SEND_BURST, SEC_MINI_A ) == -1)
  {
      ERRNO("FE_DISEQC_SEND_BURST failed");
      return false;
  }

The sending of this command follows the sending of the correct Diseqc command and causes my switch to revert to the A input. According to diseqc specs equipment should ignore backwards compatible bursts after valid diseqc command but mine certainly doesn't and it is a common type in the UK claiming Diseqc and mini-diseqc comptability. With this commented out Live Tv now works and I can see channels from both sats. Unfortunately it does not cause the setup scan to work - this appears to be a further problem where dvbdiseqc.cpp is being called from the scanning program with the diseqc type set to 0 - forgive me but my c++ isn't quite up to following where in the scanning software this is not being properly setup. With dvbdiseqc.cpp hard coded to type 4 scan seems work ok. I hope this helps those I have seen on lists saying diseqc is not working for them. I also noted another bug in DVBDiSEqC::ToneSwitch which seems to be expecting tuning.diseqc_port to be set to 1 or 2 rather than the 0 or 1 it is currently being set to. The attached patch corrects both of these issues for me.

--- mythtv/libs/libmythtv/dvbdiseqc.cpp	2005-01-23 22:45:30.000000000 +0000
+++ mythtv-cvs/libs/libmythtv/dvbdiseqc.cpp	2005-03-07 10:39:32.652308128 +0000
@@ -133,15 +133,16 @@
 
 bool DVBDiSEqC::ToneSwitch(dvb_tuning_t& tuning, bool reset, bool& havetuned)
 {
-    CHANNEL(QString("DiSEqC Tone Switch - Port %1/2").arg(tuning.diseqc_port));
+    CHANNEL(QString("DiSEqC Tone Switch - Port %1/2").arg(tuning.diseqc_port+1));
 
     if (prev_tuning.diseqc_port != tuning.diseqc_port || reset)
     {
-        if (tuning.diseqc_port > 2)
+        if (tuning.diseqc_port > 1)
             ERRNO("Tone Switches only supports two ports.");
 
         if (ioctl(fd_frontend, FE_DISEQC_SEND_BURST,
-            (tuning.diseqc_port == 1 ? SEC_MINI_A : SEC_MINI_B )) < 0)
+            (tuning.diseqc_port == 0 ? SEC_MINI_A : SEC_MINI_B )) < 0)
         {
             ERRNO("Setting Tone Switch failed.");
             return false;
@@ -239,7 +240,7 @@
             usleep(DISEQC_SHORT_WAIT);
         }
     }
-
+/*
     if (ioctl(fd_frontend, FE_DISEQC_SEND_BURST, SEC_MINI_A ) == -1) 
     {
         ERRNO("FE_DISEQC_SEND_BURST failed");
@@ -247,7 +248,7 @@
     }
 
     usleep(DISEQC_SHORT_WAIT);
-
+*/
     if (ioctl(fd_frontend, FE_SET_TONE, tuning.tone) == -1) 
     {
         ERRNO("FE_SET_TONE failed");
@@ -308,13 +309,13 @@
         }
         usleep(DISEQC_SHORT_WAIT); 
     }
-
+/*
     if (ioctl(fd_frontend, FE_DISEQC_SEND_BURST, SEC_MINI_A ) == -1) 
     {
         ERRNO("FE_DISEQC_SEND_BURST failed");
         return false;
     }
-
+*/
     return true;
 }
 
_______________________________________________
mythtv-dev mailing list
[email protected]
http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev

Reply via email to