如何保存AlsaMixer设置?


76

您好,我已经尝试了“ EarCandy”程序,现在有/有很多问题。起初我没有听到任何声音,但是现在音量很小。PS Earcandy现在已从我的硬盘中删除。

当我用以下方法打开Alsamixer时:

alsamixer

我看到扬声器的音量为零。现在,我将其推到最大音量。但是,每次重新启动后,我必须再次打开alsamixer,并且必须再次将音量设置为max。我可以保存alsamixer的设置,还是有其他解决方法? 在此处输入图片说明

Answers:


74

执行:

sudo alsactl store

这应该保存alsamixer配置,/etc/asound.state每次启动时都会将配置加载到其中。


14
即使运行上述命令,我的笔记本电脑仍继续重置我的配置。它声称将其存储到/var/lib/alsa/asound.state。还有其他原因导致它无法正常工作吗?
Azmisov

1
我尝试sudo alsactl存储时遇到完全相同的问题,并且行为完全相同。
JeanSibelius

1
@Azmisov:您可以像下面这样进一步测试系统:(1)存储配置(2)启动alsamixer和更改主级别(2)还原配置(3)检查是否已还原主级别。如果符合预期,请检查是否在系统启动时实际触发了还原(chkconfig alsa-utils应显示alsa-utils on)。
dma_k 2015年

这个答案解决了我的SPDIF问题:askubuntu.com/questions/541847/…–
neves

1
运行sudo alsactl store时,出现以下错误alsactl: get_controls:567: snd_ctl_open error: Invalid argument
user2513149

23

您还可以使用以下命令将调音台设置保存到自定义文件中alsactl

alsactl --file ~/.config/asound.state store

重新加载:

alsactl --file ~/.config/asound.state restore

2
最佳答案对我不起作用,但确实如此!我创建了一个配置文件,并将其放置在/etc/asound.state,并将重新加载行添加到/etc/rc.local
约翰

这对我来说是正确的解决方案...但是我必须在其中指定.config文件的绝对路径rc.local(尽管即使是相对的,它也可以使用,因为它是同一用户..但不是)。谢谢,我希望我的提示也能对某人
有所

12

SeppoErviälä的回答是正确的,但并不完整。如dma_k所述,最后man alsactl明确指出,

/var/lib/alsa/asound.state(或使用-f标志指定的任何文件)用于存储声卡的当前设置。

palacsinit适当地指出,您可以使用以下命令将配置存储到文件中

alsactl --file ~/.config/asound.state store

并重新加载

alsactl --file ~/.config/asound.state restore

通过将第二行还原命令放置到.desktop文件中,可以进一步改善此效果。

您将需要运行nano ~/.config/autostart/alsarestore.desktop,这将打开nano文本编辑器并创建~/.config/autostart/alsarestore.desktop文件。~/.config/autostart/目录中的条目用于在启动/图形登录时自动启动特定用户的程序和服务。

.desktop文件的内容应为以下内容:

[Desktop Entry]
Type=Application
Terminal=false
Name=alsarestore
Exec=alsactl --file ~/.config/asound.state restore

除其他外,您可以将配置存储在/etc/asound.state并将其符号链接到/var/lib/alsa/asound.state,但这不是一个建议,而是经过测试的解决方案


这是我在Ubuntu Xenial 16.04上为我工作的唯一方式
Francisco Costa

1
“存储”和“恢复”命令可以很好地进行手动控制。但是,当我使用“ restore”命令设置自动启动文件时,我看到alsamixer中的麦克风设置被重写为静音,结果是静态的。如果我手动执行restore命令,一切都很好。为什么麦克风设置会更改,并且无法通过自动启动正确保存的配置文件进行纠正???
布莱德·霍恩

@BradHorn您可能还有其他东西要覆盖您的命令。它运行了,但是随后又有其他东西撤消了它的更改
Sergiy Kolodyazhnyy

任何想法可能是什么?
布莱德·霍恩

1
@BradHorn不是我的头顶,不是。尝试将文件中的Exec行更改.desktopExec=bash -c "sleep 5 && alsactl --file ~/.config/asound.state restore"。这将导致5秒钟的延迟,因此覆盖设置的所有内容都会先运行,然后再运行restore命令。sleep如果仍然覆盖您的设置,请尝试使用这些值。
Sergiy Kolodyazhnyy

2

经过2个月的尝试使“ sudo alsactl存储”正常工作,我终于做到了。首先输入终端“ alsamixer”以进入alsamixer UI。然后进行所需的配置(例如,增加扬声器/耳机的音量或按键盘上的“ m”取消静音)。现在最重要的部分。在退出alsamixer之前,打开一个新的终端并执行:“ sudo su”以获取高特权(请谨慎使用在“ sudo su”模式下使用的命令,因为您可能会破坏系统),然后执行“ alsactl store”保存alsa设置。然后关闭两个终端,然后重新启动计算机。这样就可以了。


这对我不起作用。
kleinfreund '18

为我工作,而不是确切地在这里如何工作,而是与一起工作sudo su
ДмитрийПолянин

1

Sergiy Kolodyazhnyy的解决方案为我工作。虽然我必须添加的修改Exec=bash -c "sleep 5 ...。确实发生这种情况是因为PulseAudio正在修改ALSA。
另一个解决方案是在引导过程中禁用PulseAudio(请参见此处):

sudo cp /etc/pulse/client.conf /etc/pulse/client.confbackup
sudo nano /etc/pulse/client.conf

查找; autospawn = yes,删除;并将其更改为:

autospawn = no

尽管Ubuntu在启动时给我一个系统程序错误,但该解决方案也对我有用。因为我讨厌这种消息,所以我使用了第一个解决方案。



0

Alsa-Json-Gateway https://github.com/fulup-bzh/AlsaJsonGateway支持通过JSON / REST API存储/恢复声卡会话

  • 列出会话/ jsonapi?request = session-list&cardid = hw:0
  • 存储会话/ jsonapi?request = session-store&cardid = hw:0&args = MySoundConfig
  • 恢复/ jsonapi?request = session-load&cardid = hw:0&args = MySoundConfig

0

对于@Sergiy Kolodyazhnyy的答案无效的用户,请尝试alsactl以其完整路径替换(无论which alsactl返回的内容如何)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.