/dev/speaker broken in 5.x? (fwd)

Ian Smith smithi at nimnet.asn.au
Fri Apr 28 05:36:39 UTC 2006


If this is not an appropriate topic for -multimedia, can someone please
at least suggest where it might be on topic?  Is anyone able to confirm
(or otherwise) the behaviour demonstrated below on a 5.x or 6.x system? 

Cheers, Ian

---------- Forwarded message ----------
Date: Mon, 24 Apr 2006 15:53:58 +1000
From: Ian Smith <smithi at nimnet.asn.au>
To: freebsd-multimedia at freebsd.org
Subject: /dev/speaker broken in 5.x?

Hoping it's not disrespectful to mention /dev/speaker in -multimedia :)

but I've long found it very handy on the laptop for low-overhead sharp 
little sounds indicating battery charge state changes, generated by apmd 
events as per the examples in apmd.conf.

This always worked fine in 4.5, and as far as I can tell from CVS, is 
unchanged in 4-STABLE.  Since installing 5.4, I get the following always 
repeatable symptoms when using the speaker device to play tunes, shown 
here as root but it's just the same when run as a (wheel) user:

paqi# echo "T250L8CE-GE-C" > /dev/speaker  # works fine the 1st time ..
paqi# fstat | grep speaker                 # but leaves speaker open ..
root     csh         1919    4 /dev         72 crw-rw----  speaker  w
root     fstat       1918    4 /dev         72 crw-rw----  speaker  w
root     csh         1116    4 /dev         72 crw-rw----  speaker  w
paqi# echo "T250L8CE-GE-C" > /dev/speaker  # no sound every 2nd time ..
/dev/speaker: Device busy.
paqi# fstat | grep speaker                 # but frees the device again,
paqi# echo "T250L8CE-GE-C" > /dev/speaker  # to work again next time ..

So I'm trying to figure out what's changed from 4.5 to 5.4 at
http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/i386/isa/Attic/spkr.c.diff?hideattic=0&r1=1.45%3ARELENG_4_5_0_RELEASE&tr1=1.1&r2=1.66.2.1%3ARELENG_5_4_0_RELEASE&tr2=1.69.2.1

Apart from fairly obvious changes for devfs and such, the addition of 
PC98 code and coding major functions as macros, I can't spot what might 
cause the device to be left open after playing a string, but assume 
there's some problem with spkrclose(), or it's not getting called at the 
end of the playstring (?), or maybe the fairly extensive looking updates 
to clock.c re TIMER2 have something to do with it .. it's way beyond me.

FWIW, spkrtest(8) works fine (as long as the device was left in closed 
state, as above) to play one or multiple example tunes.

I've searched the list and PRs as best I can, finding no mention of such 
a problem.  There has been only one further (apparently purely cosmetic) 
change to spkr.c at 6-STABLE since 5.4.

Does anyone have any ideas, or interest in this lowly 'legacy' function 
working properly again?

Cheers, Ian
_______________________________________________
freebsd-multimedia at freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-multimedia
To unsubscribe, send any mail to "freebsd-multimedia-unsubscribe at freebsd.org"



More information about the freebsd-multimedia mailing list