/dev/dsp: Softphones fuer VoIP geben keinen Ton

Jan 'RedBully' Seiffert redbully at cc.fh-luh.de
Mon Aug 15 14:06:45 CEST 2005


Hauke Joachim Zuehl schrieb:
> Hi :)
> 
Ho,

> Nach laengerer Zeit der Abwesenheit, melde ich mich gleich mal mit einer Frage 
> zu einem merkwuerdigen Phaenomen zurueck:
> Per Softphone (KPhone, X-Lite) will ich telefonieren. Dummerweise hoere ich 
> aus meinen Lautsprechern keinen Ton :(
> 
das du telefonieren willst ist dabei mal ganz unerheblich ...

> Geraet ist /dev/dsp, Gruppenzugehoerigkeit ist in Ordnung, wie mplayer beweist 
> (auch xmms brummt):
... wenn anscheinend einfach nen Sound abspielen nicht mal geht.

> hauke at fafnir [xten-xlite] >>lsof /dev/dsp
> COMMAND  PID  USER   FD   TYPE DEVICE SIZE   NODE NAME
> mplayer 8737 hauke    5w   CHR   14,3      127792 /dev/dsp
> 
Hmmmm,
/dev/dsp, OpenSoundSystem o. Emulation, hmmm.

Geh mal sicher das *keine* Software versucht drauf zuzugreifen
(Soundserver, Daemons, ach, einfach alles), und dann der klassische "cat
sounddatei.wav > /dev/dsp", wenn dann keine Musik zu heoren ist, ist
einfach dein Soundtreiber nicht richtig am laufen.
Es gibt zwar noch den sonderfall das du ALSA hast und die OSS-Emulation
nicht geht, aber mit kernel 2.4.bla gehe ich jetzt mal nicht von ALSA
aus (du hast ja leider nicht geschrieben, welche Soundhardware du dein
eigen nennst und/oder was die unterliegende Treiberarchitektur ist).

> Dann habe ich auf X-Lite mal einen strace gemacht nud folgender Abschnitt ist 
> mir aufgefallen:
> open("/dev/sndstat", O_RDONLY)          = -1 ENODEV (No such device)
> access("/dev/dsp", R_OK|W_OK)           = 0
> rt_sigaction(SIGALRM, {0x4002e7a0, [ALRM], SA_RESTORER|SA_RESTART, 
> 0x407506f8},
> {SIG_DFL}, 8) = 0
> rt_sigprocmask(SIG_BLOCK, NULL, [RTMIN], 8) = 0
> alarm(1)                                = 0
> open("/dev/dsp", O_RDWR|O_NONBLOCK)     = 6
Jo, ein /dev/dsp findet er und kann es auch oeffnen...

> alarm(0)                                = 1
> ioctl(6, SOUND_PCM_READ_CHANNELS, 0xbffff40c) = 0
> ioctl(6, SOUND_PCM_READ_CHANNELS, 0xbffff40c) = 0
> ioctl(6, SNDCTL_DSP_GETCAPS, 0xbffff408) = 0
> ioctl(6, SNDCTL_DSP_GETFMTS, 0xbffff408) = 0
> ioctl(6, SNDCTL_DSP_GETTRIGGER, 0xbffff408) = 0
> ioctl(6, SNDCTL_DSP_SPEED or SOUND_PCM_READ_RATE, 0xbffff404) = 0
> ioctl(6, SNDCTL_DSP_SPEED or SOUND_PCM_READ_RATE, 0xbffff404) = 0
> ioctl(6, SNDCTL_DSP_SPEED or SOUND_PCM_READ_RATE, 0xbffff404) = 0
> ioctl(6, SNDCTL_DSP_SPEED or SOUND_PCM_READ_RATE, 0xbffff404) = 0
Tja, schade.                                           ^
Die ioctl waren zwar erfolgreich, aber das Ergebnis    |
steht da ----------------------------------------------| an der Adresse,
nicht im Straceoutput...

> close(6)                                = 0
Und anscheinend war das nicht zufriedenstellend was die ioctl's
geliefert haben, denn nun machen wir /dev/dsp wieder zu...

> access("/dev/dsp0", R_OK|W_OK)          = -1 ENOENT (No such file or 
> directory)
> access("/dev/sound/dsp0", R_OK|W_OK)    = -1 ENOENT (No such file or 
> directory)
Suchen wir mal noch andere /dev/dsp...

> access("/dev/dsp1", R_OK|W_OK)          = 0
Auf /dev/dsp1 koennen wir zugreifen...

> rt_sigaction(SIGALRM, {0x4002e7a0, [ALRM], SA_RESTORER|SA_RESTART, 
> 0x407506f8},
> {0x4002e7a0, [ALRM], SA_RESTORER|SA_RESTART, 0x407506f8}, 8) = 0
> rt_sigprocmask(SIG_BLOCK, NULL, [RTMIN], 8) = 0
> alarm(1)                                = 0
> open("/dev/dsp1", O_RDWR|O_NONBLOCK)    = -1 ENODEV (No such device)
... koennen es aber nicht oeffnen da es nicht existiert?

[snip - noch mehr /dev/dspX die wir testen]
> pipe([6, 7])                            = 0
> 
> Also /dev/sndstat fehlt. Braucht man das dringend, wenn ja: Wie sind die 
> Parameter zur Erzeugung des Geraetes?
> 
> Mache ich unter KPhone / X-Lite ein lsof /dev/dsp kommt nix an und obige ioctl 
> Ergebnisse machen mir auch ein wenig Sorge.
> 
Check simple things first.
Erstmal gilt es, ueberhaupt nen Ton raus zu bekommen, je weniger
Stoerfaktoren (X, Desktop, Soundserver, Hintergrundapps), desto besser.
Also irgendwas in die Richtung
"einfaches_abspielprogramm <funktionierendes_soundfile>" in einer shell,
in nem niedrigen runlevel (kein X).
Dann langsam hocharbeiten ;).

> Ach ja:
> System ist ein Debian Sarge mit Kern 2.4.21.
> 
Achja:
hast du mal einen Blick in deinen (Software-) Mixer geworfen, ob die
Kanaele ueberhaupt aufgezogen sind?

> Danke schon mal und Gruss,
> Hauke
Gruss
	Jan

-- 
Thus spake the master programmer:
"Though a program be but three lines long,
someday it will have to be maintained."



More information about the Linux mailing list