Sound Server für die Dbox

kruemel666
Interessierter
Interessierter
Beiträge: 33
Registriert: Mittwoch 24. Oktober 2007, 11:07

Sound Server für die Dbox

Beitrag von kruemel666 »

Hallo zusammen,

ich hatte die Idee ob es nicht möglich ist die Dbox quasi als Remote Lautsprecher für den PC zu benutzen nach dem Vorbild von Airport Express von Apple. Nach etwas googeln bin ich auf Pulseaudio gestoßen. Das ist ein Sound Server welcher Verbindungen annimmt und diese lokal ausgiebt. Pulseaudio ist sowohl für Windows als auch für Linux zu haben und unter der GPL veröffentlicht.

So nun zum Dbox Teil. Zum einen ist es ohne weiteres möglich den Sourcecode einfach durch den Cross Compiler zu jagen? Zum zweiten wie siehts in der Box mit der Hardware aus, das Teil muß das ja auch irgendwie ausgeben können. Allerdings denke ich mir dass dies bereits realisiert wurde da der Audioplayer ja auch funktioniert und auch Streams annehmen kann.

Also muß das ganze meiner Meinung nach nur compiliert und dann richtig konfiguriert werden. Am schönsten wäre das ganze dann natürlich wenn man auf der Box nen Punkt hat "Soundserver starten" oder sowas. Tv Bild und Audio wird dann ausgeblendet wie beim Audioplayer und der Pulseaudio wird gestartet.

Schonmal vielen Dank für die Hilfe

LG
Phil
PT-1
Moderator english
Beiträge: 2458
Registriert: Donnerstag 20. Dezember 2001, 00:00

Re: Sound Server für die Dbox

Beitrag von PT-1 »

Schon mal Upnp versucht ?
kruemel666
Interessierter
Interessierter
Beiträge: 33
Registriert: Mittwoch 24. Oktober 2007, 11:07

Re: Sound Server für die Dbox

Beitrag von kruemel666 »

Hi,

ja UPNP kenne ich. Mir gehts aber darum das ich für diese Geschichte an der Dbox so gut wie nix machen muß. Über die Fernbedienung das Teil Starten und dann gibt der alles wieder was auf Port 4713 reinkommt. Und da das System ähnlich wie UPNP arbeitet wird die Box im Netzwerk von jedem Pulseaudio fähigen Gerät gefunden ohne dabei etwas konfigurieren zu müßen. Bei UPNP muß ich den Fernseher bzw. Beamer einschalten, bei der Pulseadio Lösung nicht.

LG
Phil
PT-1
Moderator english
Beiträge: 2458
Registriert: Donnerstag 20. Dezember 2001, 00:00

Re: Sound Server für die Dbox

Beitrag von PT-1 »

Upnp sollte inzwischen eigentlich auch via LCD zu bedienen sein
kruemel666
Interessierter
Interessierter
Beiträge: 33
Registriert: Mittwoch 24. Oktober 2007, 11:07

Re: Sound Server für die Dbox

Beitrag von kruemel666 »

PT-1 hat geschrieben:Upnp sollte inzwischen eigentlich auch via LCD zu bedienen sein
Das mag vielleicht sein. Allerdings ist das wesentlich mehr aufwand weil brauch ich dann einen UPNP Server der Files bereitstellt und diese gegebenenfalls auch noch Transkodiert. Das war aber garnicht die Fragestellung.

Ich will die Dbox als Receiver für Audio over IP benutzen und dafür ist Pulseaudio oder ESD prädestiniert. Darum ist meine Frage ob ich den Quelltext einfach so durch den Cross-Compiler jagen kann und zum zweiten wie die Config aufgebaut sein muß auf um auf die Hardware der Box (in dem Fall Audio Ausgang) zugreifen zu können.

LG
Phil
PT-1
Moderator english
Beiträge: 2458
Registriert: Donnerstag 20. Dezember 2001, 00:00

Re: Sound Server für die Dbox

