Letzter Kanal

Wünsche, Anträge, Fehlermeldungen
en-total
Einsteiger
Einsteiger
Beiträge: 372
Registriert: Donnerstag 18. Dezember 2003, 18:45

Letzter Kanal

Beitrag von en-total »

Hallo mal wieder,

am Wochenende habe ich mich mal wieder geärgert, weil der EPG von SAT1 gesponnen hat. Sonntag morgen auf SAT1 die dbox "gebootet", ewiges warten auf die Synchronisation der Uhrzeit, und dann ein EPG welcher erst um ca. 12:30 anfing (ich hatte um 9:00 Uhr eingeschaltet). :evil:

Ähnliche Probleme habe ich auch schon des öfteren bei der RTL Group erleben müssen, komischerweise auch immer am Wochenende. :evil:

Wäre es nicht möglich, die Box auf einem fest fixierten Kanal aus dem Tiefschlaf zu erwecken? Ich für meinen Teil habe gute Erfahrungen mit dem WDR, bzw. mit allen Sendern der ARD / ZDF Gruppe - da gab es bisher nie Probleme. Naja, bekomme ich wenigsten etwas für meine GEZ Gebühren :lol:

Ich habe hier im Forum gelesen, man kann die "zapit.conf" hin / her kopieren, etc.. aber das ist doch nicht der "wahre Jakob". Wer hat schon Lust, bei jedem neuen AlexW ständig Hand anzulegen? Mit einem aufspielen der Bouquets und Ucodes sollte es doch getan sein, beim wechseln des Image.

Ich fände gut, wenn das konfigurierbar wäre, im SetUp. Also, ob man vom letzten Kanal "booten" möchte, oder von einem vordefiniertem. Der vordefiniete kann gut und gerne Kanal 1 sein, das kann sich in den Bouquets ja gerne jeder zurechtlegen wie er möchte.

Danke fürs zuhören,
en-total
KeXXeN
Tuxboxer
Tuxboxer
Beiträge: 2634
Registriert: Samstag 15. November 2003, 09:00

Beitrag von KeXXeN »

am Wochenende habe ich mich mal wieder geärgert, weil der EPG von SAT1 gesponnen hat. Sonntag morgen auf SAT1 die dbox "gebootet", ewiges warten auf die Synchronisation der Uhrzeit, und dann ein EPG welcher erst um ca. 12:30 anfing (ich hatte um 9:00 Uhr eingeschaltet).
KAnn ich bestätigen.
Jedoch lag das nicht an Neutrino.
Da ich das Problem auch mit meiner Nokia hatte auf der noch Betanova läuft, scheint es eher ein Problem des Senders gewesen zu sein, als ein "Neutrino"- oder "Linux"-technisches Problem
en-total
Einsteiger
Einsteiger
Beiträge: 372
Registriert: Donnerstag 18. Dezember 2003, 18:45

Beitrag von en-total »

Hi,
nein - an Neutrino liegt das nicht - kam das so von mir rüber :oops: :o
Es liegt natürlich am Anbieter - aber es wäre dennoch nett, wenn man in Neutrino den Letzten Sender irgendwie fixieren könnte - daher habe ich den Bereich "Feature Requests" gewählt.
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Beitrag von Barf »

Ich habe die Zeile

Code: Alles auswählen

echo lastChannelTV=0 > /var/tuxbox/config/zapit/zapit.conf
in meinem start_neutrino. Dadurch startet immer Neutrino mit Kanal 1. Sicherlich nicht eine Warmduscherlösung :wink: aber gets the job done. Ich habe keine Nebeneffekte von dem brutalen Überschreiben von zapit.conf feststellen können.

Eine Integration in Neutrino als Benutzerkonfiguration wäre, schätze ich, relativ straight-forward.

Barf
rasc
Senior Member
Beiträge: 5071
Registriert: Dienstag 18. September 2001, 00:00

Beitrag von rasc »

Nebenwirkung (z.B.):
u.a. gehen saemtliche Diseqc-Einstellungen flöten...
Bei Mehrsatelliten-Empfang duerfte dann erst mal wieder gar nix gehen...
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Beitrag von Barf »

