Hello,
I just bought a set of Phoenix Audio Duets for VOIP conferencing. They are USB speakerphones with good echo cancellation. They work fine with the snd_usb_audio module, with one exception: I can't control the microphone and speaker levels. ALSA exposes some controls, but they have no effect, so I have to shout to be heard.
Rather than get a hoarse voice, I want to help enhance the snd_usb_audio module to correctly support the mixer controls within the Duet. I know the device actually has working mixer controls because Phoenix Audio provides a Windows-only utility for controlling the levels, and when I use that utility turn up the mic, I can be heard quite well. Unfortunately, the levels are reset when I move the device back to a Linux box.
I used SnoopyPro to capture USB packets as I adjusted the levels in Windows and I think I know what to transmit to the device in order to read and change the levels. Now I just need to figure out how to translate that knowledge into kernel code. I am a capable C coder (though rusty), I don't know much about USB, and I've dabbled in kernel code before.
lsusb lists the Duet (Executive) as:
Bus 001 Device 011: ID 0556:0004 Asahi Kasei Microsystems Co., Ltd
Both kmix and Ekiga see it as an AK4571. There is a data sheet for that chip here:
http://www.datasheetcatalog.com/asahikaseimicrosystems/3/
I would guess that the AK4571 has mixer controls built in, but that Phoenix Audio (phnxaudio.com) chose not to use those controls and instead enhanced the USB interface with nonstandard mixer controls.
So, where should I begin? I don't see evidence that anyone has worked on this yet.
Shane