Beitrag von PT-1 »

rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 13:05

Re: Sound Server für die Dbox

Beitrag von rhabarber1848 »

kruemel666 hat geschrieben:Darum ist meine Frage ob ich den Quelltext einfach so durch den Cross-Compiler jagen kann
Ich denke, dass dürfte gehen. Ich habe damit mal angefangen, die Libs zu kompilieren,
die Pulseaudio braucht, das klappt schon ganz gut. Vielleicht komme ich heute noch dazu,
Pulseaudio selber zu kompilieren.

Als Soundinterface müsste /dev/sound/dsp zu nutzen sein:
crw------- 1 root root 14, 3 Jan 1 1970 /dev/sound/dsp
Hier dürfte das OSS-Modul von Pulseaudio zum Tragen kommen, allerdings bräuchte
ich in diesem Punkt etwas Hilfe, da ich Pulseaudio noch nie genutzt habe.
kruemel666
Interessierter
Interessierter
Beiträge: 33
Registriert: Mittwoch 24. Oktober 2007, 11:07

Re: Sound Server für die Dbox

Beitrag von kruemel666 »

Hi,

na das klingt doch schonmal echt fantastisch!!

Ich hab das ganze mit Server und Client mal auf 2 Linux Laptops nachgestellt und es funktioniert echt super. Die Config kann ich dir bereitstellen da von der Standard nur 3 Zeilen abgeändert werden müßen um den Netzwerkzugriff zu erlauben.

Das mit dem OSS Device muß ich mir selbst erst ansehen da auf den Laptops Alsa läuft. Allerdings ist die Doku und das Wiki von Pulseaudio echt klasse.

LG
Phil

Edit:

Ein Blick in die default.pa von PulseAudio gibt das her:

Code: Alles auswählen

### Automatically load driver modules depending on the hardware available
load-module module-hal-detect
Nun weiß ich aber nicht ob diese Funktion auf der Box funktioniert. Ansonsten kann man in dieser Datei die OSS Module von Hand nachladen.

Code: Alles auswählen

load-module module-oss device="/dev/dsp" sink_name=output source_name=input
Nun kann es sein das man die Module beim ./configure mit angeben muß.
kruemel666
Interessierter
Interessierter
Beiträge: 33
Registriert: Mittwoch 24. Oktober 2007, 11:07

Re: Sound Server für die Dbox

Beitrag von kruemel666 »

So, hier noch die 3 Zeilen für den Netzwerk Zugriff:

Code: Alles auswählen

load-module module-esound-protocol-tcp auth-anonymous=1
load-module module-native-protocol-tcp auth-anonymous=1
load-module module-zeroconf-publish
LG
Phil
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 13:05

Re: Sound Server für die Dbox

Beitrag von rhabarber1848 »

kruemel666 hat geschrieben:Ansonsten kann man in dieser Datei die OSS Module von Hand nachladen.

Code: Alles auswählen

load-module module-oss device="/dev/dsp" sink_name=output source_name=input
Habe ich gemacht, es kommt diese Fehlermeldung auf der Dbox:

Code: Alles auswählen

# /bin/pulseaudio --system
W: main.c: Running in system mode, but --disallow-exit not set!
W: main.c: Running in system mode, but --disallow-module-loading not set!
N: main.c: Running in system mode, forcibly disabling SHM mode!
N: main.c: Running in system mode, forcibly disabling exit idle time!
E: oss-util.c: SNDCTL_DSP_GETCAPS: Operation not permitted
E: module.c: Failed to load  module "module-oss" (argument: "device="/dev/sound/dsp" sink_name=output source_name=input"): initialization failed.
E: main.c: Module load failed.
E: main.c: Failed to initialize daemon.
E: shm.c: Assertion 'm->ptr' failed at pulsecore/shm.c:182, function pa_shm_free(). Aborting.
Aborted
pulseaudio-0.9.12/src/modules/oss-util.c möchte das Sounddevice so öffnen:

