Muffled/Low Quality Audio on openSUSE Leap 16 - Realtek ALC3246

I installed openSUSE Leap 16 and everything works well except for audio quality. The sound is muffled and low quality compared to Windows and other Linux distros (Fedora, Debian, Ubuntu) on the same hardware.

Hardware:

  • Audio Controller: Intel Corporation CM238 HD Audio Controller (rev 31)
  • Codec: Realtek ALC3246
  • Sound System: PipeWire 1.4.6

Issue:

  • Audio sounds muffled across all applications (Firefox, Spotify, Lollypop, Brave)
  • High and low frequencies are barely present/subdued
  • Overall sound quality is noticeably worse than on Windows or other distros

What I’ve tried:

  • Installed alsa-tools
  • Increased max volume with PulseAudio Volume Control (pavucontrol)
  • Verified drivers are loaded (snd_hda_codec_realtek is active)

System Info:

$ cat /proc/asound/cards

0 [PCH ]: HDA-Intel - HDA Intel PCH

HDA Intel PCH at 0xef348000 irq 140
$ cat /proc/asound/card0/codec#0 | head -4

Codec: Realtek ALC3246

Address: 0

AFG Function Id: 0x1 (unsol 1)

Vendor Id: 0x10ec0256

(I asked Claude to help me to organize all info you might need to help me)

Mod edited for better readability.

Run pactl list cards and share the output here as pre-formatted text when posting (refer to the </> button in the forum editor).

Posting code or preformatted text

Note the active profile. The issue could be the current output profile selection rather than hardware.

user-pc@localhost:~> pactl list cards
Card #52
	Name: alsa_card.pci-0000_00_1f.3
	Driver: alsa
	Owner Module: n/a
	Properties:
		api.acp.auto-port = "false"
		api.acp.auto-profile = "false"
		api.alsa.card = "0"
		api.alsa.card.longname = "HDA Intel PCH at 0xef348000 irq 140"
		api.alsa.card.name = "HDA Intel PCH"
		api.alsa.path = "hw:0"
		api.alsa.split-enable = "true"
		api.alsa.use-acp = "true"
		api.dbus.ReserveDevice1 = "Audio0"
		api.dbus.ReserveDevice1.Priority = "-20"
		device.api = "alsa"
		device.bus = "pci"
		device.bus_path = "pci-0000:00:1f.3"
		device.description = "Built-in Audio"
		device.enum.api = "udev"
		device.form_factor = "internal"
		device.icon_name = "audio-card-analog-pci"
		device.name = "alsa_card.pci-0000_00_1f.3"
		device.nick = "HDA Intel PCH"
		device.plugged.usec = "8086364"
		device.product.id = "0xa171"
		device.product.name = "CM238 HD Audio Controller"
		device.subsystem = "sound"
		sysfs.path = "/devices/pci0000:00/0000:00:1f.3/sound/card0"
		device.vendor.id = "0x8086"
		device.vendor.name = "Intel Corporation"
		media.class = "Audio/Device"
		spa.object.id = "2"
		factory.id = "15"
		client.id = "48"
		object.id = "52"
		object.serial = "52"
		object.path = "alsa:acp:PCH"
		alsa.card = "0"
		alsa.card_name = "HDA Intel PCH"
		alsa.long_card_name = "HDA Intel PCH at 0xef348000 irq 140"
		alsa.driver_name = "snd_hda_intel"
		alsa.mixer_name = "Realtek ALC3246"
		alsa.components = "HDA:10ec0256,102807d0,00100002 HDA:80862809,80860101,00100000"
		alsa.id = "PCH"
		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: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)
		input:analog-stereo: Analog Stereo Input (sinks: 0, sources: 1, priority: 65, available: yes)
		pro-audio: Pro Audio (sinks: 4, sources: 1, priority: 1, available: yes)
	Active Profile: output:analog-stereo+input:analog-stereo
	Ports:
		analog-input-internal-mic: Internal Microphone (type: Mic, priority: 8900, 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: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-input-headphone-mic: Microphone (type: Mic, priority: 8700, latency offset: 0 usec, availability group: Legacy 2, not available)
			Properties:
				port.type = "mic"
				port.availability-group = "Legacy 2"
				device.icon_name = "audio-input-microphone"
				card.profile.port = "1"
			Part of profile(s): input:analog-stereo, output:analog-stereo+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-input-headset-mic: Headset Microphone (type: Headset, priority: 8800, latency offset: 0 usec, availability group: Legacy 2, not available)
			Properties:
				port.type = "headset"
				port.availability-group = "Legacy 2"
				device.icon_name = "audio-input-microphone"
				card.profile.port = "2"
			Part of profile(s): input:analog-stereo, output:analog-stereo+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 3, availability unknown)
			Properties:
				port.type = "speaker"
				port.availability-group = "Legacy 3"
				device.icon_name = "audio-speakers"
				card.profile.port = "3"
			Part of profile(s): output:analog-stereo, output:analog-stereo+input:analog-stereo
		analog-output-headphones: Headphones (type: Headphones, priority: 9900, latency offset: 0 usec, availability group: Legacy 2, not available)
			Properties:
				port.type = "headphones"
				port.availability-group = "Legacy 2"
				device.icon_name = "audio-headphones"
				card.profile.port = "4"
			Part of profile(s): output:analog-stereo, output:analog-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 = "5"
			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 = "6"
			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 = "7"
			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

