[alsa-devel] Dell USB audio driver workaround

Tanu Kaskinen tanuk at iki.fi
Tue Jun 20 16:19:08 CEST 2017


On Thu, 2017-06-15 at 17:40 +0800, Hui Wang wrote:
> On 06/14/2017 11:50 PM, Takashi Iwai wrote:
> > On Wed, 14 Jun 2017 04:29:13 +0200,
> > Hui Wang wrote:
> > > In this thread, I added tanuk at iki.fi and svillar at igalia.com since they
> > > reported or discussed similar bugs recently
> > > (https://www.spinics.net/lists/alsa-devel/msg62460.html and
> > > https://bugs.freedesktop.org/show_bug.cgi?id=100711).
> > > 
> > > Right now, we are trying to enable the USB audio for the Dell dock
> > > stations TB16[1] and WD15[2]. For usb audio part, they have the same
> > > design, they use realtek alc4020 USB bridge and alc3263 codec, and
> > > there are one headset jack on the front panel and one speaker output
> > > jack on the rear panel, but due to some reason (probably it is the
> > > firmware's problem), the alsa mixers can't reflect there is speaker or
> > > headset on them, as a result the pulseaudio can't handle the headset
> > > or speaker correctly.
> > > 
> > > Right now, the pulseaudio can find a playback device and a record
> > > device, it is the output and input device for that headset jack, but
> > > pulseaudio does not think they are headphone and Mic, pulseaudio think
> > > they are just USB analog output and input devices; for the speaker
> > > jack, the pulseaudio can't find it at all. so through pulseaudio, we
> > > can't play any sound to that speaker jack.
> > > 
> > > This is the output and input devices listed by alsa-utils:
> > > 
> > > !!Aplay/Arecord output
> > > !!--------------------
> > > 
> > > APLAY
> > > 
> > > **** List of PLAYBACK Hardware Devices ****
> > > ...
> > > card 1: Audio [USB Audio], device 0: USB Audio [USB Audio]
> > >    Subdevices: 1/1
> > >    Subdevice #0: subdevice #0
> > > card 1: Audio [USB Audio], device 1: USB Audio [USB Audio #1]
> > >    Subdevices: 1/1
> > >    Subdevice #0: subdevice #0
> > > 
> > > ARECORD
> > > 
> > > **** List of CAPTURE Hardware Devices ****
> > > ...
> > > card 1: Audio [USB Audio], device 0: USB Audio [USB Audio]
> > >    Subdevices: 1/1
> > >    Subdevice #0: subdevice #0
> > > 
> > > 
> > > 
> > > 
> > > And we can use alsa-utils command to play sound to speaker jack:
> > > $ aplay -D plughw:CARD=1,DEV=1 /usr/share/sounds/speech-dispatcher/test.wav
> > > 
> > > I don't know how to fix this problem in the kernel driver, if we can
> > > let driver export standard mixers, this issue will be fixed. But it
> > > looks like the mixers depend on the firmware, we can't change the
> > > firmware, so probably we can't fix it in the kernel driver.
> > 
> > Right, there are multiple problems.  One is the firmware problem as
> > you mentioned.  With the old firmware, the USB descriptor and the
> > behavior of the device are unstable / inconsistent.
> > 
> > Even with the fixed firmware, USB audio driver in general may assign
> > PCM streams depending on the descriptor, and the name can't be set
> > consistently per purpose.  So, it can't appear like "Headphone Stream"
> > or "Line Out Stream".  The only sensible way I can think of is to
> > apply some static mappings for creation of the streams, like the mixer
> > mapping for some devices.
> > 
> > This is, however, only a part of the iceberg.  A bigger problem is
> > that USB-audio driver doesn't handle the jack detection usually by
> > itself.  The jack detection part belongs to the HID, and it should be
> > handled by a different driver.  That is, if any, PA would need to
> > resolve the corresponding input device and deal with the input events.
> > That's a mess.
> 
> Yes, the USB-audio jack detection is a bigger problem. Since the current 
> USB-audio driver does not export JACK to the userspace, the PA does not 
> check jack plugging/unplugging at all. If a USB-audio adapter is plugged 
> in, the PA will treat it as a USB headpone+microphone, will think this 
> device is ready to work, then users can select this sound card via UI 
> program to play or record sound.
> 
> > > Another way to fix it is to add a conf to pulseaudio, in the conf, we
> > > add one profile for headset(hw:%f,0,0) and one profile for
> > > speaker(hw:%f,1,0), this is the draft patch I sent to
> > > pulseaudio-discuss mail list:
> > > https://lists.freedesktop.org/archives/pulseaudio-discuss/2017-May/028252.html
> > > 
> > > Do you have any idea to fix this problem? Thanks in advance. And below
> > > are some logs I collected on the TB16, if you need more logs, just
> > > tell me, I will collect them for you.
> > 
> > I'm in favor of the configuration specific to the device.  Still we'd
> > need a few fixups in the kernel side, too.  Other "perfect solutions"
> > would be hard to achieve, I'm afraid.
> 
> Thanks for your advice.
> 
> Through PA, users can't select speaker (hw:%f,1,0) to work, this is a 
> more urgent problem.
> 
> Hi Tanu,
> 
> If you have time, could you please take a look at the patch I sent to 
> pulseaudio-discuss?

I applied your pulseaudio patch now, sorry for the delay.

-- 
Tanu

https://www.patreon.com/tanuk


More information about the Alsa-devel mailing list