Woofer Speaker not Working Properly

Hello,

Recently I’ve noticed that on my Macbook Pro 13 mid 2012 internal subwoofer work only on the right channel with Analog Stereo Output preset and doesn’t work at all with Analog Surround 2.1.

inxi -Aazy                                                       ✔ 
Audio:
  Device-1: Intel 7 Series/C216 Family High Definition Audio
    driver: snd_hda_intel v: kernel bus-ID: 00:1b.0 chip-ID: 8086:1e20
    class-ID: 0403
  API: ALSA v: k6.1.64-1-MANJARO status: kernel-api with: aoss
    type: oss-emulator tools: alsactl,alsamixer,amixer
  Server-1: PipeWire v: 1.0.0 status: active with: 1: pipewire-pulse
    status: active 2: pipewire-media-session status: active 3: pipewire-alsa
    type: plugin 4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli
pactl list sinks                                             INT ✘ 
Sink #93
	State: SUSPENDED
	Name: alsa_output.pci-0000_00_1b.0.analog-stereo
	Description: Built-in Audio Analog Stereo
	Driver: PipeWire
	Sample Specification: s32le 2ch 48000Hz
	Channel Map: front-left,front-right
	Owner Module: 4294967295
	Mute: no
	Volume: front-left: 48245 /  74% / -7,98 dB,   front-right: 48245 /  74% / -7,98 dB
	        balance 0,00
	Base Volume: 52057 /  79% / -6,00 dB
	Monitor Source: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
	Latency: 0 usec, configured 0 usec
	Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
	Properties:
		object.path = "alsa:pcm:0:front:0:playback"
		api.alsa.path = "front:0"
		api.alsa.pcm.card = "0"
		api.alsa.pcm.stream = "playback"
		audio.channels = "2"
		audio.position = "FL,FR"
		device.routes = "2"
		alsa.resolution_bits = "16"
		device.api = "alsa"
		device.class = "sound"
		alsa.class = "generic"
		alsa.subclass = "generic-mix"
		alsa.name = "CS4206 Analog"
		alsa.id = "CS4206 Analog"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		alsa.device = "0"
		alsa.card = "0"
		alsa.card_name = "HDA Intel PCH"
		alsa.long_card_name = "HDA Intel PCH at 0xa0810000 irq 50"
		alsa.driver_name = "snd_hda_intel"
		device.profile.name = "analog-stereo"
		device.profile.description = "Analog Stereo"
		card.profile.device = "7"
		device.id = "42"
		factory.name = "api.alsa.pcm.sink"
		priority.driver = "1009"
		priority.session = "1009"
		media.class = "Audio/Sink"
		node.nick = "HDA Intel PCH"
		node.name = "alsa_output.pci-0000_00_1b.0.analog-stereo"
		device.description = "Built-in Audio"
		device.icon_name = "audio-card-analog"
		device.bus = "pci"
		device.bus_path = "pci-0000:00:1b.0"
		device.form_factor = "internal"
		node.pause-on-idle = "false"
		factory.id = "18"
		clock.quantum-limit = "8192"
		client.id = "33"
		node.driver = "true"
		factory.mode = "merge"
		audio.adapt.follower = ""
		library.name = "audioconvert/libspa-audioconvert"
		object.id = "43"
		object.serial = "93"
		device.enum.api = "udev"
		api.alsa.card = "0"
		api.alsa.card.name = "HDA Intel PCH"
		api.alsa.card.longname = "HDA Intel PCH at 0xa0810000 irq 50"
		device.plugged.usec = "5631689"
		sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card0"
		device.subsystem = "sound"
		device.vendor.id = "0x8086"
		device.vendor.name = "Intel Corporation"
		device.product.id = "0x1e20"
		device.product.name = "7 Series/C216 Chipset Family High Definition Audio Controller"
		device.name = "alsa_card.pci-0000_00_1b.0"
		device.nick = "HDA Intel PCH"
		api.alsa.use-acp = "true"
		api.acp.auto-profile = "false"
		api.acp.auto-port = "false"
		api.dbus.ReserveDevice1 = "Audio0"
		device.string = "0"
	Ports:
		analog-output-speaker: Speakers (type: Speaker, priority: 10000, availability group: Legacy 2, availability unknown)
		analog-output-headphones: Headphones (type: Headphones, priority: 9900, availability group: Legacy 3, not available)
	Active Port: analog-output-speaker
	Formats:
		pcm

