Neutrino auf der Dreambox

Kreuzuebersetzer, Diskussion über Änderungen im Tuxbox-CDK und Tuxbox-CVS
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Neutrino auf der Dreambox

Beitrag von seife »

Hallo.

Ich würde gerne, nach dem ich schon 2 dboxen mit Neutrino betreibe, auch meine neue Dreambox 500s mit Neutrino betreiben. Ich habe auch das "russenimage" gefunden und geflashed, welches auch schön bunt ist, allerdings meinen Anforderungen nicht ganz entspricht.

(Nein, ich werde nicht diskutieren, warum ich kein Enigma will)

Ich habe schon halbwegs erfolgreich das Neutrino gebaut bekommen, allerdings läuft es nicht richtig. Da ich mich bisher nicht wirklich mit den Innereien des codes auseinandergesetzt habe, fällt es mir schwer, manche sachen zu "deuten" :-)

Ich schreibe mal meine Beobachtungen und daraus geschlußfolgerten Vermutungen auf:

- neutrino für die dream läßt sich etwa so kompilieren (mit Handarbeit):
- auschecken dreambox-branch
- update auf HEAD von apps/ und driver/
- im Makefile.am ein dreamboximage_neutrinoroot Target hinzufügen, ähnlich dem dreamboximage Target für enigma

Zapit funktioniert dann aber nicht. Alle ioctls geben 515 zurück, was "ENOIOCTLCMD", also wohl "nicht implementiert".
Dummerweise ist der DVB-Treiber wohl im illegalen (closed source) head.ko-modul implementiert, also nicht fixbar.
Schlußfolgerung: die dreambox verwendet die alte DVB-API.

Wie machts das "russenimage"? Das verwendet wohl eine zapit-Version, die auf dem rel_alexW-Branch basiert und so hingepatched ist, daß sie läuft.

Ich vermute, daß das "hinpopeln" von zapit die schwierigste Aufgabe des ganzen ist, aber wenn jemand andere sachdienliche Hinweise hat, wäre ich dafür dankbar :-)
tmbinc
Developer
Beiträge: 821
Registriert: Freitag 20. Juli 2001, 00:00

Beitrag von tmbinc »

Ja, die DM500 verwendet die alte DVB-API. Ja, die head.ko ist closed-source. Nein, die head.ko ist nicht illegal. Sie steht schlichtweg nicht unter der GPL und enthält keine Softwareteile, die wir nicht unter einer geeigneten Lizenz besitzen.

(Woher die ENOIOCTLCMD kommen ist mir allerdings schleierhaft, immerhin sind die entsprechenden Devices ja nichtmal vorhanden, bzw. nicht an der gleichen stelle wie bei v3)

Kompilier Zapit halt für die DVB-API v1. Ich kenn mich in Zapit nicht aus, aber von V3 auf V1 umzuportieren ist nun auch nicht so der riesige aufwand. Enigma z.b. kann ja beides, da kannste das ja hernehmen.

Oder aus dem russenimage - denn da ist der source doch bestimmt verfügbar, schließlich steht Zapit ja sehr wohl unter der GPL.
PT-1
Moderator english
Beiträge: 2458
Registriert: Donnerstag 20. Dezember 2001, 00:00

Beitrag von PT-1 »

Hatte nicht mal jemand auf dem DenkTek Board etwa einen Treiber gebaut mit dem man enigma auf dem Relook nutzen kann.

Ich poste mal einen Link wenn ich ihn wieder finde poste ich ihn
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

tmbinc hat geschrieben:Ja, die DM500 verwendet die alte DVB-API.
Ok, danke für die Bestätigung.
tmbinc hat geschrieben:Ja, die head.ko ist closed-source. Nein, die head.ko ist nicht illegal. Sie steht schlichtweg nicht unter der GPL
Unterhalte dich mal mit dem Herrn Kroah-Hartman darüber ;-) Aber darum geht es mir hier gar nicht.
tmbinc hat geschrieben:und enthält keine Softwareteile, die wir nicht unter einer geeigneten Lizenz besitzen.

(Woher die ENOIOCTLCMD kommen ist mir allerdings schleierhaft, immerhin sind die entsprechenden Devices ja nichtmal vorhanden, bzw. nicht an der gleichen stelle wie bei v3)
Nun ja, das liegt wohl an meinem sportlichen "ln -s card0 /dev/dvb/adapter0" :-) Wie gesagt, ich hatte mich bisher nicht wirklich mit dvb-internals auseinandergesetzt :-)
tmbinc hat geschrieben:Kompilier Zapit halt für die DVB-API v1. Ich kenn mich in Zapit nicht aus, aber von V3 auf V1 umzuportieren ist nun auch nicht so der riesige aufwand. Enigma z.b. kann ja beides, da kannste das ja hernehmen.
Ja, das habe ich gestern auch gemacht, der Port ist schmutzig, aber er baut :-). Dummerweise ist die box 400km von mir entfernt, drum kann ich es erst nächste woche testen.
tmbinc hat geschrieben:Oder aus dem russenimage - denn da ist der source doch bestimmt verfügbar, schließlich steht Zapit ja sehr wohl unter der GPL.
Das Problem ist, daß dort eine 4 Jahre alte Codebasis benutzt wird, was ich nicht will. Und daß das ein solcher Pfusch ist, daß es einem beim Anschauen schon schlecht wird ;-)
PT-1
Moderator english
Beiträge: 2458
Registriert: Donnerstag 20. Dezember 2001, 00:00

Beitrag von PT-1 »

Da musst du dich mal mit Sandali unterhalten

http://denktenk.com/board/viewtopic.php ... ight=#2697
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

OK. Erster Versuch, baut durch, ist noch nicht getestet, da die box 400km weit weg ist :-)

Hier die "step by step instructions":

