Configuring sound card on a MacBookPro11,5 (mid-2015)

Hello all,

After several days of trying to configure sound cards on a MacBookPro11,5 (a Mid-2015 model) I’m kinda lost to make it works as it used to be on macOS (this model has physical left/right speakers and a subwoofer).

Whereas left/right speakers do work, I can’t make the subwoofer working although alsamixer does show a subwoofer setting.

Here’s the output of sudo alsa-info.sh --no-upload: https://paste.opensuse.org/53844106

And here’s the output of journalctl -k | grep -Ei "ALSA|HDA|sof|HDMI|snd[_-]|sound|hda.codec|hda.intel":

févr. 13 10:22:56 localhost kernel: ACPI: Added _OSI(Linux-Lenovo-NV-HDMI-Audio)
févr. 13 10:22:56 localhost kernel: pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
févr. 13 10:22:56 localhost kernel: PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
févr. 13 10:22:56 localhost kernel: software IO TLB: mapped [mem 0x000000005ee7d000-0x0000000062e7d000] (64MB)
févr. 13 10:23:00 localhost kernel: snd_hda_intel 0000:00:03.0: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
févr. 13 10:23:00 localhost kernel: snd_hda_intel 0000:01:00.1: Force to non-snoop mode
févr. 13 10:23:00 localhost kernel: snd_hda_codec_cirrus hdaudioC1D0: autoconfig for CS4208: line_outs=2 (0x12/0x13/0x0/0x0/0x0) type:speaker
févr. 13 10:23:00 localhost kernel: snd_hda_codec_cirrus hdaudioC1D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
févr. 13 10:23:00 localhost kernel: snd_hda_codec_cirrus hdaudioC1D0:    hp_outs=1 (0x10/0x0/0x0/0x0/0x0)
févr. 13 10:23:00 localhost kernel: snd_hda_codec_cirrus hdaudioC1D0:    mono: mono_out=0x0
févr. 13 10:23:00 localhost kernel: snd_hda_codec_cirrus hdaudioC1D0:    dig-out=0x21/0x0
févr. 13 10:23:00 localhost kernel: snd_hda_codec_cirrus hdaudioC1D0:    inputs:
févr. 13 10:23:00 localhost kernel: snd_hda_codec_cirrus hdaudioC1D0:      Internal Mic=0x1c
févr. 13 10:23:00 localhost kernel: snd_hda_codec_cirrus hdaudioC1D0:      Mic=0x18
févr. 13 10:23:00 localhost kernel: input: HDA ATI HDMI HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input15
févr. 13 10:23:00 localhost kernel: input: HDA ATI HDMI HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input16
févr. 13 10:23:00 localhost kernel: input: HDA ATI HDMI HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input17
févr. 13 10:23:00 localhost kernel: input: HDA Intel HDMI HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:03.0/sound/card0/input10
févr. 13 10:23:00 localhost kernel: input: HDA ATI HDMI HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input18
févr. 13 10:23:00 localhost kernel: input: HDA ATI HDMI HDMI/DP,pcm=10 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input19
févr. 13 10:23:00 localhost kernel: input: HDA Intel HDMI HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:03.0/sound/card0/input11
févr. 13 10:23:00 localhost kernel: input: HDA Intel HDMI HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:03.0/sound/card0/input12
févr. 13 10:23:00 localhost kernel: input: HDA ATI HDMI HDMI/DP,pcm=11 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input20
févr. 13 10:23:00 localhost kernel: input: HDA Intel HDMI HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:03.0/sound/card0/input13
févr. 13 10:23:00 localhost kernel: input: HDA Intel HDMI HDMI/DP,pcm=10 as /devices/pci0000:00/0000:00:03.0/sound/card0/input14
févr. 13 10:23:00 localhost kernel: input: HDA Intel PCH Mic as /devices/pci0000:00/0000:00:1b.0/sound/card1/input21
févr. 13 10:23:00 localhost kernel: input: HDA Intel PCH Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card1/input22
févr. 13 10:23:00 localhost kernel: input: HDA Intel PCH SPDIF as /devices/pci0000:00/0000:00:1b.0/sound/card1/input23
févr. 13 10:23:01 localhost kernel: [drm]   HDMI-A-3