I think a couple of things here.

  • a subwoofer setup fed with 2 channels of audio (as I have) will filter off lower end frequencies (usually around 60Hz down for speakers, but I’d imagine the low end of most laptops is around 600Hz - which is hardly ‘subwoofer’).

My previous incarnation fed a Reciever via HDMI - it was the job of the Reciever to generate an LFE channel for LINE level output to an active subwoofer.

My current incarnation has a 2.1 Class-D amplifier for the front - which is fed 2.0 stereo and filters off bass below 60Hz to the subwoofer as my loudspeakers are rated at 45Hz, but in practice the level at that frequency is around -3dB already. Listening to tone sweeps, I adjusted the cutoff frequency and then determined that at 60Hz, the overlap was pretty smooth…

You will not need a separate LFE channel for an internal bass unit, that will be the Mac’s electronics’ job to suit it’s own hardware.

The 15" MBP of that time would output 300Hz (with it’s ‘sub’ woofer), with pronounced boost to the upper mid frequencies - so a fuller sound than the average laptop.

Here you can see, they have a single ‘subwoofer’ which is wired with the Right Speaker.

It does not have 2 subwoofers… I cannot imagine why one side would differ, so I’d suggest it maybe hardware related.

Outside replacing the internal speakers you have a couple of options:

  1. Take the HDMI output to a reciever and use your main speakers in the house.

  2. For another regular location, just buy a 2.1 channel amplifier if you have a sub available, find/buy speakers for it - a ZK TB21 (very cheap) sounds excellent, and drives my Monitor Audio fronts plus Polk 12" subwoofer.

  3. Buy an even cheaper 2.0 channel amplifier and speakers. I have one of these to drive my rear channels, and it sounds JUST as good as the 2.1 amplifier but lacks oomph from 60Hz down.

  4. Out and about - bluetooth vs wired headphones vs earphones… guaranteed sound quality for every environment.

Open headphones are nice equivalent to listening to music without feeling isolated - you can get very small ones (I love my Sennheiser PX100’s - surprisingly deep response for such small units).

There should be a way to map internal subwoofer correctly.

I’ve found this topic and tried to edit conf files in /usr/share/alsa-card-profile/mixer/profile-sets/ But any changes have o impact on the current sound profile and I don’t understand which exact config file is used by ALSA.

https://askubuntu.com/questions/448292/audio-on-macbook-2-1

to map the internal subwoofer correctly there can be few key steps and ways you can try them:
Identify your sound card with aplay -l.
Edit the relevant ALSA configuration file.
Adjust subwoofer mapping settings.
Restart ALSA or reboot for changes to take effect.
Test sound output with speaker-test.

There’s no conf files for CS4206…