Leider muss ich mich mit Kabelempfang begnügen (Erdgeschoss, Riesenhochhaus zum Süden) so Probleme mit Diseqc-Einstellungen habe ich nicht festgestellt :-?

Um zu verhindern dass jemand glaubt dass meine Lösung für mich für jemanden andern funktionieren wurde, mache ich folgende Ergänzung:

Z.B.

Code: Alles auswählen

sed -e 's/lastChannelTV=.*/lastChannelTV=0/'  < /var/tuxbox/config/zapit/zapit.conf  > /var/tuxbox/config/zapit/zapit.conf 
ist sicherer.
essu
Tuxboxer
Tuxboxer
Beiträge: 2452
Registriert: Montag 21. Oktober 2002, 10:04

Beitrag von essu »

touché ;)
Schon gelesen ???
ENIGMA-DOC
en-total
Einsteiger
Einsteiger
Beiträge: 372
Registriert: Donnerstag 18. Dezember 2003, 18:45

Beitrag von en-total »

Hallo,
erstmal "Frohes neues Jahr"!

Nunja, dann doch lieber die zapit.conf ins /tmp legen, und per symlink darauf verweisen. So behelfe ich mir bisher. Ich weiss jetzt nicht mehr, wer das hier geposted hatte, funktioniert aber:

In "start_neutrino" eine statische "zapit.conf" nach /tmp kopieren, in welcher der lastchannel auf 0 steht.

Vorher natürlich die statische zapit.conf nach /var kopieren, und einen symlink nach /tmp. Also z.B.:

ln -s /var/tuxbox/config/zapit.conf /tmp/zapit.conf

Hmm.. ich hoffe das war nun verständlich, ist schon etwas spät, bzw. früh :lol:

Die DiseqC Einstellungen, usw.. bleiben somit natürlich erhalten, und es wird auch nicht ständig unnötigerweise ins FlashRom geschrieben. Ich persönlich finde das ganz sinnvoll.

Hmm.. wenn ich so darüber nachdenke, Barf: Das könnte jeder für sich in sein (Dein) ImageKit übernehmen. Dann wäre es schon nach dem flashen sofort drin, sofern man möchte.

Selbstverständlich wäre es natürlich besser, wenn man das per Neutrino Setup mit dem lastchannel einstellen könnte. Ich bin nicht der CodeFreak in C, aber ich denke mal es war weitaus schwieriger das mit dem lastchannel zu programieren, als einfach nur einen fixen Kanal zu nehmen :o
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Beitrag von Barf »

Erst Korrektur zu meine frühere Post:

proggie < file > file

macht nicht was mann erwartet, weil die Shell erst file zu schreiben öffnet (dabei den Inhalt vernichtet), bevor proggie den inhalt sieht. :oops: Eine funktionierende Version überlasse ich den Leser als Übung.
Nunja, dann doch lieber die zapit.conf ins /tmp legen, und per symlink darauf verweisen.
Dadurch verbietest du zapit seine Einstellungen zwischen den Reboots zu speichern (/tmp liegt in (flüchtiges) RAM, und wird bei booten gelöscht). Hat keine Vorteile, es sei denn, du glaubst dass häufiges Schreiben in Flash den Lebensdauer verkurzt. Eine andere Lösung wäre zapit.conf händisch zu editieren, und danach schreibschützen (eigentlich keine schlechte Lösung; unterbindet auch das Schreiben).
Hmm.. wenn ich so darüber nachdenke, Barf: Das könnte jeder für sich in sein (Dein) ImageKit übernehmen. Dann wäre es schon nach dem flashen sofort drin, sofern man möchte.
Genau dazu sind die my-* skripte da.
Selbstverständlich wäre es natürlich besser, wenn man das per Neutrino Setup mit dem lastchannel einstellen könnte.
Das Problem ist dass zapit kein Tel von Neutrino ist: kann selbständig laufen, wird auch von Enigma, Lcars benutzt(?). zapit wird ausserdem gestartet bevor neutrino, so dass zapit nicht neutrino als userparameterserver benutzen kann. Eine einfache und natürliche Lösung sehe ich z.Z. nicht.
essu
Tuxboxer
Tuxboxer
Beiträge: 2452
Registriert: Montag 21. Oktober 2002, 10:04