févr. 13 10:22:56 localhost kernel: ACPI: Added _OSI(Linux-Lenovo-NV-HDMI-Audio)
févr. 13 10:22:56 localhost kernel: pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
févr. 13 10:22:56 localhost kernel: PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
févr. 13 10:22:56 localhost kernel: software IO TLB: mapped [mem 0x000000005ee7d000-0x0000000062e7d000] (64MB)
févr. 13 10:23:00 localhost kernel: snd_hda_intel 0000:00:03.0: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
févr. 13 10:23:00 localhost kernel: snd_hda_intel 0000:01:00.1: Force to non-snoop mode
févr. 13 10:23:00 localhost kernel: snd_hda_codec_cirrus hdaudioC1D0: autoconfig for CS4208: line_outs=2 (0x12/0x13/0x0/0x0/0x0) type:speaker
févr. 13 10:23:00 localhost kernel: snd_hda_codec_cirrus hdaudioC1D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
févr. 13 10:23:00 localhost kernel: snd_hda_codec_cirrus hdaudioC1D0:    hp_outs=1 (0x10/0x0/0x0/0x0/0x0)
févr. 13 10:23:00 localhost kernel: snd_hda_codec_cirrus hdaudioC1D0:    mono: mono_out=0x0
févr. 13 10:23:00 localhost kernel: snd_hda_codec_cirrus hdaudioC1D0:    dig-out=0x21/0x0
févr. 13 10:23:00 localhost kernel: snd_hda_codec_cirrus hdaudioC1D0:    inputs:
févr. 13 10:23:00 localhost kernel: snd_hda_codec_cirrus hdaudioC1D0:      Internal Mic=0x1c
févr. 13 10:23:00 localhost kernel: snd_hda_codec_cirrus hdaudioC1D0:      Mic=0x18
févr. 13 10:23:00 localhost kernel: input: HDA ATI HDMI HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input15
févr. 13 10:23:00 localhost kernel: input: HDA ATI HDMI HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input16
févr. 13 10:23:00 localhost kernel: input: HDA ATI HDMI HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input17
févr. 13 10:23:00 localhost kernel: input: HDA Intel HDMI HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:03.0/sound/card0/input10
févr. 13 10:23:00 localhost kernel: input: HDA ATI HDMI HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input18
févr. 13 10:23:00 localhost kernel: input: HDA ATI HDMI HDMI/DP,pcm=10 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input19
févr. 13 10:23:00 localhost kernel: input: HDA Intel HDMI HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:03.0/sound/card0/input11
févr. 13 10:23:00 localhost kernel: input: HDA Intel HDMI HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:03.0/sound/card0/input12
févr. 13 10:23:00 localhost kernel: input: HDA ATI HDMI HDMI/DP,pcm=11 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input20
févr. 13 10:23:00 localhost kernel: input: HDA Intel HDMI HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:03.0/sound/card0/input13
févr. 13 10:23:00 localhost kernel: input: HDA Intel HDMI HDMI/DP,pcm=10 as /devices/pci0000:00/0000:00:03.0/sound/card0/input14
févr. 13 10:23:00 localhost kernel: input: HDA Intel PCH Mic as /devices/pci0000:00/0000:00:1b.0/sound/card1/input21
févr. 13 10:23:00 localhost kernel: input: HDA Intel PCH Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card1/input22
févr. 13 10:23:00 localhost kernel: input: HDA Intel PCH SPDIF as /devices/pci0000:00/0000:00:1b.0/sound/card1/input23
févr. 13 10:23:01 localhost kernel: [drm]   HDMI-A-3

Content of /etc/modprobe.d/50-sound.conf:

options snd slots=snd-hda-intel model=mbp11
# u1Nb.Qw9xnREE504:8 Series/C220 Series Chipset High Definition Audio Controller
alias snd-card-0 snd-hda-intel

Despite this problem all is working (even the switch between dGPU and iGPU albeit a reboot is needed to switch the GPU).

I don’t have your hardware so I don’t know if I can be of much help … I can throw up some suggestions.

Did you try installing pulse audio volume control (pavucontrol) and go to the ‘configuration tab’ and experiment with the different settings there, to see if one will yield sound in your Mac subwoofer?

Did you try “speaker-test” to see if it gives any clues? Your system having two separate HDMI devices might complicate this a bit … but for the sake of this post I am assuming your default sound is the one you wish to use. In that case you could try:


speaker-test -t wav -c6 -l1

The " -l1" (lower case L and a one) is to prevent this command from looping forever. The " -t wav " is to give a female voice indicating where the sound is supposed to be going.