Code: Alles auswählen

            ioctl(fd, SNDCTL_DSP_SETDUPLEX, 0);

            if (ioctl(fd, SNDCTL_DSP_GETCAPS, pcaps) < 0) {
                pa_log("SNDCTL_DSP_GETCAPS: %s", pa_cstrerror(errno));
                goto fail;
            }
nur unterstützt der Kernel 2.4-Treiber driver/dvb/drivers/media/dvb/aviaavia_gt_oss.c das nicht:

Code: Alles auswählen

	case SNDCTL_DSP_GETCAPS:
		printk("IOC: 10\n");
		return -1;
...
	case SNDCTL_DSP_SETDUPLEX:
		printk("IOC: 17\n");
		return -1;
Analog dazu die Meldungen aus dem seriellen Dboxlog:
IOC: 17
IOC: 10
beim Startversuch des pulseaudio-Daemons auf der Dbox.

An dieser Stelle bin ich mit meinem Latein leider am Ende. Vorschläge?
kruemel666
Interessierter
Interessierter
Beiträge: 33
Registriert: Mittwoch 24. Oktober 2007, 11:07

Re: Sound Server für die Dbox

Beitrag von kruemel666 »

Hi,

erstmal danke für die Klasse Arbeit!!
So tief steck ich allerdings in der Materie nicht drin. Ich werde mit deinen Erkenntnissen mal einen Thread im Pulseaudio Forum aufmachen. Oder vielleicht find ich auch in deren Developer Foren etwas.

LG
Phil
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 13:05

Re: Sound Server für die Dbox

Beitrag von rhabarber1848 »

Hier der Patch: pulseaudio.diff

Einige Kommentare zum Inhalt des Patches:
- libtool >= 1.5.24 wird benötigt, dies gilt nur innerhalb des CDK, die libtool-Version des Hostsystems hat damit nichts zu tun.
- libltdl aus dem libtool-Paket wird benötigt, nicht nur /bin/libtool allein, "make xfsprogs" nicht getestet
- Erklärung für libatomic_ops.diff
- pulseaudio.diff - shm.c: Lt. strace schlägt mmap fehl, der Patch ist ein ugly workaround ;)
- pulseaudio.diff - Makefile.in: Unwichtige Datei src/tests/rtstutter.c lässt sich wegen fehlenden NPTL-Supports nicht komplieren
- Update 20.09.2008: avia_gt_oss.c-Patches integriert
- Update 20.09.2008: Pulseaudio belegt nunmehr noch 16MB per mmap(), nicht mehr 64MB, Dbox hat nicht so viel RAM...
- Update 20.09.2008: Pulseaudio-Config an Dbox angepasst, OSS-Treiber wird korrekt geladen
- Update 20.09.2008: /dev/shm wird mit tmpfs gemountet für mmap-Support

Momentan wird ein yadd benötigt um Pulseaudio zu starten, Flash-Support kommt später,
falls Pulseaudio überhaupt auf der Dbox funktioniert.

So funktionierts:
- aktuellen CVS-checkout holen
- Patch einspielen
- ./configure + normale Optionen
- make yadd-none
- make pulseaudio

Yadd booten. yadd-none habe ich gewählt, damit kein Programm das Sounddevice belegen kann.

Dann pulseaudio starten

Code: Alles auswählen

# pulseaudio --system
Zuletzt geändert von rhabarber1848 am Montag 6. Oktober 2008, 10:20, insgesamt 3-mal geändert.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 13:05

Re: Sound Server für die Dbox

Beitrag von rhabarber1848 »

Beitrag entfernt, Soundtreiber-Patches nun im Hauptpatch enthalten.
Zuletzt geändert von rhabarber1848 am Samstag 20. September 2008, 13:39, insgesamt 2-mal geändert.
kruemel666
Interessierter
Interessierter
Beiträge: 33
Registriert: Mittwoch 24. Oktober 2007, 11:07

Re: Sound Server für die Dbox

Beitrag von kruemel666 »