Beitrag von essu »

Barf hat geschrieben:[...]
1. Eine andere Lösung wäre zapit.conf händisch zu editieren, und danach schreibschützen (eigentlich keine schlechte Lösung; unterbindet auch das Schreiben).

[...]
2. Eine einfache und natürliche Lösung sehe ich z.Z. nicht.
zu 1.
Damit liessen sich aber auch andere Ptrameter nicht mehr speichern

zu 2. ... als Plugin: "immer mit diesem Kanal starten"
Schon gelesen ???
ENIGMA-DOC
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Beitrag von Barf »

zu 2. ... als Plugin: "immer mit diesem Kanal starten"
... sagst du uns wie dein Plugin mit dem zapit der nach nächstem Reboot startet kommuniziert?:wink:

Mann könnte z.B. zapit so modifizieren, dass beim start eine Datei, z.B. /var/tuxbox/config/zapit/last_channel.conf gesucht wird; falls existierend und sinnvoll wird Startkanal davon entnommen. Dann kann neutrino/enigma/lcars/plugins oder der Benutzer direkt diese Datei manipulieren.

Aber, als "einfach" und "natürlich" (aus Programmierersicht) sehe ich eine solche Lösung nicht.
en-total
Einsteiger
Einsteiger
Beiträge: 372
Registriert: Donnerstag 18. Dezember 2003, 18:45

Beitrag von en-total »

Hi,
alle wieder unter den Lebenden? :lol:
Nunja, dann doch lieber die zapit.conf ins /tmp legen, und per symlink darauf verweisen.
Dadurch verbietest du zapit seine Einstellungen zwischen den Reboots zu speichern (/tmp liegt in (flüchtiges) RAM, und wird bei booten gelöscht).
Das ist mir klar. Allerdings wäre das nur von Nachteil, wenn ich Einen anderen DiseqC Schalter kaufen würde. Ansonsten geschehen meines Wissens nach keine relevanten Änderungen in zapit.conf.
Hat keine Vorteile, es sei denn, du glaubst dass häufiges Schreiben in Flash den Lebensdauer verkurzt.
Das ist in der Tat so. Flash Bausteine sind immer für "xxxxxxx" Schreibzyklen ausgelegt. Ich glaube ja auch nicht, das man die jemals erreicht (ist meistens irgendwas um die 1 Million), aber es ist nicht von Nachteil unnötigen Zugriff zu vermeiden. Ich meine, warum sollte ich ständig etwas in die zapit.conf schreiben, was ich eh nicht drin haben möchte?
Eine andere Lösung wäre zapit.conf händisch zu editieren, und danach schreibschützen (eigentlich keine schlechte Lösung; unterbindet auch das Schreiben).
Das ist leider nicht möglich, daran hatte ich auch schon gedacht. Allerdings wird mit root Rechten in die Datei geschrieben, und der hat immer Schreibrechte, auch bei chmod 400 :-?
essu
Tuxboxer
Tuxboxer
Beiträge: 2452
Registriert: Montag 21. Oktober 2002, 10:04

Beitrag von essu »

Barf hat geschrieben:
zu 2. ... als Plugin: "immer mit diesem Kanal starten"
... sagst du uns wie dein Plugin mit dem zapit der nach nächstem Reboot startet kommuniziert?:wink:
Als Shellscript:

Code: Alles auswählen

echo lastChannelTV=0 >/var/tuxbox/config/zapit.start
grep -vi lastChannelTV= /var/tuxbox/config/zapit.conf >>zapit.start
und in start_neutrino:

Code: Alles auswählen

#!/bin/sh

/bin/sectionsd
/bin/timerd
mv /var/tuxbox/config/zapit.start /var/tuxbox/config/zapit.conf
...
essu
Tuxboxer
Tuxboxer
Beiträge: 2452
Registriert: Montag 21. Oktober 2002, 10:04

Beitrag von essu »

sogar dreifachpost...
Zuletzt geändert von essu am Donnerstag 1. Januar 2004, 16:34, insgesamt 1-mal geändert.
essu
Tuxboxer
Tuxboxer
Beiträge: 2452
Registriert: Montag 21. Oktober 2002, 10:04

