Setting up a USB mic to work with Ubuntu, and specifically Teamspeak

Feb 25th, 2009 | By | Category: Random Musings, Technology

Alright so you have a USB mic and Ubuntu is being a bitch about it.  Meaning it probably is thinking that your primary input device is in your soudn card somewhere as apposed to a USB port.. How on earth do we tell get Ubuntu to use the USB port instead of the Soundcard?  We’ll I’m glad you asked because coincidentally that is what I’ll be going over today :)

First thing first, for most all applications with the exception of those running in WINE, you can to get your butt over to this thread: http://ubuntuforums.org/showthread.php?t=789578 and get PulseAudio installed.. Pulse is the key to running a proper sound server in Ubuntu(as long as you can get it running properly – something that took me weeks)

The key I found to making sure that pulse works properly in skype with multiple options for inputs is to make sure that in /system/preferences/sound you have everything on auto detect except for the Sound Capture – which is set to Pulse and that your Mixer track is set to ALSA PCM on dmix via DMA PulseAudio Mixer.

The other thing I found was that you NEED to make sure that your ~/.asoundrc file is blank.  This will become key as in the latter part of this post I will show you that you need to fill that same file with a bunch of good stuff if you want to run a USB mic in WINE appz.

So for a lot of you that probably does it for USB mics and Ubuntu.

Now for the rest of you running games and appz in WINE the story is a little different.  This is where my struggles with learning how to get audio properly working in a linux environment when from taxing to hellish.  First a word of advice to all of you wanting to use TeamSpeak and ubuntu with a USB mic or headset – USE WINE and the Windows version.  don’t even bother with the linux version as you will have days and weeks of your life sucked away.  It just doesn’t work

For some reason, at least for me WINE and pulse do NOT mix very well when it comes to the input side of things.  So when I want to use an ingame chat or Teamspeak the first thing I need to do is to shut down Pulse and rely soley on ALSA.  Now this means that a lot of the nice convenient mixer stuff that pulse does needs to be done manually. I posted all this up in the Teamspeak discussion forums and but I’ll save you the trouble of going there and copy it here as well

Now from this point onwards I am going to assume you are using ALSA , if not then you have your own google adventure to go on.

So:

go into your home directory (cd ~) and create a file called “.asoundrc” minus the quotations of course with your favorite editor ( vi ./.asoundrc ) if it doesn’t exist already.. If it does you need to make a backup of it and clear it all to start fresh
The .asoundrc file in your home directory acts as kind of a configuration file that is used to override default settings
Our goal here is to make our default capture device our USB mic and NOT our sound card, this is accomplished by inserting the following text into the .asoundrc file:

pcm.!default {
        type asym
        playback.pcm {
                type plug
                slave.pcm "hw:0,0"
        }
        capture.pcm {
                type plug
                slave.pcm "hw:1,0"
        }
}

***Something to note: “hw:0,0″ and “hw:2,0″ are MY card locations for my soundblaster and my usb mic. Yours might be different. ***

In order to find out what your desired output device is you type the following in terminal:

“aplay -l” and you should receive and output something like this:

**** List of PLAYBACK Hardware Devices ****
card 0: CA0106 [CA0106], device 0: ca0106 [CA0106]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: CA0106 [CA0106], device 1: ca0106 [CA0106]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: CA0106 [CA0106], device 2: ca0106 [CA0106]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: CA0106 [CA0106], device 3: ca0106 [CA0106]
Subdevices: 1/1
Subdevice #0: subdevice #0

Obviously My card is 0 as that is the only one that shows up, so I use “hw:0,0″ you need to make extra sure what yours is and use that.

now to find my capture device I type:
“arecord -l” and my output should be something like this:

**** List of CAPTURE Hardware Devices ****
card 0: CA0106 [CA0106], device 0: ca0106 [CA0106]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: CA0106 [CA0106], device 1: ca0106 [CA0106]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: CA0106 [CA0106], device 2: ca0106 [CA0106]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: CA0106 [CA0106], device 3: ca0106 [CA0106]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: default [AK5370 ], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0

Now we already know that Card 0 is my soundblaster, which I don’t want to use, so we can rule that out.. The only other option(which is conveniently labeled USB Audio) is Card 2 so that means I used “hw:2,0″ . Yours could be different so edit your .asoundrc file accodingly.

I quickly check to make sure WINE was seeing my usb mic by running the command ‘winecfg’ and going into Audio and making sure that the ALSA WAVE IN device show up as USB Audio.

I have Hardware Acceleration set to Emulation as well as Driver Emulation checked on, not sure if it matters but it is on for me and works.

So there you have it, easy peasy!  Well it is easy to do but figuring this out with next to no documentation on this specific subject was a bitch..Hope this helped :)

After going through the same problem again and the above solution wasn’t working all that hot for whatever reason.

pcm.!default {
type plug
slave.pcm “combined”
}

pcm.combined {
type asym
playback.pcm “playback”
capture.pcm “hw:1,0″
}

pcm.playback {
type dmix
ipc_key 1024
slave {
pcm “hw:1,0″
period_time 0
period_size 1024
buffer_size 4096
rate 44100
}
bindings {
0 0
1 1
}
}

ctl.dmixer {
type hw
card 1
}

Tags: , , , , , , ,

One Comment to “Setting up a USB mic to work with Ubuntu, and specifically Teamspeak”

  1. Grenage says:

    I cannot thank you enough for this blog entry. Just when I was about to resort to a virtual XP box (the horror!), I found this and was up and running in minutes.

    Thank you!

Leave a Comment