1.) auschecken. z.B. mit folgendem Skript:

Code: Alles auswählen

#!/bin/bash
cvs -d anoncvs@cvs.tuxbox.org:/cvs/tuxbox -z3 co -f -r dreambox -P .
cvs -qz3 up -dPA                apps/
cvs -qz3 up -dPA                driver/
cvs -qz3 up -dP -r dreambox     driver/include
2.) patchen, mit dem angehängten patch:

Code: Alles auswählen

zcat neutrino-dreambox-20070426-untested.diff.gz | patch -p1
3.) das Übliche:

Code: Alles auswählen

cd cdk
./prepare dm500
make dreamboximage_neutrinoroot
"make rebuild-flash" und "make flash-compress" würde ich erstmal noch nicht machen, sondern mal versuchen, das Zeugs von NFS zu starten.

So. Den Patch gibts unter http://wiki.spieleck.de/attach/Neutrino ... ed.diff.gz
Viel Spaß damit, falls es jemand ausprobieren will :-)
dietmarw
Contributor
Beiträge: 1833
Registriert: Mittwoch 10. April 2002, 15:39

Beitrag von dietmarw »

ich hab zwar keine dream, aber ich finde es trotzdem gut das sich mal jemand der sache annimmt..

ich lasse grade mal compilen..

ergebnisse wenns durchläuft ab nachher auf http://tuxbox.trale.de


edit: mom. ist trale.de leider offline
edit2: file ist online..
Zuletzt geändert von dietmarw am Donnerstag 26. April 2007, 10:42, insgesamt 1-mal geändert.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

Danke.
Nur als "Warnung" für potenzielle Tester: die Feinarbeiten, wie /var/-Layout und init-Startskripten anpassen, sind noch nicht getan, es ist also nicht zu erwarten, daß es schon problemlos funktioniert.
Allerdings kann ich das ohne Hardware von hier aus nur schwer fixen :-)
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

Für alle, die auf meine ersten Erfahrungsberichte warten: ich habe dieses Wochenende eine Familienfeier, und werde wohl erst nächste Woche, wenn es dumm läuft erst am Dienstag dazu zu kommen, "mein Werk" zu testen. Sonst gibts ärger mit denen, die das dann in Zukunft mal benutzen sollen :-)
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

So, ich bin etwas weiter.
Natürlich hat das alles nicht so funktioniert, wie es sollte. Und daß der dreambox-Treiber die Kiste hart hinstellt, wenn man bei ioctls ein falsches Argument übergibt läßt mich über die Gründe, warum er Closed Source ist ganz neu spekulieren ;-)
Jetzt gehts aber.

Das checkout-Skript hat sich etwas geändert:

Code: Alles auswählen

#!/bin/bash
 cvs -d anoncvs@cvs.tuxbox.org:/cvs/tuxbox -z3 co -f -r dreambox -P .
 cvs -qz3 up -dPA                apps/ driver/ cdk/root/
 cvs -qz3 up -dP -r dreambox     driver/include
Dann patchen wie bisher, mit

Code: Alles auswählen

zcat neutrino-dreambox-20070503.diff.gz | patch -p1
dann bauen mit

Code: Alles auswählen

cd cdk
./prepare dm500
make dreamboximage_neutrinoroot
Ich habe das Image noch nicht in die Box geflashed, sondern ich habe es wie folgt getestest.
Booten des "Russenimages" mit "console=ttyS0,115200" (sollte aber auch mit original-enigma gehen). Dann ist folgendes skript als /var/bin/mount_all.sh auf der box:

Code: Alles auswählen

#!/bin/sh
server=192.168.200.1:/export/tuxbox-dream/root/cdkroot
for i in var share sbin lib bin
do
        mount -t nfs -o tcp,nolock $server/$i /$i
done
Zuerst logge ich mich an der seriellen Konsole ein, drücke strg-c (das killt das schon laufende neutrino), dann logge ich mich noch 2x per telnet ein.
Nun rufe ich mount_all.sh auf, danach kille ich wdog, zapit, controld, sectionsd, nhttpd und timerd.
Nun starte ich das alles manuell:

Code: Alles auswählen

zapit
controld
sectionsd
timerd
neutrino
Auf dem Server müssen die permissions in cdkroot/var stimmen, damit die config geschrieben werden kann. Evtl. fehlen noch Verzeichnisse, die noch angelegt werden müssen (einfach die Fehlermeldungen beachten).

Damit kann ich dann eine Kanalsuche machen, Fernsehen schauen und Radio hören, mehr habe ich noch nicht versucht ;-)

Achso: MiniDiSEqC findet nur sehr wenige Sender (DVB-S), aber DiSEqC 1.0/1.1/1.2 scheint besser zu funktionieren (Ein Astra-LNB an einem 8x8-billig-Switch, an dem nur einer der beiden LNB-Eingänge belegt ist).

Soweit mein Zwischenbericht mit meiner DM500S, wenn ich wieder Zeit habe, dann räume ich das noch ein wenig auf, schaue, daß die init-skripten funktionieren (die habe ich noch gar nicht angeschaut) und daß es sich auch ins Flash installieren läßt.

Patch ist hier: http://wiki.spieleck.de/attach/Neutrino ... 03.diff.gz
dietmarw
Contributor
Beiträge: 1833
Registriert: Mittwoch 10. April 2002, 15:39

Beitrag von dietmarw »

dietmarw hat geschrieben:
ergebnisse ... auf http://tuxbox.trale.de
dbluelle
Contributor
Beiträge: 319
Registriert: Samstag 29. Mai 2004, 18:49

Beitrag von dbluelle »

@seife
Erstmal ein fettes Danke für deine Arbeit 8)

