diff --git a/mythtv/libs/libmythtv/recorders/dvbsignalmonitor.cpp b/mythtv/libs/libmythtv/recorders/dvbsignalmonitor.cpp
index d795d8e481..9ad65a9632 100644
--- a/mythtv/libs/libmythtv/recorders/dvbsignalmonitor.cpp
+++ b/mythtv/libs/libmythtv/recorders/dvbsignalmonitor.cpp
@@ -61,10 +61,29 @@ DVBSignalMonitor::DVBSignalMonitor(int db_cardnum, DVBChannel* _channel,
       streamHandlerStarted(false),
       streamHandler(NULL)
 {
-    // These two values should probably come from the database...
+
     int wait = 3000; // timeout when waiting on signal
+
+    // This value should probably come from the database...
     int threshold = 0; // signal strength threshold
 
+    // get from database
+    uint signal_timeout = 0; // not actually used
+    uint tuning_timeout = 0; // max time for channel signal lock
+    CardUtil::GetTimeouts(db_cardnum,signal_timeout,tuning_timeout);
+    if (tuning_timeout < 3000) // maintain backwards compatibility
+    {
+        LOG(VB_CHANNEL, LOG_DEBUG, LOC + "DVBSignalMonitor::  " +
+            QString("Tuning lock timeout from database = %1 ms using %2 ms to maintain backwards compatibility").arg(tuning_timeout).arg(wait));
+    }
+    else
+    {
+        wait = tuning_timeout;  // use value from database
+        LOG(VB_CHANNEL, LOG_DEBUG, LOC + "DVBSignalMonitor::  " +
+            QString("Using Tuning lock timeout from database = %1 ms").arg(wait));
+
+    }
+
     signalLock.SetTimeout(wait);
     signalStrength.SetTimeout(wait);
     signalStrength.SetThreshold(threshold);