Du bist mal echt heftig! Mein Kompliment zu dieser grandiosen Arbeit. Da ich noch wirklich ein absoluter N00b bin was das Dbox Kompilieren angeht werd ich mir jetzt mal das stinky linux holen und das CDK bauen. Und dann natürlich auch gleich deine Patches testen.

LG
Phil
kruemel666
Interessierter
Interessierter
Beiträge: 33
Registriert: Mittwoch 24. Oktober 2007, 11:07

Re: Sound Server für die Dbox

Beitrag von kruemel666 »

Hi,

sorry wenn das jetzt evtl ne dumme frage is, aber aus google und Tuxbox Wiki werd ich ned schlau. Ich bekomm das mit den Patches nicht gebacken. Ich hab das CVS wie im Tuxbox Wiki beschrieben ausgecheckt:

Code: Alles auswählen

cd ~/tuxbox-cvs
set CVS_RSH=ssh && cvs -d anoncvs@cvs.tuxbox.org:/cvs/tuxbox -z3 co -P .
das hat auch funktioniert, jetzt wollte ich die patches einspielen und das sieht so aus:

Code: Alles auswählen

patch -p1 --verbose -i /home/slightly/Desktop/pulseaudio.diff

Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff -uNr ../cvs/cdk/configure.ac ./cdk/configure.ac
|--- ../cvs/cdk/configure.ac    2008-08-16 13:05:10.000000000 +0200
|+++ ./cdk/configure.ac 2008-09-18 09:56:42.000000000 +0200
--------------------------
Patching file cdk/configure.ac using Plan A...
Hunk #1 succeeded at 505 (offset -137 lines).
Hmm...  The next patch looks like a unified diff to me...
can't find file to patch at input line 26
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff -uNr ../cvs/cdk/make/contrib-libs.mk ./cdk/make/contrib-libs.mk
|--- ../cvs/cdk/make/contrib-libs.mk    2007-11-19 20:01:07.000000000 +0100
|+++ ./cdk/make/contrib-libs.mk 2008-09-18 17:14:33.000000000 +0200
--------------------------
File to patch:
Ich finde das File aber auch niergends. Ausgeführt hab ich das ganze im Tuxbox-CVS Ordner den ich angelegt habe und in dem auch der Checkout stattfand. Entweder steh ich jetzt total aufm Schlauch oder du machst den CVS Checkout anders als ich.

LG
Phil
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 13:05

Re: Sound Server für die Dbox

Beitrag von rhabarber1848 »

kruemel666 hat geschrieben:oder du machst den CVS Checkout anders als ich.
Ja, ich nutze den newmake-branch:

Code: Alles auswählen

cvs -d anoncvs@cvs.tuxbox.org:/cvs/tuxbox -z9 co -f -r newmake -P .
PS: Ich habe den o.g. Patch für avia_gt_oss.c aktualisiert, damit kommen keine
Fehlermeldungen beim Initialisieren des Soundinterfaces mehr. Allerdings kommt
immer noch ein Segfault beim mmap-Befehl. Leider weiss ich hier nicht mehr weiter.

Zum Debuggen auf der mit Yadd gebooteten Dbox kannst Du auf Deinem Kompilierhost
folgende make-targets nutzen: "make strace gdb"
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 13:05

Re: Sound Server für die Dbox

Beitrag von rhabarber1848 »

rhabarber1848 hat geschrieben:Hier der Patch: pulseaudio.diff
Patch aktualisiert, Verbindung zwischen Dbox und PulseAudio Manager auf Workstation
hat bereits funktioniert. Im Moment teste ich noch einen Kompilierdurchlauf, dann probiere
ich, ob der PulseAudio-Daemon Sound auf der Dbox ausgeben kann.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 13:05

Re: Sound Server für die Dbox

Beitrag von rhabarber1848 »