Ich habe es geschafft, ein lauffähiges Image für die Dreambox7000 zu erstellen (was aber auf der DM500 genauso funktionieren müsste...).
Dafür sind noch einige Änderungen an deinen Sachen nötig:
1. Man darf nicht den cdk/root - Zweig aus dem HEAD nehmen.

Code: Alles auswählen

#!/bin/bash
 cvs -d anoncvs@cvs.tuxbox.org:/cvs/tuxbox -z3 co -f -r dreambox -P .
 cvs -qz3 up -dPA                apps/ driver/ 
 cvs -qz3 up -dP -r dreambox     driver/include
2. Man muss den Code aus etc/init.d/start_neutrino in die rcS übernehmen und den Teil, der Enigma startet, ersetzen:

Code: Alles auswählen

RCS file: /cvs/tuxbox/cdk/root/etc/init.d/rcS,v
retrieving revision 1.31.2.21
diff -U3 -r1.31.2.21 rcS
--- cdk/root/etc/init.d/rcS	4 Apr 2007 16:47:47 -0000	1.31.2.21
+++ cdk/root/etc/init.d/rcS	5 May 2007 18:37:22 -0000
@@ -155,44 +155,57 @@
 if [ -e /var/etc/init ] ; then
 	. /var/etc/init
 fi
+sectionsd
+timerd
+camd2
+zapit
+controld
+nhttpd
+until neutrino -f -u ; do
+    echo "Neutrino exited with nonzero exit status, restarting..."
+    pidof sectionsd >/dev/null || sectionsd
+    pidof timerd    >/dev/null || timerd
+    pidof camd2     >/dev/null || camd2
+    pidof zapit     >/dev/null || zapit
+    pidof controld  >/dev/null || controld
+    pidof nhttpd    >/dev/null || nhttpd
+done
+
+[ -e /tmp/tuxmaild.pid ] && kill $( cat /tmp/tuxmaild.pid )
+[ -e /tmp/tuxcald.pid ] && kill $( cat /tmp/tuxcald.pid )
+[ -e /var/run/automount.pid ] && kill -TERM $( cat /var/run/automount.pid )
+pzapit -kill
 
-rm /var/etc/.dont_restart_enigma
-touch /tmp/.enigma
-while [ -e /tmp/.enigma ]
+i=9
+while expr $i != 0 > /dev/null
 do
-	if [ ! -e /var/etc/.dont_restart_enigma ] ; then
-		if [ ! -e /var/etc/.dont_start_dccamd ] ; then
-			dccamd
-		fi
-		/bin/enigma
-		ret=$?
-		echo "enigma returned with "$ret
-		case $ret in
-		0)
-			echo "Shutdown"
-			rm /tmp/.enigma
-			/sbin/halt
-			;;
-		3)	    
-			echo "Reboot Flash"
-			killall -9 dccamd
-			rm /tmp/.enigma
-			umount /var
-			umount /hdd
-			/bin/flashtool
-			;;
-		4)
-			echo "Reboot"
-			rm /tmp/.enigma
-			/sbin/reboot
-			;;
-		*)  echo "Restart"
-			;;
-		esac
-		killall -9 dccamd
-	else
-		sleep 1
-	fi
+if pidof controld > /dev/null; then echo "Waiting for controld (max. $i seconds)"
+elif pidof timerd > /dev/null; then echo "Waiting for timerd (max. $i seconds)"
+elif pidof zapit > /dev/null; then echo "Waiting for zapit (max. $i seconds)"
+elif pidof tuxmaild > /dev/null; then echo "Waiting for tuxmaild (max. $i seconds)"
+elif pidof tuxcald > /dev/null; then echo "Waiting for tuxcald (max. $i seconds)"
+else break;
+fi
+i=`expr $i - 1`
+sleep 1
 done
 
+if [ -e /tmp/.nohalt ] ; then
+    killall -q sectionsd
+    killall -q timerd
+    killall -q camd2
+    killall -q zapit
+    killall -q controld
+    killall -q nhttpd
+    saa --fbas
+    switch -fnc 0 -fblk 0
+    echo "Neutrino and its daemons terminated (hopefully)"
+    exit
+fi
+
+if [ -e /tmp/.reboot ] ; then
+    reboot
+else
+    halt
+fi
 exit 0
3. Da cdk/root aus dem Dreambox-Zweig verwendet wird, sind einige Anpassungen an deinen Patches für cdk/Makefile.am und cdk/configure.ac nötig:

Code: Alles auswählen

RCS file: /cvs/tuxbox/cdk/Makefile.am,v
retrieving revision 1.197.2.51.2.75
diff -U3 -r1.197.2.51.2.75 Makefile.am
--- cdk/Makefile.am	11 Mar 2007 15:47:58 -0000	1.197.2.51.2.75
+++ cdk/Makefile.am	5 May 2007 18:37:20 -0000
@@ -827,7 +827,7 @@
 	@CLEANUP_libsigc@
 	touch $@
 
-.libvorbisidec: .bootstrap @DEPENDS_libvorbisidec@
+.libvorbisidec: .bootstrap @DEPENDS_libvorbisidec@ Patches/tremor.diff
 	@PREPARE_libvorbisidec@
 	cd @DIR_libvorbisidec@ && \
 		$(BUILDENV) \
@@ -836,7 +836,8 @@
 			--host=$(target) \
 			--prefix= && \
 		$(MAKE) && \
-		@INSTALL_libvorbisidec@
+		@INSTALL_libvorbisidec@ && \
+		cp vorbisidec.pc $(targetprefix)/lib/pkgconfig
 	@CLEANUP_libvorbisidec@
 	touch $@
 
@@ -1696,7 +1697,7 @@
 	touch $@
 
 $(appsdir)/dvb/zapit/Makefile: .bootstrap .misc_libs
