AlsaMixer 输入设置在重启时重置

AlsaMixer 输入设置在重启时重置

我正在使用 Raspberry Pi 3(运行最新版本的 Raspbian Jessie)和 AudioInjector SoundCard 开发音频项目(http://www.audioinjector.net/) 用于输入/输出。我尝试使用 sudo alsactl store 保存我的输入设置,但输入设置在重启时不断被重置。我只是尝试默认打开行输入。

我更改 alsamixer 中的设置以打开线路输入,然后运行:

sudo alsactl store 0

我看到 /var/lib/alsa/asound.state 中的设置已更改,但它们在重启时仍会更改回来,包括在 asound.state 文件中。我在 asound.state 中查看:

state.audioinjectorpi {
...
control.4{
iface MIXER
name 'Line Capture Switch'
value.0 false
value.1 false
comment{
access 'read write'
type BOOLEAN
count 2
}
}
...
}

我还尝试了一种解决方法,其中添加了以下行:

sudo amixer -c 0 sset Line,0 100%, 100% unmute cap > /home/pi/Desktop/result.txt

到我的 /etc/rc.local,它成功运行并创建了 result.txt 文件,该文件显示该命令成功打开了行输入,但是当我打开 alsamixer 时,行输入捕获又关闭了。

似乎在启动过程中的某个时刻可能发生了其他事情,从而加载不同的设置并关闭线路输入。

知道这里发生什么事吗?

答案1

我使用的是相同的音频卡,经过深入研究后发现,默认路径是 /etc/asound.state

将配置放入此路径后,然后重新启动设备,一切恢复到状态文件中定义的正确方式。

答案2

如果你的发行版没有提供,你可以使用systemd 服务如下所示。

> systemctl cat alsa-restore.service 
# /lib/systemd/system/alsa-restore.service
#
# Note that two different ALSA card state management schemes exist and they
# can be switched using a file exist check - /etc/alsa/state-daemon.conf .
#

[Unit]
Description=Save/Restore Sound Card State
Documentation=man:alsactl(1)
ConditionPathExists=!/etc/alsa/state-daemon.conf
ConditionPathExistsGlob=/dev/snd/control*
After=alsa-state.service

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=-/usr/sbin/alsactl -E HOME=/run/alsa -E XDG_RUNTIME_DIR=/run/alsa/runtime restore
ExecStop=-/usr/sbin/alsactl -E HOME=/run/alsa -E XDG_RUNTIME_DIR=/run/alsa/runtime store

相关内容