Howto setup C-Media USB Audio Adapter and Linux

On this page you will a find a short guide on how to set up this audio adapter
under Linux and make it work.
I wrote it because when I searched google I found nothing about this Hardware (and - by the way - it was a bargain on amazon).

I needed an external audio adapter for skype because with the soundcard in my
computer a microphone didn't work (now after changing to ALSA it does). So I
had a look in the 'net and found this hardware really cheap so I thought I
would give it a try, although the retailer
could not tell me whether it was supported by linux.
Luckily I got it to work :-)

Setting up the USB Audio Adapter

I assume you have the USB-subsystem up and running.
If you are using hotplug, it probably will work out of the box,
with usbmgr some customization will be necessary.

Step 1: Kernel-Config

It should work with a vanilla-kernel at least since kernel 2.6.14. The ALSA-USB-module should be part of the kernel, otherwise you would have to patch it.

In addition to the usual ALSA-support, compile (recommended: as a module)
usbhid,
snd_usb_audio.

Step 2: Configure USB-Subsystem

Restart usbmgr.
Now the kernel-modules will be loaded automatically when plugging in the audio
adapter.

After plugging the adapter in for the first time use alsamixer -c
1 (if you already have another soundcard configured as card 0) to adjust
the volume levels (for playback and don't forget the microphone!) to your
needs.

Step 3: Running skype

Update:
Recent versions of skype work with ALSA directly, so there is no reason to play
around like described below. Just select in the skype-Options the correct
ALSA sound-device for Audio In and Audio Out.

Kept for historical reasons:
I had to play around a lot until a found a solution. Skype 1.2.0.18 obviously
doesn't work with the emulated device /dev/dsp1 (altough
play does).
After some research a found some lines that have to be added to
~/.asoundrc or /etc/asound.conf (for system-wide
settings) in order to redirect the emulated device /dev/dsp0 to
the second ALSA-adapter (which is the USB-adapter).
pcm.dsp0 {
type plug
slave.pcm "hw:1,0"
}