ESD en een terugkerend proces

Dennis van Dok dvandok op quicknet.nl
Wo Sep 20 23:10:11 UTC 2006


adrien wrote:
> Op wo, 20-09-2006 te 21:31 +0200, schreef Dennis van Dok:
>
>   
>> Log eens uit, ga naar een console (Ctrl-Alt-F1) en log in als root (of 
>> als jezelf en dan doe je sudo su).
>>     
>
> Was niet een succes, want als de alsamixer gestart was had ik geen
> toegang meer tot de prompt. En alsamixer afsluiten met ESC gaf ook geen
> prompt.
>   
Dat is raar. Misschien is de console in de war (zwart op zwart)? Het is 
onwaarschijnlijk dat er
echt iets hangt. Tik maar (blind) <enter> <enter> reset <enter> exit. 
Als dat nog niet werkt Alt-F2 om een ander console te vinden (je vindt 
je X sessie onder Alt-F7).
> Als er dat cat < /dev/random > /dev/dsp (na een herstart en Ctrl-Alt-F1
> doen) gegeven werd, was de pc dood. Geen prompt, geen geluid, enkel een
> zwart scherm.
>   
Ctrl-C brengt je terug (Algemene tip: hiermee stuur je het hangende 
voorgrondproces een onderbrekingssignaal). Helaas heb je dit proces 
laten hangen (zoals verderop blijkt) en dat houd het device bezet.

Eerlijk gezegd heb ik gegokt wat het juiste device was, en dat random 
data geluid zou produceren.
Ik heb het net even geprobeerd, en het bleek niet te werken! Wat wel 
geluid (herrie) gaf was
cat < /usr/share/sounds/startup.wav > /dev/dsp.


> Dus heb ik de alsamixer gestart in een terminal venster.
> Zie: http://users.edpnet.be/verlee/ftp/proces1.png als leek kan ik er
> weinig van zeggen.
>   
Dat ziet er normaal uit.
>   
>> cat < /dev/random > /dev/dsp
>>     
>
> In een terminalvenster geeft dit:
> root op ubuntu:/home/adrien# cat < /dev/random > /dev/dsp
> bash: /dev/dsp: Apparaat of bron bezig
>   
Allicht, want zoals zal blijken had je de eerdere poging nog draaien!

>> Dat je twee esd processen ziet is op zich niet vreemd; er kan 
>> automatisch een extra daemon gestart worden. Zie /etc/esound/esd.conf.
>>     
>
> Dit staat er:
>   
[...]
Dat is prima. Heb ik ook.

> Tja... Nu staat er geen esd in het processbeheer! Maar lsof /dev/dsp
> geeft dit:
> root op ubuntu:/home/adrien# lsof /dev/dsp
> COMMAND  PID   USER   FD   TYPE DEVICE SIZE NODE NAME
> cat     4975 adrien    1w   CHR   14,3      9061 /dev/dsp
>
>   
Dit is dus de eerste 'cat'. Deze had je beter even kunnen killen. Hij 
staat nog steeds braaf /dev/random naar /dev/dsp te pompen, maar het 
heeft wellicht een te hoge frequentie om als 'ruis' te dienen.

>> met pstree -a?
>>     
>
> Zie er geen esd tussen staan. Wel iets van een mixer, zie:
> http://users.edpnet.be/verlee/ftp/pstree.txt
>   
Da's je mixer applet, ofwel het kleine volumeregelaartje dat ik in je 
andere schermafdruk zie.

>> probeer eens (als root):
>> lsof /dev/dsp
>>     
>
> Zie hierboven
>
>   
>> om te zien welke processen geluid proberen te spelen. Probeer dan ook eens
>> lsof -p 12345
>> (waar 12345 het PID is van het esd proces).
>>     
>
> asjeblief:
> root op ubuntu:/home/adrien# lsof -p 4975
> COMMAND  PID   USER   FD   TYPE DEVICE    SIZE    NODE NAME
> cat     4975 adrien  cwd    DIR  254,0    4096 6635522 /home/adrien
> cat     4975 adrien  rtd    DIR  254,0    4096       2 /
> cat     4975 adrien  txt    REG  254,0   16736 8863803 /bin/cat
>   
[...]
> cat     4975 adrien    0r   CHR    1,8            2864 /dev/random
> cat     4975 adrien    1w   CHR   14,3            9061 /dev/dsp
> cat     4975 adrien    2u   CHR    4,1            1337 /dev/tty1
>   
Je ziet dus welke devices 'cat' nog open heeft! Hij draait nog op tty1 
(onder Ctrl-Alt-F1).

Goed, dit experiment was niet zo'n succes. Maar we geven het nog niet 
op! Eerst moet je dus die hangende cat even killen. Ik heb voor alle 
zekerheid even bij mezelf gekeken hoe het nu werkt.

Als ik inlog heb it één esd proces; deze heeft alleen een paar sockets 
open maar geen geluid devices. Zodra ik een geluid ga spelen 
(bijvoorbeeld een mp3'tje in XMMS met de ESound plugin als uitvoer) dan 
krijg ik er een tweede esd bij die wel een device pakt.

% lsof -p 7707
COMMAND  PID   USER   FD   TYPE     DEVICE    SIZE    NODE NAME
esd     7707 dennis  cwd    DIR      253,0    8192   32065 /home/dennis
esd     7707 dennis  rtd    DIR        3,9    4096       2 /
esd     7707 dennis  txt    REG        3,6   59500  177989 /usr/bin/esd
esd     7707 dennis  mem    REG        0,0               0 [heap] (stat: 
No such file or directory)
esd     7707 dennis  mem    CHR     116,16            8956 /dev/snd/pcmC0D0p
(irrelevante regels weggelaten)
esd     7707 dennis   24u  unix 0xcaebd480           22786 
/tmp/alsa-dmix-7481-1158790723-748227
esd     7707 dennis   25u   CHR     116,16            8956 /dev/snd/pcmC0D0p

Aha! Het geluidsdevice is dus /dev/snd/pcmC0D0p!

Maar goed, daar heb je nog niet veel aan, want je wilt weten waarom je 
geen geluid hebt. Welnu, als je zeker weet dat je muziekspeler loopt 
(bij mij zie ik de klok van mijn mp3-tje meelopen) en dus in ieder geval 
doet alsof hij muziek speelt, dan hoeven we alleen nog maar uit te 
vinden waar die muziek dan blijft.

Geef maar eens de uitvoer van
cat /proc/asound/cards
Je hebt toch hopelijk maar 1 geluidskaart?

Nu teruglezend in de historie van je probleem: je hebt toch niet zitten 
rommelen aan asound.conf, esd.conf en zo? Het moet gewoon uit de doos 
werken.

Kun je nog eens bevestigen dat het niet een volumeregeling is die een 
kanaal uitgezet heeft?


Als je geluid (lawaai) kan horen door een wav bestand in /dev/dsp te 
gooien is er nog hoop.

Dennis





Meer informatie over de Ubuntu-NL maillijst