Beitrag von essu »

Sorry, war doch nix mit dem"critical error": Doppelpost
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Beitrag von Barf »

Folgende Patch zu zapit.cpp sollte die "dirty tricks" eliminieren. Mit dem -a option wird die gewünschte Startkanal von /var/tuxbox/config/zapit/start_channel.conf gelesen. Mehr info im Code. essu, du kannst jetzt loslegen und dein Plugin schreiben.

Mit -r (readonly) wird zapit.conf nicht geschrieben, was flash-schreibzykel spart. (Dadurch bekommt mann auch eine Möglichkeit, immer mit dem selben Kanal zu starten.)


Code: Alles auswählen

--- zapit.cpp.orig	2003-12-20 12:41:09.000000000 +0100
+++ zapit.cpp	2004-01-01 18:11:17.000000000 +0100
@@ -22,6 +22,32 @@
  *
  */
 
+/*
+ Options:
+ -d	Debugmode: Don't fork, additionally generate debugging messages
+
+ -q     Be quiet.
+
+ -r     (readonly) Normally, zapit writes the values of some internal
+  parameters to the configuration file
+  /var/tuxbox/config/zapit/zapit.conf. These include the last selected
+  (TV or Radio) channel, and some satellite related parameters. If
+  this is not desired, e.g. due to concern about "wearing out"
+  flashmemory, or simply because remembrance of the last channel
+  selected is not desirable, the -r option will inhibit the saving,
+  however not the reading of the configuration file.
+
+ -a     (alternative_configuration_file) Using this option, zapit when
+  starting will look for an alternative configuration file,
+  /var/tuxbox/config/zapit/start_channel.conf. If found, and with
+  sensible content it will be used to select the inital channel. The
+  first line should contain the channel number (one minus the number
+  the user sees). Optionally, if the second line is present and starts with the
+  letter 'r', the channel will be considered a radio channel.
+  In all other cases, it is interpreted as a TV channel.
+*/ 
+
+
 /* system headers */
 #include <csignal>
 #include <fcntl.h>
@@ -91,6 +117,10 @@
 bool playbackStopForced = false;
 int debug = 0;
 
+bool readonly = false;
+bool alternative_config_file = false;
+#define ALTERNATIVE_CONFIG_FILENAME "/var/tuxbox/config/zapit/start_channel.conf"
+
 int waitForMotor = 0;
 int motorRotationSpeed = 0; //in 0.1 degrees per second
 diseqc_t diseqcType;
