[linux-dvb] Lost lock problems over extended periods of time

Andrew de Quincey adq_dvb at lidskialf.net
Wed Jun 8 18:26:10 CEST 2005


It seems I only need to set the tone when it loses lock. Here is my current 
hack:

diff -a -u -r1.96 dvb_frontend.c
--- dvb_frontend.c      17 Nov 2004 14:30:33 -0000      1.96
+++ dvb_frontend.c      8 Jun 2005 15:22:15 -0000
@@ -507,9 +507,22 @@
                        else {
                                /* if we _WERE_ tuned, but now don't have a 
lock,
                                 * need to zigzag */
-                               fe->state = FESTATE_ZIGZAG_FAST;
-                               fe->started_auto_step = fe->auto_step;
-                               check_wrapped = 0;
+                       printk("DVB: LOST LOCK - attempting retune\n");
+                          if (fe->frontend->ops->set_tone)
+                             fe->frontend->ops->set_tone(fe->frontend, 0);
+                          mdelay(100);
+                          fe->frontend->ops->read_status(fe->frontend, &s);
+                          if (s & FE_HAS_LOCK) {
+                             printk("DVB: REGAINED LOCK WITH SIMPLE TONE 
setting\n");
+                             fe->state = FESTATE_TUNED;
+                             continue;
+                          }
+
+                          printk("DVB: TRYING COMPLETE RETUNE\n");
+                           fe->state = FESTATE_ZIGZAG_FAST;
+                           fe->started_auto_step = fe->auto_step;
+                           check_wrapped = 0;
+                          continue;
                        }
                }

When it dies, I see the following in dmesg:
DVB: LOST LOCK - attempting retune
DVB: REGAINED LOCK WITH SIMPLE TONE setting

So what the hell would cause that? I've got printks in the 
set_tone()/set_voltage()/etc functions, and nothing is calling them. All it 
does once the initial lock is gained is request the frontend lock status.

OK, Now I'm going to try setting the tone again every 60 seconds in the 
frontend loop.




More information about the linux-dvb mailing list