-	cd $(appsdir)/dvb/zapit && $(CONFIGURE) --with-neutrino-source=$(appsdir)/tuxbox/neutrino
+	cd $(appsdir)/dvb/zapit && $(CONFIGURE) CPPFLAGS="$(CPPFLAGS) -DHAVE_DVB_API=1" --with-neutrino-source=$(appsdir)/tuxbox/neutrino
 
 .zapit: $(appsdir)/dvb/zapit/Makefile
 	$(MAKE) -C $(appsdir)/dvb/zapit all install
@@ -1777,7 +1778,14 @@
 
 # tuxbox/neutrino
 
-$(appsdir)/tuxbox/neutrino/Makefile: .bootstrap .libboost .libcurl .libfreetype .libtuxbox .misc_libs .plugins .tuxbox_libs .zapit
+$(appsdir)/dvb/config/config.status:
+	cd $(appsdir)/dvb/config && $(CONFIGURE)
+
+.config: $(appsdir)/dvb/config/config.status
+	$(MAKE) -C $(appsdir)/dvb/config all install
+	touch $@
+
+$(appsdir)/tuxbox/neutrino/Makefile: .bootstrap .libboost .libcurl .libfreetype .libtuxbox .misc_libs .libsigc .plugins .tuxbox_libs .zapit .tuxbox_tools .libid3tag .libmad .libvorbisidec .config
 	cd $(appsdir)/tuxbox/neutrino && $(CONFIGURE)
 
 .neutrino: $(appsdir)/tuxbox/neutrino/Makefile
@@ -1853,6 +1861,12 @@
 	flash-sambaclient
 endif
 
+dreamboximage_neutrinoroot: core .neutrino .etherwake .linuxkernel .dreamfiles .dvbsnoop \
+	flash-neutrino \
+	flash-plugin_tuxtxt \
+	flash-ftpd flash-dvb-tools flash-etherwake flash-dreamfiles flash-dvbsnoop \
+	flash-sambaclient
+
 rebuild-flash:
 	-rm -rf $(flashprefix)/root
 	-rm -f $(flashprefix)/.flash
@@ -1899,7 +1913,7 @@
 $(flashprefix)/.part_dvb_tools: $(flashprefix)/.flash .stream
 	@for i in streampes streamsec streamts udpstreampes; do \
 		$(INSTALL) $(targetprefix)/sbin/$$i $(flashprefix)/root/sbin; done;
-	$(INSTALL) $(targetprefix)/bin/dvbnet $(flashprefix)/root/bin;
+#	$(INSTALL) $(targetprefix)/bin/dvbnet $(flashprefix)/root/bin;
 	@touch $@
 
 flash-scummvm: $(flashprefix)/.part_scummvm .scummvm
@@ -1969,12 +1983,12 @@
 	fi
 # var_init
 	@cp -R $(targetprefix)/var_init $(flashprefix)/root
-	@for i in log mnt mnt/cf mnt/nfs mnt/usb run tuxbox/plugins tuxbox/config ; do \
+	@for i in log mnt mnt/cf mnt/nfs mnt/usb run tuxbox/plugins tuxbox/config tuxbox/config/zapit ; do \
 		$(INSTALL) -d $(flashprefix)/root/var_init/$$i; \
 	done;
-	@for i in tuxtxt enigma/cable enigma/fonts enigma/pictures enigma/resources enigma/skins enigma/terrestrial; do \
-		$(INSTALL) -d $(flashprefix)/root/var_init/tuxbox/config/$$i; \
-	done;
+#	@for i in tuxtxt enigma/cable enigma/fonts enigma/pictures enigma/resources enigma/skins enigma/terrestrial; do \
+#		$(INSTALL) -d $(flashprefix)/root/var_init/tuxbox/config/$$i; \
+#	done;
 	@ln -sf /tmp $(flashprefix)/root/var_init/tmp
 	@ln -sf /proc/mounts $(flashprefix)/root/var_init/etc/mtab
 # etc
@@ -2004,9 +2018,9 @@
 	@if [ ! -d $(flashprefix)/root/hdd ]; then mkdir $(flashprefix)/root/hdd; fi
 
 if !BOXTYPE_DM7000
-	@echo "i:/ezap/osd/alpha=00000000" >> $(flashprefix)/root/var_init/tuxbox/config/enigma/config
-	@echo "i:/ezap/osd/brightness=00000073" >> $(flashprefix)/root/var_init/tuxbox/config/enigma/config
-	@echo "i:/ezap/osd/gamma=00000066" >> $(flashprefix)/root/var_init/tuxbox/config/enigma/config
+#	@echo "i:/ezap/osd/alpha=00000000" >> $(flashprefix)/root/var_init/tuxbox/config/enigma/config
+#	@echo "i:/ezap/osd/brightness=00000073" >> $(flashprefix)/root/var_init/tuxbox/config/enigma/config
+#	@echo "i:/ezap/osd/gamma=00000066" >> $(flashprefix)/root/var_init/tuxbox/config/enigma/config
 endif
 if !BOXTYPE_DM56x0
 	@for i in skins/small_red*.esml skins/small_red*.info pictures/small-red pictures/triaxlogo-fs8.png ; do \
@@ -2428,20 +2442,32 @@
 ############################# UNTESTED!!! ##################################
 flash-neutrino: $(flashprefix)/.part_neutrino
 $(flashprefix)/.part_neutrino: $(flashprefix)/.flash .neutrino
-	$(INSTALL) $(targetprefix)/bin/controld $(targetprefix)/bin/lcdd $(targetprefix)/bin/neutrino \
+	$(INSTALL) -d $(flashprefix)/root/share/fonts
+	$(INSTALL) -d $(flashprefix)/root/share/iso-codes
+	$(INSTALL) -d $(flashprefix)/root/share/tuxbox
+	$(INSTALL) -d $(flashprefix)/root/etc/init.d
+	$(INSTALL) -d $(flashprefix)/root/var/etc/init.d
+	$(INSTALL) -d $(flashprefix)/root/var/tuxbox/config/lirc
+	$(INSTALL) $(targetprefix)/bin/controld $(targetprefix)/bin/neutrino \
 		$(targetprefix)/bin/nhttpd $(targetprefix)/bin/timerd \
 		$(flashprefix)/root/bin
