046d:09a4 USB mixer quirks not applied correctly for Logitech E3500 webcam microphone

Bug #1265103 reported by Andy Juniper on 2013-12-31
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Medium
Unassigned

Bug Description

Having problems getting microphone working on Logitech E3500 webcam. It's worked before but I can't say when.

I noticed messages from snd-usb-audio relating to "Unlikely big volume range" which at first glance at the code in sound/usb/mixer.c in volume_control_quirks shouldn't happen since the quirk handler should fix things.

So I added some debug into the module and see that the quirk handler code compares kctl->id.name against "Mic Capture Volume" and this test fails every time.

This appears to be because the quirk handler code is called via get_min_max_with_quirks from build_feature_ctl immediately before the block of code which creates the kctl->id.name string.

With my debug added to sound/usb/mixer.c, I see:

[53438.864077] usb 1-1: new high-speed USB device number 8 using ehci_hcd
[53439.105737] uvcvideo: Found UVC 1.00 device <unnamed> (046d:09a4)
[53439.133317] input: UVC Camera (046d:09a4) as /devices/pci0000:00/0000:00:1d.7/usb1/1-1/1-1:1.0/input/input12
[53440.136199] 8:3:1: cannot get freq at ep 0x86
[53440.136447] usb_audio:1165:f11b3700::
Debug line 1165 shows the current value of kctl->id.name is empty just before the call to get_min_max_with_quirks in build_feature_ctl, just before the "switch (control)" line.

[53440.136456] usb_audio:936:f11b3700
[53440.136463] usb_audio: 806 f11b3700
Debug line at 806 at top of volume_control_quirks shows valid kctl is passed in

[53440.136469] usb_audio:826::
Debug line at 826 shows kctl->id.name is empty so no quirk is applied

[53440.136480] usb_audio:1216:f11b3700:Mic Capture Switch:
Debug line at 1216 shows that after the "switch (control)" block the kctl->id.name is now set up

[53440.136492] usb_audio:1165:f11b3200::
Repeat the above for the Mic Capture Volume, the interesting control

[53440.907700] usb_audio:936:f11b3200
[53440.907710] usb_audio: 806 f11b3200
Debug line at 806 at top of volume_control_quirks shows valid kctl is passed in

[53440.907717] usb_audio:826::
Debug line at 826 shows kctl->id.name is empty so no quirk is applied

[53440.907728] usb_audio:1216:f11b3200:Mic Capture Volume:
Debug line at 1216 shows that after the "switch (control)" block the kctl->id.name is now set up

[53440.907736] usb_audio: Warning! Unlikely big volume range (=3072), cval->res is probably wrong.
[53440.907748] usb_audio: [5] FU [Mic Capture Volume] ch = 1, val = 5888/8960/1
And then we get the warning that the volume range is bad because the quirk handler didn't get applied

My guess is that this causes the microphone to not have its input range adjusted as expected and thus it only ever picks up silence.

ProblemType: Bug
DistroRelease: Ubuntu 12.04
Package: linux-image-3.2.0-57-generic 3.2.0-57.87
ProcVersionSignature: Ubuntu 3.2.0-57.87-generic 3.2.52
Uname: Linux 3.2.0-57-generic i686
AlsaVersion: Advanced Linux Sound Architecture Driver Version 1.0.24.
ApportVersion: 2.0.1-0ubuntu17.6
Architecture: i386
AudioDevicesInUse:
 USER PID ACCESS COMMAND
 /dev/snd/controlC1: andy 2322 F.... pulseaudio
 /dev/snd/controlC0: andy 2322 F.... pulseaudio
CRDA: Error: [Errno 2] No such file or directory
Card0.Amixer.info:
 Card hw:0 'I82801DBICH4'/'Intel 82801DB-ICH4 with AD1981B at irq 9'
   Mixer name : 'Analog Devices AD1981B'
   Components : 'AC97a:41445374'
   Controls : 28
   Simple ctrls : 20
Card1.Amixer.info:
 Card hw:1 'U0x46d0x9a4'/'USB Device 0x46d:0x9a4 at usb-0000:00:1d.7-1, high speed'
   Mixer name : 'USB Mixer'
   Components : 'USB046d:09a4'
   Controls : 2
   Simple ctrls : 1
Card1.Amixer.values:
 Simple mixer control 'Mic',0
   Capabilities: cvolume cvolume-joined cswitch cswitch-joined penum
   Capture channels: Mono
   Limits: Capture 0 - 3072
   Mono: Capture 3069 [100%] [34.98dB] [on]
