我遇到了 alsa 设置在重启后无法恢复的问题。我有一个运行 15.04 的无头服务器,使用声音进行 shairport-sync。当我重启时,我得到了混乱的 alsa 设置(音量)。尝试恢复以前的配置会给我奇怪的值。以超级用户身份恢复有效;以普通用户身份恢复无效,除非我指定一个文件,否则它有效。
$ alsactl restore
alsactl: state_lock:125: file /var/lib/alsa/asound.state lock error: File exists
alsactl: load_state:1683: Cannot open /var/lib/alsa/asound.state for reading: File exists
Found hardware: "HDA-Intel" "Realtek ALC892" "HDA:10ec0892,1849d892,00100302" "0x1849" "0xd892"
Hardware is initialized using a generic method
$ sudo alsactl restore
[works]
$ alsactl --file ~/asound.state restore
[works too]
/var/lib/alsa/asound.state 和 ~/asound.state 应该相同。
另外,我重启后无法恢复工作;目前使用 rc.local,这不是很好吗?
答案1
嗯,我没有找到问题的实际解决方案,但是找到了一种变通方法。
- 剥去部分
rc.local
- 将 alsa-config 保存到文件:
alsactl --file ~/.asound.state store
- 编辑后
/etc/init.d/shairport-sync
添加/usr/bin/sudo /usr/sbin/alsactl --file /home/[username]/.asound.state restore
do_start() {
现在,每次shairport-sync
启动时,卷都会被重置,而且由于它在启动时启动,所以我的目的就实现了。不过,我无法解释这种奇怪的行为。