-	cp -a $(targetprefix)/share/tuxbox/neutrino $(targetprefix)/share/tuxbox/lcdd \
+	cp -pa $(targetprefix)/share/tuxbox/neutrino $(targetprefix)/share/tuxbox/lcdd \
 		$(flashprefix)/root/share/tuxbox
-
+#	$(INSTALL) $(targetprefix)/bin/camd2 $(flashprefix)/root/bin
 	$(INSTALL) $(targetprefix)/bin/sectionsd $(flashprefix)/root/bin
-
+	$(INSTALL) $(targetprefix)/bin/pzapit $(flashprefix)/root/bin
+#	$(INSTALL) $(targetprefix)/bin/satfind $(flashprefix)/root/bin
 	$(INSTALL) $(targetprefix)/bin/zapit $(flashprefix)/root/bin
-	cp -a $(targetprefix)/var/tuxbox/config/zapit $(flashprefix)/root/var/tuxbox/config
-
-	$(INSTALL) -d $(flashprefix)/root/share/fonts
-	cp -a $(targetprefix)/share/fonts/micron*.ttf $(flashprefix)/root/share/fonts
-
+	cp -pa $(appsdir)/tuxbox/enigma/data/fonts/bluebold.ttf $(flashprefix)/root/share/fonts
+	cp -pa $(appsdir)/tuxbox/enigma/data/fonts/bluehigh.ttf $(flashprefix)/root/share/fonts
+	cp -pa $(appsdir)/tuxbox/enigma/data/fonts/md_khmurabi_10.ttf $(flashprefix)/root/share/fonts
+	cp -pa $(appsdir)/tuxbox/enigma/data/fonts/pakenham.ttf $(flashprefix)/root/share/fonts
+	cp -pa $(appsdir)/tuxbox/enigma/data/fonts/unmrs.pfa $(flashprefix)/root/share/fonts
+	cp -pa $(targetprefix)/share/fonts/micron*.ttf $(flashprefix)/root/share/fonts
+	cp -pa $(targetprefix)/share/fonts/12.pcf.gz $(flashprefix)/root/share/fonts
+	cp -pa $(targetprefix)/share/fonts/14B.pcf.gz $(flashprefix)/root/share/fonts
+	cp -pa $(targetprefix)/share/fonts/15B.pcf.gz $(flashprefix)/root/share/fonts
+	cp -pa $(targetprefix)/share/iso-codes/iso-639.tab $(flashprefix)/root/share/iso-codes
 	@touch $@
 
 flash-lcars: $(flashprefix)/.part_lcars
Index: cdk/configure.ac
===================================================================
RCS file: /cvs/tuxbox/cdk/configure.ac,v
retrieving revision 1.81.2.15.2.23
diff -U3 -r1.81.2.15.2.23 configure.ac
--- cdk/configure.ac	24 Dec 2006 16:30:37 -0000	1.81.2.15.2.23
+++ cdk/configure.ac	5 May 2007 18:37:21 -0000
@@ -486,11 +486,6 @@
 root/etc/Makefile
 root/etc/init.d/Makefile
 root/share/Makefile
-root/share/tuxbox/Makefile
 root/share/udhcpc/Makefile
-root/var_init/Makefile
 root/var_init/etc/Makefile
-root/var_init/tuxbox/Makefile
-root/var_init/tuxbox/config/Makefile
-root/var_init/tuxbox/config/enigma/Makefile
 ])
Ein so erzeugtes Image lässt sich bei mir problemlos auf den USB-Stick installieren (im Flash hab ichs nicht getestet, müsste aber auch gehen).
VORSICHT: Bisher lassen sich mit dem Image noch nicht die Netzwerkeinstellungen setzen!
Neutrino benutzt ifup/ifdown, was in der BusyBox-Version für die Dreambox nicht aktiviert ist (Die Dreambox verwendet ifconfig).
Also kommt man nach dem Flashen nicht mehr per telnet auf die Box!
Deshalb am besten in die rcS vor dem Flashen die Netzwerkkonfiguration mit ifconfig eintragen.

Allgemein funktioniert Neutrino damit schon sehr gut :D

dbluelle
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

dbluelle hat geschrieben:@seife
Erstmal ein fettes Danke für deine Arbeit 8)
Gern geschehen, ich mache das ja nicht ganz uneigennützig :-)
Ich habe es geschafft, ein lauffähiges Image für die Dreambox7000 zu erstellen (was aber auf der DM500 genauso funktionieren müsste...).
Sehr gut. Ich bin inzwischen so weit, daß es auch per Flash gehen müßte (ich teste mit readonly exportiertem root/cdkflash/root/ als nfsroot), aber ich habe es noch nicht probiert. Ich vermute, daß ich noch ein wenig Infrastruktur für das Initialisieren der /var/-Partition einbauen müßte (oder herausfinden, wie man ein Komplettimage inklusive /var für die dreambox baut).
Dafür sind noch einige Änderungen an deinen Sachen nötig:
1. Man darf nicht den cdk/root - Zweig aus dem HEAD nehmen.

Code: Alles auswählen

#!/bin/bash
 cvs -d anoncvs@cvs.tuxbox.org:/cvs/tuxbox -z3 co -f -r dreambox -P .
 cvs -qz3 up -dPA                apps/ driver/ 
 cvs -qz3 up -dP -r dreambox     driver/include
