Index: libs/libmythtv/dvbtypes.h
===================================================================
--- libs/libmythtv/dvbtypes.h	(revision 8222)
+++ libs/libmythtv/dvbtypes.h	(working copy)
@@ -423,7 +423,7 @@
         QString lnb_lof_hi,        QString lnb_lof_lo,     QString _sistandard,
         QString hp_code_rate,      QString lp_code_rate,   QString constellation,
         QString transmission_mode, QString guard_interval, QString hierarchy,
-        QString modulation,        QString bandwidth);
+        QString modulation,        QString bandwidth,      QString input_name);
 
     DVBTuning       tuning;
 
@@ -436,6 +436,7 @@
     uint16_t        transportID;
 
     QString         sistandard;
+    QString         input_name;
     uint8_t         version;
   private:
     mutable QMutex  lock;
Index: libs/libmythtv/dvbchannel.cpp
===================================================================
--- libs/libmythtv/dvbchannel.cpp	(revision 8222)
+++ libs/libmythtv/dvbchannel.cpp	(working copy)
@@ -234,8 +234,16 @@
 
     CHANNEL(QString("Tuned to frequency for channel %1.").arg(chan));
 
+    // It would be nice to use a lookup table like in V4L cards, 
+    // However, it would require using the cardinputid as a key
+    // because there is no gaurantee of a 1:1 mapping between a
+    // diseqc <port,pos> to inputname
+    // If a sb lookup is required, might as well just get the name
+    // directly (which is what was done during the Parse() call
+    currentcapchannel = 0;
+    channelnames[currentcapchannel] = chan_opts.input_name;
     inputChannel[currentcapchannel] = curchannelname;
-
+   
     return true;
 }
 
@@ -250,10 +258,7 @@
 
 bool DVBChannel::SwitchToInput(const QString &input, const QString &chan)
 {
-    currentcapchannel = 0;
-    if (channelnames.empty())
-       channelnames[currentcapchannel] = input;
-
+    (void)input;
     return SetChannelByString(chan);
 }
 
@@ -338,7 +343,7 @@
         "       lnb_lof_hi,        lnb_lof_lo,     sistandard, "
         "       hp_code_rate,      lp_code_rate,   constellation, "
         "       transmission_mode, guard_interval, hierarchy, "
-        "       modulation,        bandwidth "
+        "       modulation,        bandwidth,      inputname "
         "FROM dtv_multiplex, cardinput, capturecard "
         "WHERE dtv_multiplex.sourceid = cardinput.sourceid AND ");
 
@@ -370,7 +375,8 @@
         query.value(12).toString(), query.value(13).toString(),
         query.value(14).toString(), query.value(15).toString(),
         query.value(16).toString(), query.value(17).toString(),
-        query.value(18).toString(), query.value(19).toString());
+        query.value(18).toString(), query.value(19).toString(),
+        query.value(20).toString());
 }
 
 /** \fn DVBChannel::CheckOptions()
Index: libs/libmythtv/dvbtypes.cpp
===================================================================
--- libs/libmythtv/dvbtypes.cpp	(revision 8222)
+++ libs/libmythtv/dvbtypes.cpp	(working copy)
@@ -906,7 +906,7 @@
     QString lnb_lof_hi,        QString lnb_lof_lo,     QString _sistandard,
     QString hp_code_rate,      QString lp_code_rate,   QString constellation,
     QString trans_mode,        QString guard_interval, QString hierarchy,
-    QString modulation,        QString bandwidth)
+    QString modulation,        QString bandwidth,      QString _input_name)
 {
     lock.lock();
         
@@ -928,7 +928,8 @@
         ok = tuning.parseATSC(frequency, modulation);
         
     sistandard = _sistandard;
-        
+    input_name = _input_name;
+
     lock.unlock();
     return ok;
 }
