diff -urN mythtv-0.24.1_orig/libs/libmythtv/dtvmultiplex.cpp mythtv-0.24.1/libs/libmythtv/dtvmultiplex.cpp
--- mythtv-0.24.1_orig/libs/libmythtv/dtvmultiplex.cpp	2011-05-16 05:57:52.000000000 +0900
+++ mythtv-0.24.1/libs/libmythtv/dtvmultiplex.cpp	2011-09-29 13:19:57.112453093 +0900
@@ -304,7 +304,7 @@
         "       hp_code_rate,      lp_code_rate,   constellation, "
         "       transmission_mode, guard_interval, hierarchy, "
         "       modulation,        bandwidth,      sistandard, "
-        "       mod_sys,           rolloff "
+        "       mod_sys,           rolloff,        transportid "
         "FROM dtv_multiplex "
         "WHERE dtv_multiplex.mplexid = :MPLEXID");
     query.bindValue(":MPLEXID", mplexid);
@@ -327,6 +327,7 @@
     mplex = mplexid;
     sistandard = query.value(13).toString();
     sistandard.detach();
+    transportid = query.value(16).toInt();
 
     // Parse the query into our DVBTuning class
     return ParseTuningParams(
diff -urN mythtv-0.24.1_orig/libs/libmythtv/dtvmultiplex.h mythtv-0.24.1/libs/libmythtv/dtvmultiplex.h
--- mythtv-0.24.1_orig/libs/libmythtv/dtvmultiplex.h	2011-05-16 05:57:52.000000000 +0900
+++ mythtv-0.24.1/libs/libmythtv/dtvmultiplex.h	2011-09-29 13:19:57.068453378 +0900
@@ -90,6 +90,7 @@
     // Optional additional info
     uint             mplex;
     QString          sistandard;
+    uint             transportid;
 };
 
 class ScanDTVTransport : public DTVMultiplex
diff -urN mythtv-0.24.1_orig/libs/libmythtv/dvbchannel.cpp mythtv-0.24.1/libs/libmythtv/dvbchannel.cpp
--- mythtv-0.24.1_orig/libs/libmythtv/dvbchannel.cpp	2011-05-16 05:57:52.000000000 +0900
+++ mythtv-0.24.1/libs/libmythtv/dvbchannel.cpp	2011-09-29 13:19:57.112453093 +0900
@@ -238,7 +238,7 @@
     // Turn on the power to the LNB
     if (tunerType.IsDiSEqCSupported())
     {
-        diseqc_tree = diseqc_dev.FindTree(GetCardID());
+//        diseqc_tree = diseqc_dev.FindTree(GetCardID());
         if (diseqc_tree)
             diseqc_tree->Open(fd_frontend);
     }
@@ -754,7 +754,7 @@
     {
         VERBOSE(VB_IMPORTANT, LOC_ERR +
                 "DVB-S needs device tree for LNB handling");
-        return false;
+//        return false;
     }
 
     desired_tuning = tuning;
@@ -882,14 +882,53 @@
         else
 #endif
         {
-            struct dvb_frontend_parameters params = dtvmultiplex_to_dvbparams(
-                tunerType, tuning, intermediate_freq, can_fec_auto);
+            if (DTVTunerType::kTunerTypeDVBS1 == tunerType)
+            {
+                struct dtv_property p_voltage;
+                struct dtv_properties cmdseq_voltage;
+
+                p_voltage.cmd        = DTV_VOLTAGE;
+                p_voltage.u.data     = SEC_VOLTAGE_18;
+                cmdseq_voltage.num   = 1;
+                cmdseq_voltage.props = &p_voltage;
+
+                ioctl(fd_frontend, FE_SET_PROPERTY, &cmdseq_voltage);
+
+                struct dtv_properties *cmds;
+
+                cmds = (struct dtv_properties*) calloc(1, sizeof(*cmds));
+                cmds->props = (struct dtv_property*) calloc(11, sizeof(*(cmds->props)));
+                cmds->props[0].cmd      = DTV_FREQUENCY;
+                cmds->props[0].u.data   = tuning.frequency;
+                cmds->props[1].cmd      = DTV_ISDBS_TS_ID;
+                cmds->props[1].u.data   = tuning.transportid;
+                cmds->props[2].cmd      = DTV_TUNE;
+                cmds->props[2].u.data   = 1;
+                cmds->num = 3;
 
-            if (ioctl(fd_frontend, FE_SET_FRONTEND, &params) < 0)
+                int res = ioctl(fd_frontend, FE_SET_PROPERTY, cmds);
+
+                free(cmds->props);
+                free(cmds);
+
+                if (res < 0)
+                {
+                    VERBOSE(VB_IMPORTANT, LOC_ERR + "Tune(): " +
+                            "Setting Frontend tuning parameters failed." + ENO);
+                    return false;
+                }
+            }
+            else
             {
-                VERBOSE(VB_IMPORTANT, LOC_ERR + "Tune(): " +
-                        "Setting Frontend tuning parameters failed." + ENO);
-                return false;
+                struct dvb_frontend_parameters params = dtvmultiplex_to_dvbparams(
+                    tunerType, tuning, intermediate_freq, can_fec_auto);
+
+                if (ioctl(fd_frontend, FE_SET_FRONTEND, &params) < 0)
+                {
+                    VERBOSE(VB_IMPORTANT, LOC_ERR + "Tune(): " +
+                            "Setting Frontend tuning parameters failed." + ENO);
+                    return false;
+                }
             }
         }
 