2. Man muss den Code aus etc/init.d/start_neutrino in die rcS übernehmen und den Teil, der Enigma startet, ersetzen:
Ok, bei mir funktioniert es auch mit HEAD cdk/root, aber ich habe es halt noch nicht im Flash getestet.
Ich schaue mir das mal an, wenn ich soweit bin, daß ich es ins Flash schreiben will (also sonst keine Probleme mehr auftreten).
Ein so erzeugtes Image lässt sich bei mir problemlos auf den USB-Stick installieren (im Flash hab ichs nicht getestet, müsste aber auch gehen).
VORSICHT: Bisher lassen sich mit dem Image noch nicht die Netzwerkeinstellungen setzen!
Neutrino benutzt ifup/ifdown, was in der BusyBox-Version für die Dreambox nicht aktiviert ist (Die Dreambox verwendet ifconfig).
Also kommt man nach dem Flashen nicht mehr per telnet auf die Box!
Deshalb am besten in die rcS vor dem Flashen die Netzwerkkonfiguration mit ifconfig eintragen.
Das habe ich gestern gefixt: Update auf busybox-1.2 (wie in HEAD) und ich habe sowohl ifupdown als auch ifconfig reinkonfiguriert.
Allgemein funktioniert Neutrino damit schon sehr gut :D
Bei mir inzwischen sogar besser als das russenimage: Wenn sich die Aspectratio von 4:3 auf 16:9 ändert, bekommt das russenimage das nicht mit (CEventWatchDog::getVideoMode ist scheinbar nicht implementiert, und in der alten API scheint es keinen VideoModeChanged-Event zu geben), aber "meine" Version schon :-)

Danke für's testen. Ich komme immer nur sporadisch dazu, daran zu entwickeln, da die Box während der Woche 400km weit weg ist (und mitnehmen hilft auch nix, da die SAT-Anlage dann fehlt :-), und die Probleme, die noch auftreten, nicht mehr ohne Blick auf den Fernseher remote debugt werden können :-)

Letzte Version:
http://wiki.spieleck.de/attach/Neutrino ... 05.diff.gz

Changelog:
- Aspectratio-Änderungen werden erkannt
- busybox 1.2, netzwerk sollte wieder gehen
- customize-flash skript, das (hoffentlich) das ganze halbwegs flash-tauglich macht
- Movieplayer kann abspielen
- nach einem kalten boot (ohne das russenimage vorher zu starten) ist trotdem Bild da. (teletextDemux->start() schlägt fehl, ist aber scheinbar harmlos -> nicht abbrechen)
- viele Kleinigkeiten, die ich vergessen habe

Ich boote das als yadd, indem ich nache "make rebuild-flash" die box mit folgender Kommandozeile boote:

Code: Alles auswählen

console=ttyS0,115200 root=/dev/nfs nfsroot=192.168.200.1:/space1/seife/src/tuxbox-dream/root/cdkflash/root,nolock,tcp ip=192.168.200.14:192.168.200.1
Das ist natürlich höchst spezifisch mein setup, da auf meinem nfs-server das ganze in /space1/seife/src/tuxbox-dream liegt :-)
dietmarw
Contributor
Beiträge: 1833
Registriert: Mittwoch 10. April 2002, 15:39

Beitrag von dietmarw »

dietmarw hat geschrieben:
ergebnisse ... auf http://tuxbox.trale.de
tomX
Interessierter
Interessierter
Beiträge: 75
Registriert: Sonntag 3. Dezember 2006, 18:01

Beitrag von tomX »

Kann man das nun auch ins Flash packen?

Zur Zeit nutze ich auf meiner DM500 das Russen-Image, aber eine alternative wäre spitze.

Ich liebäugle zur Zeit noch mit der ABCOM IP BOX 250 als Zweitbox und zum Aufnehmen. Könnte man da auch Neutrino draufpacken? Enigma läuft ja schon drauf, aber wer will das schon :-)
PT-1
Moderator english
Beiträge: 2458
Registriert: Donnerstag 20. Dezember 2001, 00:00

Beitrag von PT-1 »

Lt. meine Englischen Kontakten kann man das auch flashen
BoxMan
Interessierter
Interessierter
Beiträge: 61
Registriert: Mittwoch 1. Mai 2002, 19:09

Beitrag von BoxMan »

Hallo,

bin auch mal gerade dabei, ein Neutrino-Image für die 7000er zu basteln.
Danke erst einmal an seife für die Anleitung und diffs.

Jetzt habe ich da aber ein Problemchen:

Code: Alles auswählen

 cvs -d anoncvs@cvs.tuxbox.org:/cvs/tuxbox -z3 co -f -r dreambox -P .
 cvs -qz3 up -dPA                apps/ driver/
 cvs -qz3 up -dP -r dreambox     driver/include