Or you could try sending sound to a specific speaker channel, such as the following:


speaker-test -t wav -c6 -s1 -l1

and keep incrementing the # with the speaker channel specified (ie in the above example it was " -s1 " ).

So try " -s2 " it would be


speaker-test -t wav -c6 -s2 -l1

and for " -s3 " it would be


speaker-test -t wav -c6 -s3 -l1

…etc all the way up to " -s6 " .

Do ANY of those send sound to the subwoofer?

Having typed the above - without further info, I believe configuring ‘pavucontrol’ may be your best bet to get this working.

Thanks for looking into this problem!

Yes pavucontrol is installed, i should have mentioned it in my first post, sorry. Playing with it doesn’t make any differences. The only output that is working is the “Analog Stereo Duplex”.
As for speaker-test all channels are ok but no bass can be heard. Sound does work but there’s no bass (sound is tiny as if low frequencies are cutted off).

After googling a bit, I found that aplay -iL can more clearly show what channels the sound card has:

null
    Discard all samples (playback) or generate zero samples (capture)
speexrate
    Rate Converter Plugin Using Speex Resampler
pulse
    PulseAudio Sound Server
upmix
    Plugin for channel upmix (4,6,8)
default
    Default ALSA Output (currently PulseAudio Sound Server)
hdmi:CARD=HDMI_1,DEV=0
    HDA Intel HDMI, HDMI 0
    HDMI Audio Output
hdmi:CARD=HDMI_1,DEV=1
    HDA Intel HDMI, HDMI 1
    HDMI Audio Output
hdmi:CARD=HDMI_1,DEV=2
    HDA Intel HDMI, HDMI 2
    HDMI Audio Output
hdmi:CARD=HDMI_1,DEV=3
    HDA Intel HDMI, HDMI 3
    HDMI Audio Output
hdmi:CARD=HDMI_1,DEV=4
    HDA Intel HDMI, HDMI 4
    HDMI Audio Output
sysdefault:CARD=PCH
    HDA Intel PCH, CS4208 Analog
    Default Audio Device
front:CARD=PCH,DEV=0
    HDA Intel PCH, CS4208 Analog
    Front output / input
surround21:CARD=PCH,DEV=0
    HDA Intel PCH, CS4208 Analog
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=PCH,DEV=0
    HDA Intel PCH, CS4208 Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=PCH,DEV=0
    HDA Intel PCH, CS4208 Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=PCH,DEV=0
    HDA Intel PCH, CS4208 Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=PCH,DEV=0
    HDA Intel PCH, CS4208 Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=PCH,DEV=0
    HDA Intel PCH, CS4208 Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=PCH,DEV=0
    HDA Intel PCH, CS4208 Digital
    IEC958 (S/PDIF) Digital Audio Output
hdmi:CARD=HDMI,DEV=0
    HDA ATI HDMI, HDMI 0
    HDMI Audio Output
hdmi:CARD=HDMI,DEV=1
    HDA ATI HDMI, HDMI 1
    HDMI Audio Output
hdmi:CARD=HDMI,DEV=2
    HDA ATI HDMI, HDMI 2
    HDMI Audio Output
hdmi:CARD=HDMI,DEV=3
    HDA ATI HDMI, HDMI 3
    HDMI Audio Output
hdmi:CARD=HDMI,DEV=4
    HDA ATI HDMI, HDMI 4
    HDMI Audio Output
hdmi:CARD=HDMI,DEV=5
    HDA ATI HDMI, HDMI 5
    HDMI Audio Output