That checks out as expected.

Next steps:

Compare the results of pw-metadata -n settings 0 ( PipeWire graph policy) between Fedora (or Debian) and openSUSE. Share the output here.

Compare kernel output between the distros as well:
sudo dmesg |egrep "snd|firmware"

You could also compare pw-topwhile playing audio. That will show actual negotiated sample rate, resampling status, and graph load. Any differences may help determine next steps.

BTW, is this a laptop? Hardware details?
inxi -MAaz

Results from Fedora

I just booted a live cd of the last version of Fedora. I tested the audio and everything is fine using Fedora.

Results of pw-metadata -n settings 0 in Fedora

liveuser@localhost-live:~$ pw-metadata -n settings 0
Found "settings" metadata 32
update: id:0 key:'log.level' value:'2' type:''
update: id:0 key:'clock.rate' value:'48000' type:''
update: id:0 key:'clock.allowed-rates' value:'[ 48000 ]' type:''
update: id:0 key:'clock.quantum' value:'1024' type:''
update: id:0 key:'clock.min-quantum' value:'32' type:''
update: id:0 key:'clock.max-quantum' value:'2048' type:''
update: id:0 key:'clock.force-quantum' value:'0' type:''
update: id:0 key:'clock.force-rate' value:'0' type:''
liveuser@localhost-live:~$

Results for sudo dmesg |egrep "snd|firmware" in Fedora

liveuser@localhost-live:~$ sudo dmesg |egrep "snd|firmware"
[    4.004960] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/skl_dmc_ver1_27.bin (v1.27)
[   12.451437] SELinux:  Permission firmware_load in class system not defined in policy.
[   24.054767] systemd[1]: systemd-boot-clear-sysfail.service - Clear SysFail Entry If The Boot Is Successful was skipped because of an unmet condition check (ConditionPathExists=/sys/firmware/efi/efivars/LoaderEntrySysFail-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f).
[   24.054817] systemd[1]: systemd-hibernate-clear.service - Clear Stale Hibernate Storage Info was skipped because of an unmet condition check (ConditionPathExists=/sys/firmware/efi/efivars/HibernateLocation-8cf2644b-4b0b-428f-9387-6d876050dc67).
[   27.856698] Bluetooth: hci0: Minimum firmware build 1 week 10 2014
[   29.166584] Bluetooth: hci0: Found device firmware: intel/ibt-12-16.sfi
[   29.564277] snd_hda_intel 0000:00:1f.3: enabling device (0000 -> 0002)
[   29.564593] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops intel_audio_component_bind_ops [i915])
[   29.743243] iwlwifi 0000:01:00.0: loaded firmware version 36.c8e8e144.0 8265-36.ucode op_mode iwlmvm
[   30.056697] snd_hda_codec_alc269 hdaudioC0D0: ALC3246: picked fixup  (pin match)
[   30.088216] snd_hda_codec_alc269 hdaudioC0D0: autoconfig for ALC3246: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
[   30.088221] snd_hda_codec_alc269 hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[   30.088224] snd_hda_codec_alc269 hdaudioC0D0:    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
[   30.088226] snd_hda_codec_alc269 hdaudioC0D0:    mono: mono_out=0x0
[   30.088228] snd_hda_codec_alc269 hdaudioC0D0:    inputs:
[   30.088229] snd_hda_codec_alc269 hdaudioC0D0:      Internal Mic=0x12
[   30.088231] snd_hda_codec_alc269 hdaudioC0D0:      Headset Mic=0x19
[   30.088233] snd_hda_codec_alc269 hdaudioC0D0:      Headphone Mic=0x1a
[   30.875334] Bluetooth: hci0: Waiting for firmware download to complete