geht, wenn ich jedoch
diffen will, sieht das bei mir so aus:
dreamer@ubuntu:~/images/dm7000_neutrino$ zcat neutrino-dreambox-20070505.diff.gz | patch -p1
patching file apps/dvb/zapit/include/zapit/audio.h
patching file apps/dvb/zapit/include/zapit/debug.h
patching file apps/dvb/zapit/include/zapit/frontend.h
patching file apps/dvb/zapit/include/zapit/getservices.h
patching file apps/dvb/zapit/include/zapit/scan.h
patching file apps/dvb/zapit/include/zapit/settings.h
patching file apps/dvb/zapit/include/zapit/video.h
patching file apps/dvb/zapit/include/zapit/zapit.h
patching file apps/dvb/zapit/include/zapit/client/zapittypes.h
patching file apps/dvb/zapit/src/getservices.cpp
patching file apps/dvb/zapit/src/scan.cpp
patching file apps/dvb/zapit/src/udpstreampes.cpp
patching file apps/dvb/zapit/src/zapit.cpp
patching file apps/dvb/zapit/src/zapost/Makefile.am
patching file apps/dvb/zapit/src/zapost/audio.cpp
patching file apps/dvb/zapit/src/zapost/frontend.cpp
patching file apps/dvb/zapit/src/zapost/video.cpp
patching file apps/dvb/zapit/src/zapsi/descriptors.cpp
patching file apps/dvb/zapit/src/zapsi/pmt.cpp
Hunk #1 succeeded at 439 (offset 8 lines).
patching file apps/tuxbox/libs/liblcddisplay/lcddisplay.cpp
patching file apps/tuxbox/neutrino/daemons/controld/controld.cpp
patching file apps/tuxbox/neutrino/daemons/controld/eventwatchdog.cpp
patching file apps/tuxbox/neutrino/daemons/controld/driver/audio.cpp
patching file apps/tuxbox/neutrino/daemons/sectionsd/dmxapi.h
patching file apps/tuxbox/neutrino/daemons/sectionsd/sectionsd.cpp
patching file apps/tuxbox/neutrino/data/locale/Makefile.am
patching file apps/tuxbox/neutrino/src/neutrino.cpp
patching file apps/tuxbox/neutrino/src/driver/BitrateCalculator.cpp
patching file apps/tuxbox/neutrino/src/driver/BitrateCalculator.h
patching file apps/tuxbox/neutrino/src/driver/lcdd.cpp
patching file apps/tuxbox/neutrino/src/driver/rcinput.h
patching file apps/tuxbox/neutrino/src/gui/alphasetup.cpp
patching file apps/tuxbox/neutrino/src/gui/movieplayer.cpp
patching file apps/tuxbox/neutrino/src/gui/movieplayer.h
patching file apps/tuxbox/neutrino/src/gui/streaminfo2.cpp
patching file apps/tuxbox/neutrino/src/gui/widget/menue.cpp
patching file apps/tuxbox/neutrino/src/system/settings.cpp
patching file apps/tuxbox/plugins/Makefile.am
patching file apps/tuxbox/tools/misc/Makefile.am
patching file cdk/Makefile.am
patching file cdk/configure.ac
patching file cdk/customize-flash
patching file cdk/rules-archive
patching file cdk/rules-make
patching file cdk/rules.pl
patching file cdk/Patches/busybox.config
patching file cdk/Patches/busybox.diff
patching file cdk/Patches/linux-enable-serial-console.diff
can't find file to patch at input line 4265
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|Index: cdk/root/etc/hostname
|===================================================================
|RCS file: /cvs/tuxbox/cdk/root/etc/hostname,v
|retrieving revision 1.1
|diff -u -p -r1.1 hostname
|--- a/cdk/root/etc/hostname 11 Dec 2001 12:59:23 -0000 1.1
|+++ b/cdk/root/etc/hostname 5 May 2007 18:26:50 -0000
--------------------------
File to patch:
Skip this patch? [y] y
Skipping patch.
1 out of 1 hunk ignored
patching file cdk/root/etc/init.d/rcS
Hunk #1 FAILED at 14.
Hunk #2 succeeded at 111 with fuzz 2 (offset 2 lines).
Hunk #3 FAILED at 128.
Hunk #4 FAILED at 250.
Hunk #5 FAILED at 273.
4 out of 5 hunks FAILED -- saving rejects to file cdk/root/etc/init.d/rcS.rej
patching file cdk/root/etc/init.d/start
Hunk #1 FAILED at 2.
1 out of 1 hunk FAILED -- saving rejects to file cdk/root/etc/init.d/start.rej
patching file driver/include/dbox/fb.h
patching file driver/include/ost/frontend.h
Kann man die Fehlermeldungen ignorieren, oder mache ich da einen Fehler? :gruebel:
BoxMan
dbluelle
Contributor
Beiträge: 319
Registriert: Samstag 29. Mai 2004, 18:49

Beitrag von dbluelle »

@boxman
Die Fehler beim Patchen kommen daher, dass du nicht die aktuelle Version von cdk/root mit ausgecheckt hast
Also statt

Code: Alles auswählen

 cvs -d anoncvs@cvs.tuxbox.org:/cvs/tuxbox -z3 co -f -r dreambox -P .
 cvs -qz3 up -dPA                apps/ driver/
 cvs -qz3 up -dP -r dreambox     driver/include
nimm

Code: Alles auswählen

 cvs -d anoncvs@cvs.tuxbox.org:/cvs/tuxbox -z3 co -f -r dreambox -P .
 cvs -qz3 up -dPA                apps/ driver/ cdk/root/
 cvs -qz3 up -dP -r dreambox     driver/include
Damit müsste es für seifes diffs passen.
Du kannst aber auch "meinen" Weg gehen (s. letztes Posting von mir).
Dann musst du allerdings auch die dort angegebenen Patches anwenden.

@seife
Hat es irgendwelche besonderen Gründe, warum du unbedingt den cdk/root/ -Zweig aus dem HEAD verwenden willst?
Soweit ich das sehe, werden dadurch nur eine Menge Skripte eingebaut, die man für die Dreambox eh nicht braucht bzw. die dann noch gepatcht werden müssen :gruebel: .
m.E. reicht es doch aus, in der rcS die Enigma Startbefehle durch die Neutrino-Startbefehle zu ersetzen (s. Patch weiter oben), oder übersehe ich da was?

dbluelle
BoxMan
Interessierter
Interessierter
Beiträge: 61
Registriert: Mittwoch 1. Mai 2002, 19:09

Beitrag von BoxMan »

ahh oki, gleich mal Deine Version testen.
Gebe dann Bescheid.

Wie ist es denn bei Updates, was muss man da eingeben?
Bei der Dreambox gehe ich immer so vor:

Code: Alles auswählen