Date: Tue Dec 31 01:08:46 2013
HibernationDevice: RESUME=UUID=6eb2f8e7-fadb-4e67-b648-c7d4016d49ad
InstallationMedia: Lubuntu 12.04 "Precise Pangolin" - Release i386 (20120423)
MachineType: Sony Corporation VGN-S2HP(GB)
MarkForUpload: True
ProcEnviron:
 LANGUAGE=en_GB:en
 TERM=xterm
 PATH=(custom, no user)
 LANG=en_GB.UTF-8
 SHELL=/bin/bash
ProcFB: 0 radeondrmfb
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-3.2.0-57-generic root=UUID=519c7823-96d8-4c6b-81f9-f04e64f4cab6 ro quiet splash vt.handoff=7
RelatedPackageVersions:
 linux-restricted-modules-3.2.0-57-generic N/A
 linux-backports-modules-3.2.0-57-generic N/A
 linux-firmware 1.79.9
SourcePackage: linux
UpgradeStatus: No upgrade log present (probably fresh install)
dmi.bios.date: 10/18/2004
dmi.bios.vendor: Phoenix Technologies LTD
dmi.bios.version: R0071G4
dmi.chassis.asset.tag: 6D1M000000000000000000190000
dmi.chassis.type: 10
dmi.chassis.vendor: Sony Corporation
dmi.chassis.version: N/A
dmi.modalias: dmi:bvnPhoenixTechnologiesLTD:bvrR0071G4:bd10/18/2004:svnSonyCorporation:pnVGN-S2HP(GB):pvrJ000JCYU:cvnSonyCorporation:ct10:cvrN/A:
dmi.product.name: VGN-S2HP(GB)
dmi.product.version: J000JCYU
dmi.sys.vendor: Sony Corporation

Andy Juniper (q-linux) wrote :

This change was made by a bot.

Changed in linux (Ubuntu):
status: New → Confirmed

Andy Juniper, thank you for reporting this and helping make Ubuntu better. Could you please confirm this issue exists with the latest development release of Ubuntu? ISO images are available from http://cdimage.ubuntu.com/daily-live/current/ . If the issue remains, please just make a comment to this.

If reproducible, could you also please test the latest upstream kernel available (not the daily folder) following https://wiki.ubuntu.com/KernelMainlineBuilds ? It will allow additional upstream developers to examine the issue. Once you've tested the upstream kernel, please comment on which kernel version specifically you tested. If this bug is fixed in the mainline kernel, please add the following tags:
kernel-fixed-upstream
kernel-fixed-upstream-VERSION-NUMBER

where VERSION-NUMBER is the version number of the kernel you tested. For example:
kernel-fixed-upstream-v3.13-rc6

This can be done by clicking on the yellow circle with a black pencil icon next to the word Tags located at the bottom of the bug description. As well, please remove the tag:
needs-upstream-testing

If the mainline kernel does not fix this bug, please add the following tags:
kernel-bug-exists-upstream
kernel-bug-exists-upstream-VERSION-NUMBER

As well, please remove the tag:
needs-upstream-testing

Once testing of the upstream kernel is complete, please mark this bug's Status as Confirmed. Please let us know your results. Thank you for your understanding.

tags: added: latest-bios-r0071g4
tags: added: needs-upstream-testing regression-release
summary: - USB mixer quirks not applied correctly for Logitech E3500 webcam
- microphone (and others)
+ 046d:09a4 USB mixer quirks not applied correctly for Logitech E3500
+ webcam microphone
Changed in linux (Ubuntu):
importance: Undecided → Medium
status: Confirmed → Incomplete
Andy Juniper (q-linux) wrote :

Hi

I can't easily try out the latest kernels since they mandate PAE which this system doesn't have.

I've not found the bandwidth to download the ISO but I guess that will be the same situation.

I've looked at the equivalent file in the main kernel head and see that this change fixes the problem:

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/sound/usb/mixer.c?id=e182534d4bd3a779941f2868f35e1f66a8d36cea

I can see that this change also went into mainstream kernels 3.0.10 (commit 6861f2aa5840d7237aa0249a76ae29c939e7c93a) and 3.1.2 (commit f80f33817c973746ca0187713404461b80ef5d2d).

I'm having some finger trouble rebuilding the kernel with this patch in to see if this fixes the issue - I suspect that it will - and will post the results here.

thanks for your time
Andy

Changed in linux (Ubuntu):
status: Incomplete → Confirmed
Andy Juniper (q-linux) wrote :

I can confirm that after applying that change to the current 12.04 kernel (3.2.0-58.88) the microphone on the webcam works as expected, and the "set volume quirk for QuickCam E3500" message appears in dmesg from the kernel.

tags: added: cherry-pick
Changed in linux (Ubuntu):
status: Confirmed → Triaged
To post a comment you must log in.