DC signal showing up in audio recorded using the Beaglebone Audio cape?

Hello All!

I’m using the Beaglebone Audio cape to record audio samples with my Beaglebone Black running the 3.8.13-bone28 kernel on Ubuntu 12.04. After disabling the HDMI ‘virtual cape’ disabled, upgrading to the bone28 kernel and cloning the BB-BONE-AUDI-01-00A0.dtbo firmware for my A1 version Audio cape I was able to get the cape initialized + working.

I’m now trying to figure out why there is a DC offset n the recorded audio for both channels of this board. Recording silence using arecord shows a clear and constant non-zero level on both the left and right channels. Similarly when inputting a small test tone signal I can clearly see in the recorded audio the signal offset from zero by the same amount that as in the silence recording.

I thought I was seeing things so I connected a digital multimeter to the inside of the AC coupling capacitors (C50 and C51 from the Audio Cape schematic) while recording and I read a constant 1.34V. When I stop the recording the voltage drops to around 100mV. So there is some kind of DC signal on the input to the DAC. I have two audio capes and both show this behavior so I’m guessing this is not a manufacturing flaw in my audio cape.

There is an easy workaround available by turning on the TLV320AIC3106’s built-in low-pass filter. By doing this I was able to eliminate the DC-level in the resulting audio files. I can see the level drop to zero exactly when I issue the I2C writes to turn on the low-pass filter. Unfortunately this is only a work-around because the driver for the TLV320AIC3106 resets the I2C registers every time the audio device is activated. This means I can’t just run this once on startup and forget about this issue. It’s also non-optimal because there are effectively two low-pass filters in the signal path - the AC coupling capacitor and the low-pass filter within the codec which means that low-frequency components in the audio signal will be attenuated twice.

Has anyone noticed this issue? Is there a known solution out there I am not aware of?

Thanks in advance for any help or ideas.

Thanks!

Tim

Hi Tim,
I have just realizaed of this problem, since i’m doing some audio analysis with Octave…
how did you do to read the codec’s registers and how change it values??
Maybe register 25 (MICBIAS Control Register) is the problem.

Thanks!

I would think the same. Maybe it’s DC via for MIC since it shows only when recording is on.

i dont think is voltage for the mic the mic bias is n/c

I guess you mean the highpass filter? That should solve your issue.

Under alsamixer you should find a setting for the builtin highpass filter. Setting it to anything other than disabled (0.0045xFs or so was the first option) will get rid of the DC offset.

Regards
Hussein

I’m having a similar problem… How was this resolved?
~Trying to figure out your postings.

Here is my posting:
https://groups.google.com/forum/#!category-topic/beagleboard/beaglebone-capes/sZUt7B1tNi8