Results for pw-top in Fedora

I played La Yugular by Rosalia, a song that would play very weirdly in some parts where Rosalia reaches the highest notes. I will compare how it plays in Leap. Now I am going to boot my openSuse Leap 16 and post the results here shortly.

Results in OpenSuse Leap 16

Results for pw-metadata -n settings 0 in OpenSuse Leap 16

user-pc@localhost:~> pw-metadata -n settings 0
Found "settings" metadata 31
update: id:0 key:'log.level' value:'2' type:''
update: id:0 key:'clock.rate' value:'48000' type:''
update: id:0 key:'clock.allowed-rates' value:'[ 48000 ]' type:''
update: id:0 key:'clock.quantum' value:'1024' type:''
update: id:0 key:'clock.min-quantum' value:'32' type:''
update: id:0 key:'clock.max-quantum' value:'2048' type:''
update: id:0 key:'clock.force-quantum' value:'0' type:''
update: id:0 key:'clock.force-rate' value:'0' type:''
user-pc@localhost:~>

Results for sudo dmesg |egrep "snd|firmware" in OpenSuse Leap 16

[    2.887165] [     T28] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/skl_dmc_ver1_27.bin (v1.27)
[    6.638889] [      T1] systemd[1]: Clear Stale Hibernate Storage Info was skipped because of an unmet condition check (ConditionPathExists=/sys/firmware/efi/efivars/HibernateLocation-8cf2644b-4b0b-428f-9387-6d876050dc67).
[    7.319327] [     T96] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[    7.597972] [     T40] iwlwifi 0000:01:00.0: loaded firmware version 36.c8e8e144.0 8265-36.ucode op_mode iwlmvm
[    7.628417] [    T655] snd_hda_intel 0000:00:1f.3: enabling device (0000 -> 0002)
[    7.639395] [    T655] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[    7.739086] [    T744] snd_hda_codec_realtek hdaudioC0D0: ALC3246: picked fixup  (pin match)
[    7.770731] [    T744] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC3246: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
[    7.770738] [    T744] snd_hda_codec_realtek hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    7.770741] [    T744] snd_hda_codec_realtek hdaudioC0D0:    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
[    7.770743] [    T744] snd_hda_codec_realtek hdaudioC0D0:    mono: mono_out=0x0
[    7.770744] [    T744] snd_hda_codec_realtek hdaudioC0D0:    inputs:
[    7.770746] [    T744] snd_hda_codec_realtek hdaudioC0D0:      Internal Mic=0x12
[    7.770748] [    T744] snd_hda_codec_realtek hdaudioC0D0:      Headset Mic=0x19
[    7.770750] [    T744] snd_hda_codec_realtek hdaudioC0D0:      Headphone Mic=0x1a

Results for pw-top in OpenSuse Leap 16

The audio distorts and crackles during high-pitched vocals (like Rosalía’s high notes). It sounds like the audio is clipping - like the volume is too high even when it’s not.

I am using a laptop (Dell Inc. Latitude 5480)

Here are the results for the command

user-pc@localhost:~> inxi -MAaz
Machine:
  Type: Laptop System: Dell product: Latitude 5480 v: N/A
    serial: <superuser required> Chassis: type: 10 serial: <superuser required>
  Mobo: Dell model: 0CN25H v: A00 serial: <superuser required> part-nu: 07D0
    uuid: <superuser required> UEFI: Dell v: 1.39.0 date: 11/06/2024
Audio:
  Device-1: Intel CM238 HD Audio vendor: Dell driver: snd_hda_intel v: kernel
    alternate: snd_soc_avs bus-ID: 00:1f.3 chip-ID: 8086:a171 class-ID: 0403
  API: ALSA v: k6.12.0-160000.8-default status: kernel-api with: aoss
    type: oss-emulator tools: alsactl,alsamixer,amixer
  Server-1: PipeWire v: 1.4.6 status: active with: 1: pipewire-pulse
    status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
    4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl

The kernel logs show the same Realtek fixup on both distros, but Fedora applies it much later in boot. With openSUSE, the timestamps indicate that it happens early and perhaps partially overridden later by ALSA state/UCM defaults. This might explain the lower gain and muffled speaker output despite identical PipeWire and kernel behavior.

Check the ALSA mixer state between the two distros:
alsamixer -c 0

Settings such as Master, Speaker, PCM, Bass, Treble, any “Boost” controls.

If you need to make any adjustments to the openSUSE ALSA levels, run the following afterwards: sudo alsactl store