cd $HOME/images/dm7000/apps/tuxbox/enigma
make distclean
cd $HOME/images/dm7000/apps/tuxbox/plugins
make distclean
cd $HOME/images/dm7000/apps
cvs -z3 up -dP
cd $HOME/images/dm7000/cdk
## für neue Treiber "rm -rf .dreamfiles"
rm -rf .plugins .dvbsnoop .enigma
cvs -z3 up -dP
## für neue Treiber "make .dreamfiles" ausführen
make .plugins
make .dvbsnoop
make .enigma
make rebuild-flash
make flash-compress
BoxMan
BoxMan
Interessierter
Interessierter
Beiträge: 61
Registriert: Mittwoch 1. Mai 2002, 19:09

Beitrag von BoxMan »

ich habe jetzt Deine diff (zu 2.) genommen, dbluelle.
Die Datei heisst jetzt bei mir diff1.diff.
Wie führe ich jetzt die diff nach "cvs -qz3 up -dP -r dreambox driver/include" aus?

Ich bin nicht so der differ. :-/
BoxMan
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

dbluelle hat geschrieben: @seife
Hat es irgendwelche besonderen Gründe, warum du unbedingt den cdk/root/ -Zweig aus dem HEAD verwenden willst?
Soweit ich das sehe, werden dadurch nur eine Menge Skripte eingebaut, die man für die Dreambox eh nicht braucht bzw. die dann noch gepatcht werden müssen :gruebel: .
m.E. reicht es doch aus, in der rcS die Enigma Startbefehle durch die Neutrino-Startbefehle zu ersetzen (s. Patch weiter oben), oder übersehe ich da was?
Nein, das hat keinen speziellen Grund, ich kann es einfach nicht besser :-)
Ich kenne mich mit der dreambox und der Art, wie die Startskripte funktionieren, gar nicht aus. Mit der dbox auch nicht wirklich, aber das habe ich mir immerhin schon genauer angeschaut. Also wollte ich es möglichst gleich wie bei der dbox haben. Daß das nicht unbedingt optimal sein muß, ist mir klar.
Ich denke aber, daß das schon unter "feintuning" fällt, sprich: wenn das unser ganzes Problem ist, dann bin ich glücklich.
Ich werde mir deine Version des startskriptes mal anschauen und ausprobieren, das hat aber leider gerade alles relativ niedrige priorität bei mir.
Ich hoffe ja auch immer noch, daß sich ein paar Mitentwickler finden, hoffentlich Leute, die sich besser als ich mit den neutrino-Internas auskennen. Ich könnte wetten, daß es so manchem Spezialisten durchaus leicht übel werden könnte, wenn er sieht, wie ich das ganze "hingepfuscht" habe :-)

Das sind die nächsten Punkt auf meiner ToDo-Liste:
- die neutrino-Patches durchgehen und schauen, welche Teile davon gar nicht notwendig sind, oder was man sauberer machen könnte.
- die Sachen, die jetzt einfach disabled sind (plugins,...) portieren, bauen, testen, fixen.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

Was mir gerade auffällt (manchmal ganz neu auschecken hilft doch...):
nach dem Patchen muß mittels

Code: Alles auswählen

chmod +x cdk/customize-flash
dafür gesorgt werden, daß customize-flash ausführbar ist. Ansonsten sind die Konfigurationsdateien nicht in /var/etc, sondern in /etc, und dort sind sie nicht schreibbar.
dietmarw
Contributor
Beiträge: 1833
Registriert: Mittwoch 10. April 2002, 15:39

Beitrag von dietmarw »

dein diff teil fürs frontend.h schlägt nach houdinis änderung leider fehl..
(wobei seine änderung generell compiliert)

hunk #3 failed at 105
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

Nun ist es auch flash-getestet.
http://wiki.spieleck.de/attach/Neutrino ... eckout1.sh
http://wiki.spieleck.de/attach/Neutrino ... 14.diff.gz

Auschecken:

Code: Alles auswählen

./checkout1.sh neutrino-dreambox-20070514.diff.gz
Dann bauen mit:

Code: Alles auswählen

cd cdk
./prepare dm500
make dreamboximage_neutrinoroot
make rebuild-flash
make flash-compress
Das Ergebnis liegt dann in root/cdkflash/complete.img
Das auf der box per fcp nach /dev/mtd/1 flashen und alles wird gut :-)

ACHTUNG! Auf allem anderen als einer dm500s sollte auf jeden Fall geprüft werden, ob dieser Teil von cdk/root/etc/init.d/rcS korrekt ist:

Code: Alles auswählen

        # special hack, so that cdkflash/root/ dir can be used as yadd
        if [ -e /.flash ]; then
                /bin/mount -t jffs2 /dev/mtdblock/1 /var
                if [ ! -e /var/.neutrino-init ] && [ -e /init-var.tar.gz ]; then
                        echo "initializing /var..."
                        /bin/umount /var
                        /bin/eraseall /dev/mtd/1
                        /bin/mount -t jffs2 /dev/mtdblock/1 /var
                        cd /var
                        tar xvzf /init-var.tar.gz
                        touch .neutrino-init
                        cd ..
                fi
        else
                /bin/mount -t nfs 192.168.200.1:/space1/seife/src/tuxbox-dream/root/cdkflash/root/var /var -o rw,tcp,nolock
                echo "NOT A FLASHIMAGE - NOT MOUNTING /var!"
        fi
Die /dev/mtd/1 und /dev/mtdblock/1 müssen auf die /var-Partition zeigen, ansonsten könnte es ein Problem geben ;-)
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Beitrag von seife »

dietmarw hat geschrieben:dein diff teil fürs frontend.h schlägt nach houdinis änderung leider fehl..
(wobei seine änderung generell compiliert)

hunk #3 failed at 105
Ja, ist im aktuellen diff gefixt.