aplay -l                                                       1 ✘ 
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: CS4206 Analog [CS4206 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: CS4206 Digital [CS4206 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

pactl list cards

pactl list cards                                             INT ✘ 
Card #42
	Name: alsa_card.pci-0000_00_1b.0
	Driver: alsa
	Owner Module: n/a
	Properties:
		device.enum.api = "udev"
		device.api = "alsa"
		media.class = "Audio/Device"
		api.alsa.path = "hw:0"
		api.alsa.card = "0"
		api.alsa.card.name = "HDA Intel PCH"
		api.alsa.card.longname = "HDA Intel PCH at 0xa0810000 irq 50"
		device.plugged.usec = "5728404"
		device.bus_path = "pci-0000:00:1b.0"
		sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card0"
		device.bus = "pci"
		device.subsystem = "sound"
		device.vendor.id = "0x8086"
		device.vendor.name = "Intel Corporation"
		device.product.id = "0x1e20"
		device.product.name = "7 Series/C216 Chipset Family High Definition Audio Controller"
		device.form_factor = "internal"
		device.name = "alsa_card.pci-0000_00_1b.0"
		device.description = "Built-in Audio"
		device.nick = "HDA Intel PCH"
		device.icon_name = "audio-card-pci"
		api.alsa.use-acp = "true"
		api.acp.auto-profile = "false"
		api.acp.auto-port = "false"
		api.dbus.ReserveDevice1 = "Audio0"
		factory.id = "14"
		client.id = "33"
		object.id = "42"
		object.serial = "42"
		object.path = "alsa:pcm:0"
		alsa.card = "0"
		alsa.card_name = "HDA Intel PCH"
		alsa.long_card_name = "HDA Intel PCH at 0xa0810000 irq 50"
		alsa.driver_name = "snd_hda_intel"
		device.string = "0"
	Profiles:
		off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
		output:analog-stereo+input:analog-stereo: Analog Stereo Duplex (sinks: 1, sources: 1, priority: 6565, available: yes)
		output:analog-stereo: Analog Stereo Output (sinks: 1, sources: 0, priority: 6500, available: yes)
		output:hdmi-stereo+input:analog-stereo: Digital Stereo (HDMI) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 5965, available: no)
		output:hdmi-stereo: Digital Stereo (HDMI) Output (sinks: 1, sources: 0, priority: 5900, available: no)
		output:hdmi-stereo-extra1+input:analog-stereo: Digital Stereo (HDMI 2) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 5765, available: no)
		output:hdmi-stereo-extra2+input:analog-stereo: Digital Stereo (HDMI 3) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 5765, available: no)
		output:hdmi-stereo-extra1: Digital Stereo (HDMI 2) Output (sinks: 1, sources: 0, priority: 5700, available: no)
		output:hdmi-stereo-extra2: Digital Stereo (HDMI 3) Output (sinks: 1, sources: 0, priority: 5700, available: no)
		output:iec958-stereo+input:analog-stereo: Digital Stereo (IEC958) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 5565, available: yes)
		output:iec958-stereo: Digital Stereo (IEC958) Output (sinks: 1, sources: 0, priority: 5500, available: yes)
		output:analog-surround-21+input:analog-stereo: Analog Surround 2.1 Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 1365, available: yes)
		output:analog-surround-21: Analog Surround 2.1 Output (sinks: 1, sources: 0, priority: 1300, available: yes)
		output:analog-surround-40+input:analog-stereo: Analog Surround 4.0 Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 1265, available: yes)
		output:analog-surround-40: Analog Surround 4.0 Output (sinks: 1, sources: 0, priority: 1200, available: yes)
		output:hdmi-surround+input:analog-stereo: Digital Surround 5.1 (HDMI) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 865, available: no)
		output:hdmi-surround71+input:analog-stereo: Digital Surround 7.1 (HDMI) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 865, available: no)
		output:hdmi-surround: Digital Surround 5.1 (HDMI) Output (sinks: 1, sources: 0, priority: 800, available: no)
		output:hdmi-surround71: Digital Surround 7.1 (HDMI) Output (sinks: 1, sources: 0, priority: 800, available: no)
		output:hdmi-surround-extra1+input:analog-stereo: Digital Surround 5.1 (HDMI 2) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 665, available: no)
		output:hdmi-surround71-extra1+input:analog-stereo: Digital Surround 7.1 (HDMI 2) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 665, available: no)
		output:hdmi-surround-extra2+input:analog-stereo: Digital Surround 5.1 (HDMI 3) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 665, available: no)
		output:hdmi-surround71-extra2+input:analog-stereo: Digital Surround 7.1 (HDMI 3) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 665, available: no)
		output:hdmi-surround-extra1: Digital Surround 5.1 (HDMI 2) Output (sinks: 1, sources: 0, priority: 600, available: no)
		output:hdmi-surround71-extra1: Digital Surround 7.1 (HDMI 2) Output (sinks: 1, sources: 0, priority: 600, available: no)
		output:hdmi-surround-extra2: Digital Surround 5.1 (HDMI 3) Output (sinks: 1, sources: 0, priority: 600, available: no)
		output:hdmi-surround71-extra2: Digital Surround 7.1 (HDMI 3) Output (sinks: 1, sources: 0, priority: 600, available: no)
		output:iec958-ac3-surround-51+input:analog-stereo: Digital Surround 5.1 (IEC958/AC3) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 365, available: yes)
		output:iec958-ac3-surround-51: Digital Surround 5.1 (IEC958/AC3) Output (sinks: 1, sources: 0, priority: 300, available: yes)
		input:analog-stereo: Analog Stereo Input (sinks: 0, sources: 1, priority: 65, available: yes)
		pro-audio: Pro Audio (sinks: 5, sources: 1, priority: 1, available: yes)
	Active Profile: output:analog-stereo+input:analog-stereo
	Ports:
		analog-input-mic: Microphone (type: Mic, priority: 8700, latency offset: 0 usec, availability group: Legacy 1, availability unknown)
			Properties:
				port.type = "mic"
				port.availability-group = "Legacy 1"
				device.icon_name = "audio-input-microphone"
				card.profile.port = "0"
			Part of profile(s): input:analog-stereo, output:analog-stereo+input:analog-stereo, output:analog-surround-21+input:analog-stereo, output:analog-surround-40+input:analog-stereo, output:iec958-stereo+input:analog-stereo, output:iec958-ac3-surround-51+input:analog-stereo, output:hdmi-stereo+input:analog-stereo, output:hdmi-surround+input:analog-stereo, output:hdmi-surround71+input:analog-stereo, output:hdmi-stereo-extra1+input:analog-stereo, output:hdmi-surround-extra1+input:analog-stereo, output:hdmi-surround71-extra1+input:analog-stereo, output:hdmi-stereo-extra2+input:analog-stereo, output:hdmi-surround-extra2+input:analog-stereo, output:hdmi-surround71-extra2+input:analog-stereo
		analog-output-speaker: Speakers (type: Speaker, priority: 10000, latency offset: 0 usec, availability group: Legacy 2, availability unknown)
			Properties:
				port.type = "speaker"
				port.availability-group = "Legacy 2"
				device.icon_name = "audio-speakers"
				card.profile.port = "1"
			Part of profile(s): output:analog-stereo, output:analog-stereo+input:analog-stereo, output:analog-surround-21, output:analog-surround-21+input:analog-stereo, output:analog-surround-40, output:analog-surround-40+input:analog-stereo
		analog-output-headphones: Headphones (type: Headphones, priority: 9900, latency offset: 0 usec, availability group: Legacy 3, not available)
			Properties:
				port.type = "headphones"
				port.availability-group = "Legacy 3"
				device.icon_name = "audio-headphones"
				card.profile.port = "2"
			Part of profile(s): output:analog-stereo, output:analog-stereo+input:analog-stereo
		iec958-stereo-output: Digital Output (S/PDIF) (type: SPDIF, priority: 0, latency offset: 0 usec, availability unknown)
			Properties:
				port.type = "spdif"
				card.profile.port = "3"
			Part of profile(s): output:iec958-stereo, output:iec958-stereo+input:analog-stereo
		hdmi-output-0: HDMI / DisplayPort (type: HDMI, priority: 5900, latency offset: 0 usec, availability group: Legacy 4, not available)
			Properties:
				port.type = "hdmi"
				port.availability-group = "Legacy 4"
				device.icon_name = "video-display"
				card.profile.port = "4"
			Part of profile(s): output:hdmi-stereo, output:hdmi-stereo+input:analog-stereo, output:hdmi-surround, output:hdmi-surround+input:analog-stereo, output:hdmi-surround71, output:hdmi-surround71+input:analog-stereo
		hdmi-output-1: HDMI / DisplayPort 2 (type: HDMI, priority: 5800, latency offset: 0 usec, availability group: Legacy 5, not available)
			Properties:
				port.type = "hdmi"
				port.availability-group = "Legacy 5"
				device.icon_name = "video-display"
				card.profile.port = "5"
			Part of profile(s): output:hdmi-stereo-extra1, output:hdmi-stereo-extra1+input:analog-stereo, output:hdmi-surround-extra1, output:hdmi-surround-extra1+input:analog-stereo, output:hdmi-surround71-extra1, output:hdmi-surround71-extra1+input:analog-stereo
		hdmi-output-2: HDMI / DisplayPort 3 (type: HDMI, priority: 5700, latency offset: 0 usec, availability group: Legacy 6, not available)
			Properties:
				port.type = "hdmi"
				port.availability-group = "Legacy 6"
				device.icon_name = "video-display"
				card.profile.port = "6"
			Part of profile(s): output:hdmi-stereo-extra2, output:hdmi-stereo-extra2+input:analog-stereo, output:hdmi-surround-extra2, output:hdmi-surround-extra2+input:analog-stereo, output:hdmi-surround71-extra2, output:hdmi-surround71-extra2+input:analog-stereo

Hmmm can’t work out why it comes up with ‘device.product.name = “7 Series/C216 Chipset Family High Definition Audio Controller”’ because this should be CS4206.