MacBook Air 6,2 TRRS Headset Mic Not Working

Bug #1410618 reported by chrisolof
34
This bug affects 7 people
Affects Status Importance Assigned to Milestone
alsa-driver (Ubuntu)
Confirmed
Undecided
Unassigned

Bug Description

Hello,

I'm running Ubuntu Gnome 14.04 on a new MacBookAir6,2 with the Cirrus Logic CS4208 and would love to get the microphone part of the TRRS connector working. Mac OS picks up and utilizes the TRRS headset mic without issue so I know the hardware is a go.

With the headset plugged in, running sudo hdajacksensetest -a results in:

Pin 0x05 ( Digital Out, HDMI): present = No
Pin 0x06 ( Digital Out, HDMI): present = No
Pin 0x07 ( Digital Out, HDMI): present = No

AlsaInfo output here:
http://www.alsa-project.org/db/?f=cabc8cab44d308c8a3898c66d48d9be4fc5ccf83

I opened up hdajackretask to find four pins:
Green Headphone
Pin ID: 0x10
Headphone

Internal Speaker
Pin ID: 0x12
Internal speaker

Pink Mic
Pin ID: 0x18
Not connected

Internal Mic
Pin ID: 0x1c
Internal mic

Unplugging and replugging the headset changes the Output device in sound settings from Headphones to Speakers so that works, but nothing in the input tab ever changes. It always lists two devices: Internal Microphone and Microphone. Both of these seem to actually be the internal microphone in the mac - either works without the headset connected at all.

So I'm not really sure how to proceed from here, but I'd be happy to run whatever diagnostic tests might prove useful and/or even contribute code toward a fix - but I just have no idea where to start. Is it as simple as just finding the right pin and telling the system to use it as a microphone?

Similar bug report here:
https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/950494

Revision history for this message
David Henningsson (diwic) wrote :

Hi chrisolof,

 1) hdajacksensetest shows the result of the HDMI graphics card, you probably want to add "-c 1" or similar to get the analog card instead.

 2) Looking at your alsa-info, it seems like somebody has already tried to improve the driver for your card. I'd encourage you to try the latest driver, according to https://wiki.ubuntu.com/Audio/UpgradingAlsa/DKMS

If this does not work, then maybe contact the author of this patch to see if there's some room for collaboration:

commit b5bf0a929d7ca35b9ccfc24647a397899d307659
Author: Ben Whitten <email address hidden>
Date: Fri Sep 27 10:13:51 2013 +0200

    ALSA: hda - Add fixup for MacBook Air 6,1 and 6,2 with CS4208 codec

Revision history for this message
chrisolof (chrisolof) wrote :

Interesting - that commit does appear to target my machine specifically, and contains a pin configuration for it:

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b5bf0a929d7ca35b9ccfc24647a397899d307659

Oddly, when I upgraded the ALSA driver to the latest as that wiki page outlined, there was still no trace of the headset mic when plugged in. I may try to manually set the pin config to what's outlined in the commit and see if I have any success. Or maybe it's worth trying the other Trusty ALSA driver at the bottom of the list here - once it doesn't have a red X for build status...:

https://code.launchpad.net/~ubuntu-audio-dev/+archive/ubuntu/alsa-daily/+packages

Anyway - thanks for the info! This gives me some runway for testing.

Revision history for this message
chrisolof (chrisolof) wrote :

So it looks as if the bug that generated that commit was due to no sound coming out of the air's speakers and there's really not much talk about the TRRS mic-in functionality:
https://bugzilla.kernel.org/show_bug.cgi?id=60811

That commit may be responsible for the working sound and headphone detection - but there may be more work to do in order to get the TRRS mic working. Likely why installing the latest ALSA driver isn't changing anything with regard to the mic.

sudo hdajacksensetest -c 1 prints out:
Pin 0x10 (Grey Headphone, Left side): present = Yes

Anyway it sounds as if the pin configuration introduced in that patch was gleaned from a Windows inf driver file back in 2013. Makes me wonder if the TRRS functionality is absent on Windows as well...

Revision history for this message
chrisolof (chrisolof) wrote :

Sure enough - it would appear the windows driver doesn't support the TRRS mic on this CS4208 chip either:
https://discussions.apple.com/thread/5862553

So then, OSX's driver for the chip would likely hold the key to this.

Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in alsa-driver (Ubuntu):
status: New → Confirmed
Revision history for this message
Mikael Berglund (berglund86) wrote :

Same issue (with same board) on mac book pro 11, 3. https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1393502

Revision history for this message
Fábio Ueno (fabioueno) wrote :

Hey... Did you guys manage to solve this?

I am facing the same challenge with Macbook Pro 5.5 and ubuntu 16.04.

Revision history for this message
Krister Swenson (thekswenson) wrote :

The problem is still present in Ubuntu 20.10 :(

Revision history for this message
chrisolof (chrisolof) wrote :

Unfortunately I was never able to solve this. It appears the Windows issue (referenced above) remains as well. Maybe an examination of the Apple/OSX driver (if that's even possible) would lead to a solution here.

As a work-around I purchased a small USB sound card and plugged into that.

Revision history for this message
ali (ali-n) wrote :

Having the same problem with a 2017 12” Macbook (the Macbook10,2). The microphone shows up as “(unplugged)” in pavucontrol and pacmd regardless of if I have the headset plugged into the combo jack or not. Headphones are detected and work. The internal mic is still accessible and the Microphone input seems to be mirrorring it (could be to do with some chip-level switching that somehow doesn’t happen on Linux?). I’ve tried inputting all choices of model available in the CS4208 quirk list for PulseAudio (there isn’t one for my particular model) into alsa-base.conf and nothing has changed (having nothing in alsa-base.conf, which I did before attempting this fix, also makes no difference). I’m running Debian 10 with kernel 4.19.0-17-amd64.

Revision history for this message
Peluza (hero-of-metal) wrote :

Ok folks I managed to solve the issue:

First check wihtout umplugging the cable the result of:
sudo hdajacksensetest -a
Then connect the cable and run it again:
sudo hdajacksensetest -a

There should be some difference, with now some pin marked as "(Not connected): present = Yes" while in the other ther first one it should have said "(Not connected): present = Yes". If this is not the case your cable is not being detected and you may have other issue.

Then run: cat /proc/asound/card*/codec* | grep Codec
And make sure it is Cirrus Logic CS4208, if that is the case, search the particular model of your computer here: https://www.kernel.org/doc/html/latest/sound/hd-audio/models.html (in the CS4208 section if that is your case) find the code of your computer: mbp55 or imac27 or imac27_122 and then edit /etc/modprobe.d/alsa-base.conf
Erase every line in there and write (supposing your model was mbp55:
options snd-hda-intel model=mbp55
Then restart the computer and it should work
(Solution by Doug White)

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.