Also played with some of the “model=” options we can pass to snd_hd_intel sound driver](https://www.kernel.org/doc/html/latest/sound/hd-audio/models.html#cirrus-logic-cs4208), without any luck. Arch Wiki doesn’t have any useful informations regarding this laptop.

mbp11 is likely your best ‘bet’ for a test, and I assume you tried that (rebooting after applying it to reload the alsa driver).

Rather than waste your time in this, your best bet may be to seek for help from an openSUSE sound packager who is also an alsa sound driver developer. You can do that by raising a bug report on the openSUSE kernel (I think < not sure > one can raise bugs on tumbleweed) noting the subwoofer in your MacBookPro11,5 does not work with the alsa driver (but left/right sound does work). Attach the alsa-info.sh diagnostic script to the bug report. Don’t bother referencing a forum thread as the openSUSE packager will not read a forum thread - so your bug report needs to include all the salient details.

There is guidance on raising bug reports here: openSUSE:Submitting bug reports - openSUSE Wiki

I believe you may be able to use your openSUSE forum username and password to log on to bugzilla, but I am not certain about that.

I don’t know the first thing about Macs, but I had thought if one has three speakers (left, right and woofer) then its a 2.1 system. I don’t see a 2.1 system listed in the " aplay -iL" output you provided. This also suggests to me this could be an issue with the alsa driver (albeit I am speculating).

But this one?

surround21:CARD=PCH,DEV=0
HDA Intel PCH, CS4208 Analog
2.1 Surround output to Front and Subwoofer speakers

Thanks again for your help.
I’ll fill in a bug report as you suggested with all the details on it. I also will report to this thread the filled bug report as this might interest others who run the same laptop under openSUSE :wink:

At first it’s what I thought but as @Svvatko pointed, the alsa driver does find a 2.1 system. I’m puzzled.

Thanks for the help. Yes the alsa driver is aware that it’s a 2.1 system.
As @oldcpu said it might be a bug in alsa’s driver. Will report that to bugzilla.

Bug report filled: https://bugzilla.opensuse.org/show_bug.cgi?id=1182222 :wink:

I missed that.

I believe that should be the selection that works. Nightstalker advised thou that only “Analog Stereo Duplex” works with pavucontrol / pulse audio. He doesn’t mention if he sees a surround-2.1 in the pavucontrol list. If there is no surround-2.1 or if that doesn’t work, then that suggests then there is an issue somewhere in either the alsa driver (ie the kernel), or in pulse audio.

The OP ( Nightstalker ) could test that directly to see if it works with this command (hopefully I have syntax correct):


speaker-test -Dplug:surround21:PCH -c6 -t wav -l1

And also try again, but this time with a temporary pulse audio suspension, with this command


pasuspender -- speaker-test -Dplug:surround21:PCH -c6 -t wav -l1

My suspicion is neither will work, but its worth a try.

With an ordinary builtin audio I have profiles for output: stereo, 2.1, 4.0, 4.1, 5.0, 5.1 (cannot get 7.1).
Audio card (chip) has support for a 2.1. You need to route sound to 2.1. IDK how to do this.

No dices unfortunately. The output of both commands:

**% speaker-test -Dplug:surround21:PCH -c6 -t wav -l1**

speaker-test 1.2.4

Le périphérique de lecture est plug:surround21:PCH
Les paramètres du flux sont 48000Hz, S16_LE, 6 canaux
fichier(s) WAV
La fréquence est 48000Hz (demandée 48000Hz)
L'intervalle de la taille du tampon est de 32 à 131072
L'intervalle de la taille de la période est de 16 à 65536
Taille max. de tampon 131072 utilisée
Périodes = 4
was set period_size = 32768
was set buffer_size = 131072
 0 - Avant Gauche
 4 - Centre
 1 - Avant Droit
 3 - Arrière Droit
 2 - Arrière Gauche
 5 - LFE
Temps par période = 8,885837

**% pasuspender -- speaker-test -Dplug:surround21:PCH -c6 -t wav -l1**

speaker-test 1.2.4

Le périphérique de lecture est plug:surround21:PCH
Les paramètres du flux sont 48000Hz, S16_LE, 6 canaux
fichier(s) WAV
La fréquence est 48000Hz (demandée 48000Hz)
L'intervalle de la taille du tampon est de 32 à 131072
L'intervalle de la taille de la période est de 16 à 65536
Taille max. de tampon 131072 utilisée
Périodes = 4
was set period_size = 32768
was set buffer_size = 131072
 0 - Avant Gauche
 4 - Centre
 1 - Avant Droit
 3 - Arrière Droit
 2 - Arrière Gauche
 5 - LFE
Temps par période = 8,883836

Unfortunately I also don’t know how to make profiles for pulseaudio.

What I’m having on pavucontrol: https://imgur.com/Km7Xbyt.png
And for each profile:

First menu (HDMI Audio (from the dGPU)): https://imgur.com/VimIjNb.png

Second one (Internal Audio): Imgur: The magic of the Internet

Third one (Internal Audio): Imgur: The magic of the Internet

Try to set up sound with YaST.
But be careful: check “who is who” with volume settings - YaST can give wrong names to sound cards.

Already did that and no luck unfortunately. Playing with pulseaudio doesn’t lead anywhere too.