Hi, this is my second attempt (https://mailman.alsa-project.org/pipermail/alsa-devel/2020-December/178361.h...) to fix mic sound on a Jieli webcam. I found that the mic works only when ep packet size is set to wMaxPacketSize, so I've removed the datainterval hack. I also fixed the problem with the volume control (mixer).
Now the mic sound works (no more Minion voice) and there are no more errors in syslog about volume range. I arbitrarily choose a resolution value (16): I read in a comment that there should be no more than 255 levels, so 4096 (max volume) / 16 = 0-255 ;-)
Could you review this patch?
Thanks, Marco
Jieli Technology USB Webcam microphone needs some quirks to work.
Signed-off-by: Marco Giunta giun7a@gmail.com --- sound/usb/mixer.c | 7 +++++++ sound/usb/quirks.c | 6 ++++++ 2 files changed, 13 insertions(+)
diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c index 9b713b4a5..20ef12dd8 100644 --- a/sound/usb/mixer.c +++ b/sound/usb/mixer.c @@ -1198,6 +1198,13 @@ static void volume_control_quirks(struct usb_mixer_elem_info *cval, cval->res = 1; } break; + case USB_ID(0x1224, 0x2a25): /* Jieli Technology USB PHY 2.0 */ + if (!strcmp(kctl->id.name, "Mic Capture Volume")) { + usb_audio_info(chip, + "set resolution quirk: cval->res = 16\n"); + cval->res = 16; + } + break; } }
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index 326d1b0ea..2263e43fd 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -1534,6 +1534,7 @@ bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip) case USB_ID(0x2912, 0x30c8): /* Audioengine D1 */ case USB_ID(0x413c, 0xa506): /* Dell AE515 sound bar */ case USB_ID(0x046d, 0x084c): /* Logitech ConferenceCam Connect */ + case USB_ID(0x1224, 0x2a25): /* Jieli Technology USB PHY 2.0 */ return true; }
@@ -1874,6 +1875,11 @@ void snd_usb_audioformat_attributes_quirk(struct snd_usb_audio *chip, */ fp->attributes &= ~UAC_EP_CS_ATTR_FILL_MAX; break; + case USB_ID(0x1224, 0x2a25): /* Jieli Technology USB PHY 2.0 */ + /* mic works only when ep packet size is set to wMaxPacketSize */ + fp->attributes |= UAC_EP_CS_ATTR_FILL_MAX; + break; + } }
-- 2.31.1