Only right speaker is playing sound on ubuntu 24.04, both work on windows. How to fix?
https://askubuntu.com/questions/1567846/only-right-speaker-is-playing-sound-on-ubuntu-24-04-both-work-on-windows-how-tLeft speaker silent on Packard Bell Senna (Acer Gadget e10 ETBook) under Ubuntu 24.04
It is dual boot. Booting into windows, both speakers work fine.
How to fix so both speakers work?
Information below.
Hardware
- Model: Packard Bell Senna i5 AMG (internal codename: Acer Gadget e10 ETBook)
- Audio codec: Realtek ALC269VC
- Subsystem ID:
0x1e507036(Acer vendor space; Packard Bell is an Acer subsidiary) - HDA controller: Intel Alder Lake PCH-P HD Audio (
8086:51c8, rev 01) - Kernel:
6.17.0-35-generic(Ubuntu 24.04.4 HWE) - OS: Ubuntu 24.04 LTS, default audio stack: PipeWire + WirePlumber
Symptoms
- The right internal speaker works normally.
- The headphone output (jack on right side) works normally.
- The left internal speaker produces no sound under any circumstances.
- This is a fresh Linux install; the right speaker and headphones work in the same dual-boot Windows install on the same hardware, so the speaker itself is functional. The issue is purely the Linux audio driver / routing.
- System is dual boot with windows. On windows all speakers work fine.
Codec layout (the root of the issue)
The ALC269VC in this chassis uses an asymmetric routing: the right speaker and the left speaker live on two completely separate paths that share neither DACs nor mixers. There is no single "Speaker" DAC.
DAC 0x03 (stereo) ---> mixer 0x0d (stereo) ---> pin 0x14 [right speaker, works]
DAC 0x02 (stereo) ---> mixer 0x0c (stereo) ---> pin 0x15 [headphone jack, works]
DAC 0x02 (stereo) ---> mixer 0x0f (MONO) ---> pin 0x17 [left speaker, SILENT]
Key facts from cat /proc/asound/card0/codec\#0:
- Pin 0x17 is a Mono Amp-Out widget (
wcaps 0x40050c). - Pin 0x17 has a BIOS default of
0x40000000("[N/A] Line Out at Ext N/A",DefAssociation = 0x0) — i.e. the BIOS has it disabled. - Pin 0x17 has
Pincap 0x00000010: OUTonly — no EAPD bit. - Mixer 0x0f is Mono with two inputs:
0x02(DAC 0x02) and0x0b(vendor widget, used for routing mic/line-in to output). - The right speaker pin 0x14's
Connection:list is0x0c 0x0d*— by default the driver selects mixer 0x0d (DAC 0x03). - The "Speaker" ALSA control corresponds to DAC 0x03, the "Headphone" ALSA control corresponds to DAC 0x02.
What has been tried
1. model= quirks (Phase 1 of original plan)
/etc/modprobe.d/snd-hda-intel.conf:
options snd-hda-intel model=acer-aspire-8930g
After update-initramfs -u and reboot: only the right speaker plays.
amixer still shows a single "Speaker" control; no new control is created
for pin 0x17. The model= binds the codec but the path through pin 0x17
remains silent.
2. Runtime hda-verb fix (the verbs that the codec path needs)
With PipeWire stopped, the following script was run via sudo:
#!/usr/bin/env bash
set -eu
DEV=/dev/snd/hwC0D0
SYSFS=/sys/class/sound/hwC0D0
# Tell parser pin 0x17 is a speaker
echo "0x17 0x90170110" > "$SYSFS/user_pin_configs"
echo 1 > "$SYSFS/reconfig"
sleep 2
# Enable pin 0x17
hda-verb "$DEV" 0x17 0x707 0x40 # Pin-ctls: OUT
hda-verb "$DEV" 0x17 0x3a8 0x00 # Amp-Out: unmuted
# Route DAC 0x02 to mono mixer 0x0f
hda-verb "$DEV" 0x0f 0x701 0x00 # Select input 0 (DAC 0x02)
hda-verb "$DEV" 0x0f 0x3a8 0x00 # Amp-In: unmuted
Result:
- The
user_pin_configs+reconfigis accepted (no EBUSY once PipeWire is stopped). - The codec state changes as expected:
- Pin 0x17:
Pin-ctls: 0x40: OUT,Amp-Out vals: [0x00] - Mixer 0x0f: input 0 (DAC 0x02) unmuted.
- Pin 0x17:
- A new ALSA mixer control appears:
Simple mixer control 'Bass Speaker',0. speaker-test -c2 -t sine -f440 -l1plays on the right speaker only. The left speaker is still silent.
3. Re-routing pin 0x14 to share DAC 0x02
To test whether the failure is that DAC 0x02 is not bound to the "Speaker" PCM stream, the script additionally does:
hda-verb "$DEV" 0x14 0x701 0x00 # Pin 0x14 connection: input 0 (mixer 0x0c, DAC 0x02)
After this, both pin 0x14 (right) and pin 0x15 (headphone) connect to mixer 0x0c, which is fed by DAC 0x02. Pin 0x17 already connects via mixer 0x0f to DAC 0x02. So a single stereo stream into DAC 0x02 would drive both speakers and the headphone.
Result: the right speaker still plays but only one channel, the left speaker remains silent.
What this tells us
The ALC269VC codec hardware is capable of driving both speakers; the
runtime verbs do configure the pin 0x17 path correctly. The remaining
question is which DAC receives audio during "Speaker" playback under
the standard snd-hda-intel driver.
For this codec, a stereo "Speaker" stream is bound to DAC 0x03 (the "Speaker" DAC). DAC 0x02 is bound only to the "Headphone" output. No matter how the codec is re-routed, audio sent to the "Speaker" PCM reaches DAC 0x03 only, leaving DAC 0x02 — and therefore pin 0x17 — silent.
The "Speaker" PCM needs to be reconfigured to drive both DACs (e.g. as a
4-channel output with channel map to both DACs), or a PipeWire combined
sink needs to fan audio to both Speaker and Bass Speaker simultaneously.
The first option requires a kernel-side fixup; the second is a
userspace configuration.
How to reproduce
- Boot Ubuntu 24.04.4 with kernel
6.17.0-35-generic. - Confirm the right speaker works, left doesn't:
speaker-test -c2 -t sine -f440 -l1 - Confirm the codec layout:
sudo cat /proc/asound/card0/codec\#0 | grep -E "0x14 |0x15 |0x17 |0x0c |0x0d |0x0f " - (Optional) Apply the runtime script above to see the
Bass Speakercontrol appear and confirm the codec path can be enabled.
Information that would help debug
- The PCM stream binding during playback:
cat /proc/asound/card0/stream0whilespeaker-testis running. - The DAC
0xf01response during playback:sudo hda-verb /dev/snd/hwC0D0 0x02 0xf01 0x00and the same for 0x03. - Whether any existing
model=quirk (e.g.acer-aspire-8930gfor 2.1 speaker setups) is supposed to set up multi-DAC routing for this ALC269VC variant, and why it doesn't.






