diff -ruN ./notpatched/filter.c ./patched/filter.c
--- ./notpatched/filter.c       2006-11-24 20:55:56.000000000 +0200
+++ ./patched/filter.c  2008-05-05 23:44:17.000000000 +0300
@@ -383,16 +383,17 @@
         int Ppid = pmt.getPCRPid();
         int Apids[MAXAPIDS + 1] = { 0 };
         int Dpids[MAXDPIDS + 1] = { 0 };
-#if VDRVERSNUM >= 10332
+        int Spids[MAXSPIDS + 1] = { 0 };
+#ifndef MAXLANGCODE2
+#define MAXLANGCODE2 4
+#endif
         char ALangs[MAXAPIDS + 1][MAXLANGCODE2] = { "" };
         char DLangs[MAXDPIDS + 1][MAXLANGCODE2] = { "" };
-#else
-        char ALangs[MAXAPIDS + 1][4] = { "" };
-        char DLangs[MAXDPIDS + 1][4] = { "" };
-#endif
+        char SLangs[MAXSPIDS][MAXLANGCODE2] = { "" };
         int Tpid = 0;
         int NumApids = 0;
         int NumDpids = 0;
+        int NumSpids = 0;
         for (SI::Loop::Iterator it; pmt.streamLoop.getNext(stream, it); ) {
 //     printf("PID: %5d %5d %2d %3d %3d\n", pmt.getServiceId(), stream.getPid(), stream.getStreamType(), pmt.getVersionNumber(), Channel->Number());//XXX
             switch (stream.getStreamType()) {
@@ -436,6 +437,28 @@
                             case SI::AC3DescriptorTag:
                                  dpid = stream.getPid();
                                  break;
+#if VDRVERSNUM >= 10510
+                            case SI::SubtitlingDescriptorTag:
+                                 if (NumSpids < MAXSPIDS) {
+                                    Spids[NumSpids] = stream.getPid();
+                                    SI::SubtitlingDescriptor *sd = (SI::SubtitlingDescriptor *)d;
+                                    SI::SubtitlingDescriptor::Subtitling sub;
+                                    char *s = SLangs[NumSpids];
+                                    int n = 0;
+                                    for (SI::Loop::Iterator it; sd->subtitlingLoop.getNext(sub, it); ) {
+                                        if (sub.languageCode[0]) {
+                                           if (n > 0)
+                                              *s++ = '+';
+                                           strn0cpy(s, I18nNormalizeLanguageCode(sub.languageCode), MAXLANGCODE1);
+                                           s += strlen(s);
+                                           if (n++ > 1)
+                                              break;
+                                           }
+                                        }
+                                    NumSpids++;
+                                    }
+                                 break;
+#endif
                             case SI::TeletextDescriptorTag:
                                  Tpid = stream.getPid();
                                  break;
@@ -463,7 +486,7 @@
                 delete d;
                 }
             }
-        Channel->SetPids(Vpid, Vpid ? Ppid : 0, Apids, ALangs, Dpids, DLangs, Tpid);
+        Channel->SetPids(Vpid, Vpid ? Ppid : 0, Apids, ALangs, Dpids, DLangs, Spids, SLangs, Tpid);
   printf("#### %i %s %i %i SID  %i\n",num,Channel->Name(),Vpid, Apids[0], Channel->Sid());
         Channel->SetCaIds(CaDescriptors->CaIds());
         Channel->SetCaDescriptors(CaDescriptorHandler.AddCaDescriptors(CaDescriptors));
diff -ruN ./notpatched/i18n.c ./patched/i18n.c
--- ./notpatched/i18n.c 2006-11-04 17:25:09.000000000 +0200
+++ ./patched/i18n.c    2008-05-05 23:01:19.000000000 +0300
@@ -207,6 +207,28 @@
     "", // Dansk
     "", // Èesky (Czech)
   },
+  { "SearchMode$Auto NIT",
+    "NIT Automatik",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "", // Hrvatski (Croatian)
+    "", // Eesti
+    "", // Dansk
+    "", // Èesky (Czech)
+  },
   { "Manual",
     "Manuell",
     "",
@@ -317,6 +339,28 @@
     "", // Dansk
     "", // Èesky (Czech)
   },
+  { "Tuner",
+    "Tuner",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "",
+    "", // Hrvatski (Croatian)
+    "", // Eesti
+    "", // Dansk
+    "", // Èesky (Czech)
+  },
   { "Scanning on transponder",
     "Durchsuche Transponder",
     "",
@@ -524,7 +568,7 @@
     "",
     "",
     "",
-    "Haku käynnissä %s.\tOdota hetkinen...",
+    "",
     "",
     "",
     "",
@@ -546,7 +590,7 @@
     "",
     "",
     "",
-    "Haku käynnissä %s.\tOdota hetkinen...",
+    "",
     "",
     "",
     "",
diff -ruN ./notpatched/transponders.c ./patched/transponders.c
--- ./notpatched/transponders.c 2006-11-04 17:25:09.000000000 +0200
+++ ./patched/transponders.c    2008-05-05 22:58:40.000000000 +0300
@@ -119,8 +119,8 @@

 bool cSatTransponder::SetTransponderData(cChannel *c, int Code)
 {
-   DLOG (DBG " SetSatTransponderData(s:%d,f:%d,p:%c,sRate:%d,fec%d", Code, frequency_, pol_, symbolrate_, fec_);
-   return c->SetSatTransponderData(Code, frequency_, pol_, symbolrate_, fec_);
+   DLOG (DBG " SetSatTransponderData(s:%d,f:%d,p:%c,sRate:%d,fec%d", Code, frequency_, pol_, symbolrate_, DVBFE_FEC_AUTO, DVBFE_MOD_AUTO, DVBFE_DELSYS_DVBS, DVBFE_ROLLOFF_UNKNOWN);
+   return c->SetSatTransponderData(Code, frequency_, pol_, symbolrate_, DVBFE_FEC_AUTO, DVBFE_MOD_AUTO, DVBFE_DELSYS_DVBS, DVBFE_ROLLOFF_UNKNOWN);
 }


@@ -221,9 +221,8 @@

 //   printf (DBG " SetTerrTransponderData(s:%d,f: %d ,BW: %d, mod %d, Hier %d\n,fec_h %d/l %d,G %d,T %d ", type,
 //                 frequency_, bandwidth_, modulation_, hierarchy_, fec_h_, fec_l_, guard_, transmission_);
-   return c->SetTerrTransponderData(type, frequency_, bandwidth_, modulation_, hierarchy_, fec_h_,
-                                     fec_l_, guard_, transmission_);//
-
+   return c->SetTerrTransponderData(type, frequency_, bandwidth_, modulation_, hierarchy_, fec_h_, fec_l_, guard_, transmission_, DVBFE_ALPHA_1, DVBFE_STREAM_PRIORITY_HP);
+
 }
 //----------- Class cCableTransponder ------------------------------

