Problems recording sound in FreeBSD 5.1

Stuart Barkley stuartb at 4gh.net
Mon Jul 14 22:36:57 PDT 2003


On Mon, 14 Jul 2003 at 22:52 +0200, Joachim Strömbergson wrote:

> Hardware wise, I've got an Asus A7V8X motherboard with built in AC97
> sound. I'm running FreeBSD 5.1 and KDE3.
>
> Is there ar simple way to directly verify that the mic input works?
> Has anybody experienced similar problems? Anybody knows what might
> be the problem?

You should be able to bring up the microphone volume in the mixer and
hear it in your speakers or headphones:

    % mixer mic 100
    Setting the mixer mic to 100:100.
    %

For recording from the microphone, I normally select the recording
source with mixer and set the record level with the rec device:

    % mixer =rec mic mic 100
    Setting the mixer mic to 100:100.
    Recording source: mic
    %

As a test you can copy from /dev/audio to a file and vice-versa for
playback:

    % cp /dev/audio test.au
    ^C [after several seconds of recording]
    % cp test.au /dev/audio
    %

Are you sure you are going into a microphone input and not a line-in
input?  If you have a line-in input, are you able to record from that
input when feeding it a signal from a cd player or something similar?

Are you sure you are going into an input and not an output?  I've seen
some newer motherboards replace the line-in and microphone in jacks
with output jacks for 5.1 sound systems.

Two other things come to mind for AC97 recording:

- AC97 specifies a control register bit which enables a 20dB
microphone input gain.  For the microphones I use, I seem to always
need the boost.  I apply the following patch (to 4.7, I'm not sure if
it applies to 5.1 at all).

--- ../src_dist/sys/dev/sound/pcm/ac97.c        Mon Aug 26 20:25:55 2002
+++ ./sys/dev/sound/pcm/ac97.c  Tue Jan  7 20:47:36 2003
@@ -332,6 +332,12 @@
                                int cur = rdcd(codec, e->reg);
                                val |= cur & ~(max << e->ofs);
                        }
+                       /* stuartb: Enable 20dB mic channel gain boost */
+                       /* TODO: Add ioctl or something else to control this */
+                       /* Do ALL AC97 chips support this? */
+                       if (channel == SOUND_MIXER_MIC)
+                               val |= 0x40;
+
                }
                if (left == 0 && right == 0 && e->mute == 1)
                        val = AC97_MUTE;

- The AC97 specification also has support for an alternate mic input.
I think this controls selection between a front panel and a rear panel
microphone jack.  You might need to set bit 0x0100 (MS) in the General
Purpose Register 0x20.  I have not created a patch for this function.

If you have Windows XP or similar running on your system you can see
these options as advanced setting on the microphone channel.


More information about the freebsd-multimedia mailing list