Skip to content

Audio Fix

tomsom edited this page Jan 18, 2023 · 17 revisions

While not perfect this fix will make the audio at least bearable. It will switch the audio output from the upper tweeters to the down firing woofers. The fix is explained here: https://github.com/PJungkamp/yoga9-linux/issues/8#issuecomment-1265454056

Unfortunately values set by i2cset seem not to be permanent. If a media stream is stopped it often resets to the default tweeters. If you have know more and have an idea for a more permanent solution pls reach out :) thx

In summary

sudo su and execute following steps:

Make sure to have i2c-tools installed:

fedora:

dnf install i2c-tools

ubuntu:

apt install i2c-tools

arch:

pacman -S i2c-tools

Create a service to switch to the woofers on boot:

cat > /etc/systemd/system/yoga7-speaker-boot-fix.service << 'UNIT'
[Unit]
Description=yoga7 bass speaker on
After=graphical.target suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target
[Service]
ExecStart=/bin/bash -c '/usr/sbin/i2cset -y 3 0x48 0x2 0 && /usr/sbin/i2cset -y 3 0x48 0x3 0'
[Install]
WantedBy=graphical.target suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target

and make it executable:

chmod +x /etc/systemd/system/yoga7-speaker-boot-fix.service

Disable sound power management:

Note: This might come with a risk of damaging the speakers if over amplified

cat > /etc/modprobe.d/alsa-base.conf << 'CONF'
 options snd_hda_intel power_save=0 power_save_controller=N
CONF

Enable, start and reload:

systemctl daemon-reload
systemctl enable --now yoga7-speaker-boot-fix.service