Сброс настроек ввода AlsaMixer при перезагрузке

Вопрос или проблема

Я работаю над аудиопроектом с помощью Raspberry Pi 3 (на последней версии Raspbian Jessie) с использованием звуковой карты AudioInjector (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, захват линейного входа снова выключен.

Кажется, что что-то еще происходит во время загрузки, что загружает другие настройки и отключает линейный вход.

Какие-нибудь идеи, что происходит?

Я использую ту же звуковую карту и после долгих исследований выяснил, что путь по умолчанию — это /etc/asound.state.

После того как настроил конфигурацию в этом пути и перезагрузил устройство, все вернулось в правильное состояние, как было определено в файле State.

Если ваша дистрибуция не предоставляет этого, вы можете использовать systemd-сервис, как показано ниже.

> systemctl cat alsa-restore.service 
# /lib/systemd/system/alsa-restore.service
#
# Обратите внимание, что существуют две различные схемы управления состоянием звуковых карт ALSA, и они
# могут переключаться с помощью проверки существования файла - /etc/alsa/state-daemon.conf.
#

[Unit]
Description=Сохранить/восстановить состояние звуковой карты
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

Ответ или решение

Проблема, с которой вы столкнулись, связана с сохранением настроек AlsaMixer на Raspberry Pi 3 при использовании звуковой карты AudioInjector. После перезагрузки настройки входа сбрасываются, несмотря на попытки сохранения с помощью команды sudo alsactl store.

Причина проблемы:

Скорее всего, причина заключается в том, что система загрузки в Raspbian может указывать на другое местоположение файла состояния ALSA, или загрузочная последовательность может переопределять уже сохраненные настройки. Это может происходить из-за конфликтов в системе управления состоянием звуковых карт или отложенных служб, загружающихся позже и изменяющих настройки.

Решение проблемы:

  1. Проверьте путь сохранения состояния ALSA:
    Убедитесь, что конфигурационный файл asound.state, расположенный в /etc/asound.state, является правильным местоположением для вашего дистрибутива. Из вашего описания следует, что перенесение состояния в /etc/asound.state решает проблему.

  2. Используйте systemd для управления состоянием:
    Создайте или проверьте существование системной службы ALSA, которая будет правильно сохранять и восстанавливать состояние звуковой карты. Воспользуйтесь следующим шаблоном systemd-сервиса:

    [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
    
    [Install]
    WantedBy=multi-user.target

    Убедитесь, что данный сервис активирован и запускается автоматически при старте системы.

  3. Модификация файлов rc.local:
    Проблема может возникать из-за недостатка времени для применения команд восстановления, добавленных в rc.local. Попробуйте добавить временные задержки или передвинуть данную команду в systemd-сервис, как описано выше.

  4. Проверка других конфигурационных файлов:
    Обязательно проверьте, нет ли других скриптов или конфигурационных файлов, которые могут изменять параметры звуковой карты на более поздних этапах загрузки.

Я надеюсь, что данные шаги помогут вам решить проблему и ваши настройки звука будут сохраняться после перезагрузки. Если возникнут дополнительные вопросы, пожалуйста, не стесняйтесь обратиться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...