@@ -131,6 +161,8 @@
 
 void saveSettings(bool write)
 {
+        if (readonly)
+	  return;
 	if (channel) {
 		config.setInt32("lastChannelMode", (currentMode & RADIO_MODE) ? 1 : 0);
 
@@ -152,13 +184,32 @@
 CZapitClient::responseGetLastChannel load_settings(void)
 {
 	CZapitClient::responseGetLastChannel lastchannel;
-
+	bool success = false;
+	if (alternative_config_file) {
+	  lastchannel.mode = 't';
+	  FILE *f = fopen(ALTERNATIVE_CONFIG_FILENAME, "r");
+	  if (f) {
+	    char s[1000];
+	    success = fgets(s, 1000, f) != NULL;
+	    if (success) {
+	      sscanf(s, "%d", &lastchannel.channelNumber);
+	      if (fgets(s, 1000, f)) {
+		lastchannel.mode = s[0] == 'r' ? 'r' : 't';
+	      }
+	      printf("**** Found channel %d, type %c\n", lastchannel.channelNumber, lastchannel.mode);
+	    }
+	    fclose(f);
+	  }
+	}
+	if (!success) {
+	 
 	if (config.getInt32("lastChannelMode", 0))
 		lastchannel.mode = 'r';
 	else
 		lastchannel.mode = 't';
 
 	lastchannel.channelNumber = config.getInt32((currentMode & RADIO_MODE) ? "lastChannelRadio" : "lastChannelTV", 0);
+	}
 	return lastchannel;
 }
 
@@ -1591,6 +1642,11 @@
 	fprintf(stdout, "$Id: zapit.cpp,v 1.339 2003/12/19 23:35:47 derget Exp $\n");
 
 	for (int i = 1; i < argc ; i++) {
+	        if (!strcmp(argv[i], "-r")) {
+		        readonly = true;
+		} else if (!strcmp(argv[i], "-a")) {
+		        alternative_config_file = true;
+		} else
 		if (!strcmp(argv[i], "-d")) {
 			debug = true;
 		}
@@ -1607,7 +1663,7 @@
 				close(fd);
 		}
 		else {
-			fprintf(stderr, "Usage: %s [-d] [-q]\n", argv[0]);
+			fprintf(stderr, "Usage: %s [-d] [-q] [-r] [-a]\n", argv[0]);
 			return EXIT_FAILURE;
 		}
 	}
essu
Tuxboxer
Tuxboxer
Beiträge: 2452
Registriert: Montag 21. Oktober 2002, 10:04

Beitrag von essu »

Der start_neutrino muss sowieso geändert werden:

Code: Alles auswählen

#!/bin/sh

/bin/sectionsd
/bin/timerd
/bin/zapit -a

if [ -x /var/bin/camd2 ]; then
...
das plugin:

Code: Alles auswählen

#!/bin/sh

if [ -e  /var/tuxbox/config/zapit/start_channel.conf ];then
 rm /var/tuxbox/config/zapit/start_channel.conf
elif
 grep -i lastChannelTV= /var/tuxbox/config/zapit/zapit.conf >/var/tuxbox/config/zapit/start_channel.conf 
fi
#und weiterer Code um die cfg umzuschreiben, spar ich mir jetzt;)
----edit---
so habs angepasst.
Bei dieser Lösung wird beim ersten Aufruf des Plugins der aktuelle Kanal als Startkanal festgelegt, beim nächsten Aufruf des Plugins wird wie gewöhnlich mit dem letzten Kanal gestartet und so weiter hin und her.
Es gäbe auch noch ne Variante mit zwei Shellscripten, muss aber nicht sein oder?
Die -r Option für zapit finde ich ehrlich gesagt überflüssig
fernsehass
Einsteiger
Einsteiger
Beiträge: 297
Registriert: Sonntag 13. Oktober 2002, 22:02

Beitrag von fernsehass »

Hallo
Ich finde da ganz gut :)
Ich hab mir die aktuelle zappit.cpp (1.357)mal angeschaut. Da gibt es die Optionen -d -q -u . Wre es nicht toll, das mal auf den aktuellen cvs stand anzupassen ?? ich komm ab hier net weiter

@@ -152,13 +184,32 @@
CZapitClient::responseGetLastChannel load_settings(void)
.
.
Hat jemand nen Tip für das ändern ??
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Beitrag von Barf »

Der Patch oben ist nicht mehr aktuell, und wird nicht aktualisiert. Auf meinem d-box-Page habe ich den nach "Obsolete" verschoben. Der Grund ist dass mann schon in dem CVS-zapit startverhältniss der Box wählen kann: falls in zapit.conf es steht

saveLastChannel=false

bekommt wird die dbox sich nicht den letzten Kanal erinnern, sondern startet mit dem in lastChannelTV (oder lastChannelRadio) gespeicherte Kanal. (Dies ist kein Versuch Dokumentation zu schreiben :) ) Kein Beate Uhse mehr am Morgen :lol:

@fernsehass: Dies antwortet auch dein Email an mich. Sorry dass es etwas dauerte...
fernsehass
Einsteiger
Einsteiger
Beiträge: 297
Registriert: Sonntag 13. Oktober 2002, 22:02

Beitrag von fernsehass »

Kein Problem
Ich möchte aber nun das so lösen, das ich den eintrag auf true und false aus dem Image heraus ändern kann. Gibts da ne "saubere" Lösung ??

Hab ich von dir weiter oben :)

sed -e 's/SaveLastChannel=.*/SaveLastChannel=true/' < /var/tuxbox/config/zapit/zapit.conf > /var/tuxbox/config/zapit/zapit.conf
wenn true als option ?

sed -e 's/SaveLastChannel=.*/SaveLastChannel=false/' < /var/tuxbox/config/zapit/zapit.conf > /var/tuxbox/config/zapit/zapit.conf
wenn false als option ?
Kann man das im Image mit system("...."); machen ???