@prodigy7: dieses Zitat von AudioSlyer ist evtl. der Schlüssel zum Erfolg:
Beachten: Der Kabeltuner will die Frequenzen in der cable.xml in Khz haben.
Kopier die zapit mal auf die box (/var/bin) und starte neu, probiers dann nochmal.
Edit: zapit gab's schon, also nimm
zapit-prodigy7, nach /var/bin/zapit, ... du weißt schon.
Edit2: und das ist der relevante teil des diffs:
Code: Alles auswählen
Index: apps/dvb/zapit/src/zapost/frontend.cpp
===================================================================
RCS file: /cvs/tuxbox/apps/dvb/zapit/src/zapost/frontend.cpp,v
retrieving revision 1.58
diff -u -p -r1.58 frontend.cpp
--- a/apps/dvb/zapit/src/zapost/frontend.cpp 8 Jul 2007 15:47:44 -0000 1.58
+++ b/apps/dvb/zapit/src/zapost/frontend.cpp 31 Dec 2007 14:16:45 -0000
@@ -51,6 +51,7 @@ CFrontend::CFrontend(int _uncommitted_sw
diseqcType = NO_DISEQC;
last_inversion = INVERSION_OFF;
last_qam = QAM_64;
+ secfd = -1;
uncommitted_switch_mode = _uncommitted_switch_mode;
if ((uncommitted_switch_mode<0) || (uncommitted_switch_mode>2)) uncommitted_switch_mode = 0;
@@ -59,13 +60,23 @@ CFrontend::CFrontend(int _uncommitted_sw
if ((fd = open(FRONTEND_DEVICE, O_RDWR|O_NONBLOCK)) < 0)
ERROR(FRONTEND_DEVICE);
+ fop(ioctl, FE_GET_INFO, &info);
+
#if HAVE_DVB_API_VERSION < 3
- if ((secfd = open(SEC_DEVICE, O_RDWR)) < 0)
- ERROR(SEC_DEVICE);
+ if (info.type != FE_QAM) {
+ printf("[frontend] non-cable box detected\n");
+ /* on cable-dreamboxen, opening the sec-device apparently
+ kills the box. See:
+ http://tuxbox-forum.dreambox-fan.de/forum/viewtopic.php?p=340296#340296
+ */
+ if ((secfd = open(SEC_DEVICE, O_RDWR)) < 0)
+ ERROR(SEC_DEVICE);
+ } else {
+ printf("[frontend] cable box detected\n");
+ }
#else
secfd = fd;
#endif
- fop(ioctl, FE_GET_INFO, &info);
}
CFrontend::~CFrontend(void)
@@ -74,6 +85,10 @@ CFrontend::~CFrontend(void)
sendDiseqcStandby();
close(fd);
+#if HAVE_DVB_API_VERSION < 3
+ if (secfd >= 0)
+ close(secfd);
+#endif
}
void CFrontend::reset(void)
@@ -120,11 +135,11 @@ fe_modulation_t CFrontend::getModulation
case 0x05:
return QAM_256;
default:
-#if HAVE_DVB_API_VERSION < 3
- // FIXME!
- return QAM_256;
-#else
+#if HAVE_DVB_API_VERSION >= 3
return QAM_AUTO;
+#else
+ /* peeking at the enigma code suggests that QAM_64 might be correct */
+ return QAM_64;
#endif
}
}
@@ -207,8 +222,17 @@ void CFrontend::setFrontend(const dvb_fr
while ((errno == 0) || (errno == EOVERFLOW))
quiet_fop(ioctl, FE_GET_EVENT, &event);
-
+#ifdef HAVE_DREAMBOX_HARDWARE
+ dvb_frontend_parameters *feparams2;
+ memcpy(feparams2,feparams,sizeof(dvb_frontend_parameters));
+ if (info.type == FE_QAM) {
+ feparams2->Frequency /= 1000;
+ fprintf(stderr, "[zapit] cable box; setting frequency to %d khz\n", feparams2->Frequency);
+ }
+ fop(ioctl, FE_SET_FRONTEND, feparams2);
+#else
fop(ioctl, FE_SET_FRONTEND, feparams);
+#endif
}
#define TIME_STEP 200