Date: Wed, 3 Jan 2007 00:41:11 -0800 (PST) From: Luke Dean <LukeD@pobox.com> To: freebsd-questions@freebsd.org Subject: Re: How to reset /dev/dsp ? Message-ID: <20070103002651.I20975@border.crystalsphere.multiverse> In-Reply-To: <448xgl1ndb.fsf@be-well.ilk.org> References: <20061230224805.U7072@border.crystalsphere.multiverse> <448xgl1ndb.fsf@be-well.ilk.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 2 Jan 2007, Lowell Gilbert wrote: > Luke Dean <LukeD@pobox.com> writes: > >> I'm running FreeBSD 6.1. >> >> My sound device shows up like this in my dmesg: >> pcm0: <Intel ICH5 (82801EB)> port 0xd800-0xd8ff,0xdc00-0xdc3f mem >> 0xfc001000-0xfc0011ff,0xfc002000-0xfc0020ff irq 17 at device 31.5 on >> pci0 >> pcm0: primary codec not ready! >> pcm0: <Avance Logic ALC658 AC97 Codec> >> >> My sound driver is compiled into the kernel: >> device sound >> device snd_ich >> >> I've got a java application that I run through >> diablo-jdk-1.5.0.07.01_1 that uses sound. It's a game. Partway >> through the game, the sound stops working. The people who make the >> game have been aware of the problem for many months, but don't >> understand what to do about it. >> Okay, I can accept that. >> >> What I can't accept is that this java application breaks the sound in >> such a way that NOTHING can play sound anymore until I reboot the >> machine! >> >> If I attempt to play a movie with mplayer after the game has broken >> the sound, it says: >> [AO OSS] audio_setup: Can't open audio device /dev/dsp: No such file >> or directory >> >> However, the dsp device still exists in /dev: >> [0:/dev> ll dsp* >> crw-rw-rw- 1 root wheel - 0, 51 Dec 29 21:36 dsp0.0 >> crw-rw-rw- 1 root wheel - 0, 54 Dec 29 21:37 dsp0.1 >> crw-rw-rw- 1 root wheel - 0, 52 Dec 29 19:24 dspW0.0 >> crw-rw-rw- 1 root wheel - 0, 55 Dec 29 19:24 dspW0.1 >> crw-rw-rw- 1 root wheel - 0, 57 Dec 29 19:24 dspr0.1 >> >> The sndstat device doesn't show any problem, if I'm reading the output >> right: >> [0:/dev> cat /dev/sndstat >> FreeBSD Audio Driver (newpcm) >> Installed devices: >> pcm0: <Intel ICH5 (82801EB)> at io 0xfc001000, 0xfc002000 irq 17 bufsz >> 16384 (1p/1r/0v channels duplex default) >> >> Is there anything I can do short of rebooting the machine to get my >> sound working when this happens? I thought maybe there was something >> I could do with devd or devctl to reset the device, but I can't figure >> out how to do that. I'm not even sure how to "see" the problem except >> to attempt to play a sound. > > Well, it's hard to say, because the hardware could be misbehaving, in > which case the software may not know what's going on. It might be > interesting to see whether fstat(1) sees anything holding the dsp > devices. You could also try using vchans, which would (in theory) let > you access the hardware from another device node after the first one > hangs. fstat reveals that nothing is holding the dsp devices after the sound breaks. I read a bit about vchans, then set up a few with "sysctl hw.snd.pcm0.vchans=4". I had to reboot first, because once the sound locks up, attempting to adjust this sysctl produces a "device busy" error. This produced some new dsp devices in /dev. I ran the java app again, broke the sound, and found that all of the vchans produce the same "device busy" error when I use mplayer switches to specify which vchan to use. (I was using commands like "mplayer -ao oss:/dev/dsp0.1 blah.avi" to test this.) Whatever this java app is doing to break the sound breaks it for all device nodes. Thanks for the idea anyway. I learned something.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070103002651.I20975>