Wenn ich Sound abspielen will, kommt nun
E: module-oss.c: Assertion 'u->mixer_devmask & ((1 << 0)|(1 << 4))' failed at modules/module-oss.c:786, function sink_get_volume(). Aborting.
Aborted
:evil: :dash:
prodigy7
Erleuchteter
Erleuchteter
Beiträge: 595
Registriert: Donnerstag 1. Januar 2004, 16:59

Re: Sound Server für die Dbox

Beitrag von prodigy7 »

Also ich muss sagen, dass das eine sehr interessante Sache ist! Wenn das ausgereift ist, würde es mich freuen, wenn es ins CVS wandern würde.
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Re: Sound Server für die Dbox

Beitrag von Houdini »

Beschreib doch bitte mal wo der configfile (default.pa?) hin muss,
was in diesem steht
und was du machst um pulseaudio zu testen

Gruß
Houdini
kruemel666
Interessierter
Interessierter
Beiträge: 33
Registriert: Mittwoch 24. Oktober 2007, 11:07

Re: Sound Server für die Dbox

Beitrag von kruemel666 »

Hi,

also ich muß schon sagen du hängst dich da wirklich rein. Echt Klasse von dir. Vielen Dank!!!!
E: module-oss.c: Assertion 'u->mixer_devmask & ((1 << 0)|(1 << 4))' failed at modules/module-oss.c:786, function sink_get_volume(). Aborting.
Aborted
könnte man die funktion für das get_volume nicht so umschreiben das dieses von neutrino kommt?? Die Volume steuerung kann man doch auch übers Terminal machen wenn ich mich jetzt nicht täusche. Und man kann die aktuelle Lautstärke auch auslesen damit. Könnte man diese Funktion an dieser stelle nicht einfach nutzen?? Nur so ne Idee.

LG
Phil
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 13:05

Re: Sound Server für die Dbox

Beitrag von rhabarber1848 »

Houdini hat geschrieben:Beschreib doch bitte mal wo der configfile (default.pa?) hin muss,
/var/etc/pulse/system.pa ist die Konfigurationsdatei, da pulseaudio mit --system gestartet
wird. Die Dbox hat keine User, pulseaudio läuft als root und als systemweiter Dienst.
Houdini hat geschrieben:was in diesem steht
Defaults minus HAL + OSS-Modul, wird alles durch meinen Patch erzeugt.
Houdini hat geschrieben:und was du machst um pulseaudio zu testen
/bin/pulseaudio --system --verbose --log-level=4

Das Problem ist, dass in driver/dvb/drivers/media/dvb/avia/avia_gt_oss.c
nicht alle notwendigen Funktionen implementiert sind.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 13:05

Re: Sound Server für die Dbox

Beitrag von rhabarber1848 »

kruemel666 hat geschrieben:könnte man die funktion für das get_volume nicht so umschreiben das dieses von neutrino kommt??
Meine C-Kenntnisse sind sehr eingeschränkt, das von Dir vorgeschlagene kann ich nicht umsetzen.
kruemel666
Interessierter
Interessierter
Beiträge: 33
Registriert: Mittwoch 24. Oktober 2007, 11:07

Re: Sound Server für die Dbox

Beitrag von kruemel666 »

Hi
kruemel666 hat geschrieben:
könnte man die funktion für das get_volume nicht so umschreiben das dieses von neutrino kommt??
Meine C-Kenntnisse sind sehr eingeschränkt, das von Dir vorgeschlagene kann ich nicht umsetzen.
meine C Kenntnisse sind auch nicht besser da ich Beruflich auf der VB Schiene bin. Aber ich werd mir das ganze mal anschaun ob im Audioplayer nicht sowas drin ist. Ansonsten arbeite ich in ner Großen Firma, da könnt ich sicher den ein oder anderen C Programmierer auftreiben.

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

Re: Sound Server für die Dbox

Beitrag von seife »

Ich habe den code nicht angeschaut, aber vermutlich könnte man in dieser Funktion einfach mal einen default-Wert zurückgeben "und gut ist :)" - für erste Tests reicht das, wenn alles läuft kann man das später fixen.