Index: mythtv/libs/libmythtv/dbcheck.cpp
===================================================================
--- mythtv.orig/libs/libmythtv/dbcheck.cpp
+++ mythtv/libs/libmythtv/dbcheck.cpp
@@ -13,7 +13,7 @@ using namespace std;
 #define MINIMUM_DBMS_VERSION 5
 
 /// This is the DB schema version expected by the running MythTV instance.
-const QString currentDatabaseVersion = "1208";
+const QString currentDatabaseVersion = "1209";
 
 static bool UpdateDBVersionNumber(const QString &newnumber);
 static bool performActualUpdate(const QString updates[], QString version,
@@ -3407,6 +3407,16 @@ thequery,
             return false;
     }
 
+    if (dbver == "1208")
+    {
+        const QString updates[] = {
+"ALTER TABLE capturecard ADD dvb_eitscan tinyint(1) NOT NULL default '1'; ",
+""
+};
+        if (!performActualUpdate(updates, "1209", dbver))
+	    return false;
+    }
+
 //"ALTER TABLE cardinput DROP COLUMN preference;" in 0.22
 //"ALTER TABLE channel DROP COLUMN atscsrcid;" in 0.22
 //"ALTER TABLE recordedmarkup DROP COLUMN offset;" in 0.22
Index: mythtv/libs/libmythtv/tv_rec.cpp
===================================================================
--- mythtv.orig/libs/libmythtv/tv_rec.cpp
+++ mythtv/libs/libmythtv/tv_rec.cpp
@@ -1447,7 +1447,12 @@ void TVRec::RunTV(void)
         if (channel && scanner &&
             QDateTime::currentDateTime() > eitScanStartTime)
         {
-            if (!get_use_eit(GetCaptureCardNum()))
+            if (!dvbOpt.dvb_eitscan)
+            {
+                VERBOSE(VB_EIT, LOC + "EIT scanning disabled for this card.");
+                eitScanStartTime = eitScanStartTime.addYears(1);
+            }
+            else if (!get_use_eit(GetCaptureCardNum()))
             {
                 VERBOSE(VB_EIT, LOC + "EIT scanning disabled "
                         "for all sources on this card.");
@@ -1590,7 +1595,7 @@ bool TVRec::GetDevices(int cardid,
         "       skipbtaudio,      signal_timeout,      channel_timeout, "
         "       dvb_wait_for_seqstart, "
         ""
-        "       dvb_on_demand,    dvb_tuning_delay, "
+        "       dvb_on_demand,    dvb_tuning_delay,    dvb_eitscan"
         ""
         "       firewire_speed,   firewire_model,      firewire_connection, "
         ""
@@ -1649,9 +1654,10 @@ bool TVRec::GetDevices(int cardid,
     uint dvboff = 10;
     dvb_opts.dvb_on_demand    = query.value(dvboff + 0).toUInt();
     dvb_opts.dvb_tuning_delay = query.value(dvboff + 1).toUInt();
+    dvb_opts.dvb_eitscan      = query.value(dvboff + 2).toUInt();
 
     // Firewire options
-    uint fireoff = dvboff + 2;
+    uint fireoff = dvboff + 3;
     firewire_opts.speed       = query.value(fireoff + 0).toUInt();
 
     test = query.value(fireoff + 1).toString();
Index: mythtv/libs/libmythtv/tv_rec.h
===================================================================
--- mythtv.orig/libs/libmythtv/tv_rec.h
+++ mythtv/libs/libmythtv/tv_rec.h
@@ -79,9 +79,10 @@ class GeneralDBOptions
 class DVBDBOptions
 {
   public:
-    DVBDBOptions() : dvb_on_demand(false), dvb_tuning_delay(0) {;}
+    DVBDBOptions() : dvb_on_demand(false), dvb_tuning_delay(0), dvb_eitscan(true) {;}
     bool dvb_on_demand;
     uint dvb_tuning_delay;
+    bool dvb_eitscan;
 };
 
 class FireWireDBOptions
Index: mythtv/libs/libmythtv/videosource.cpp
===================================================================
--- mythtv.orig/libs/libmythtv/videosource.cpp
+++ mythtv/libs/libmythtv/videosource.cpp
@@ -1052,6 +1052,22 @@ class DVBOnDemand : public CheckBoxSetti
     };
 };
 
+class DVBEITScan : public CheckBoxSetting, public CaptureCardDBStorage
+{
+  public:
+    DVBEITScan(const CaptureCard &parent) :
+        CheckBoxSetting(this),
+        CaptureCardDBStorage(this, parent, "dvb_eitscan")
+    {
+        setLabel(QObject::tr("Use DVB Card for active EIT scan"));
+        setValue(true);
+        setHelpText(
+            QObject::tr("This option activates the active scan for "
+                        "program data (EIT). With this option enabled "
+                        "the DVB card is constantly in-use."));
+    };
+};
+
 class DVBTuningDelay : public SpinBoxSetting, public CaptureCardDBStorage
 {
   public:
@@ -2952,6 +2968,7 @@ RecorderOptions::RecorderOptions(Capture
     rec->addChild(count);
     rec->addChild(new DVBNoSeqStart(parent));
     rec->addChild(new DVBOnDemand(parent));
+    rec->addChild(new DVBEITScan(parent));
     rec->addChild(new DVBTuningDelay(parent));
 
     addChild(rec);
Index: mythtv/libs/libmythtv/cardutil.cpp
===================================================================
--- mythtv.orig/libs/libmythtv/cardutil.cpp
+++ mythtv/libs/libmythtv/cardutil.cpp
@@ -468,7 +468,7 @@ static uint clone_capturecard(uint src_c
         "SELECT videodevice,           cardtype,       defaultinput,     "
         "       hostname,              signal_timeout, channel_timeout,  "
         "       dvb_wait_for_seqstart, dvb_on_demand,  dvb_tuning_delay, "
-        "       dvb_diseqc_type,       diseqcid "
+        "       dvb_diseqc_type,       diseqcid,       dvb_eitscan "
         "FROM capturecard "
         "WHERE cardid = :CARDID");
     query.bindValue(":CARDID", src_cardid);
@@ -497,9 +497,10 @@ static uint clone_capturecard(uint src_c
         "    dvb_on_demand         = :V7, "
         "    dvb_tuning_delay      = :V8, "
         "    dvb_diseqc_type       = :V9, "
-        "    diseqcid              = :V10 "
+        "    diseqcid              = :V10,"
+        "    dvb_eitscan           = :V11 "
         "WHERE cardid = :CARDID");
-    for (uint i = 0; i < 11; i++)
+    for (uint i = 0; i < 12; i++)
         query2.bindValue(QString(":V%1").arg(i), query.value(i).toString());
     query2.bindValue(":CARDID", dst_cardid);
 

