Translation(s): English - Français - Italiano - Русский


ru/Hardware - Sound


ALSA 2015-11-01

ALSA (Advanced Linux Sound Architecture) это одновременно и проект и программное обеспечение. Проект был создан, так как архитектура OSS в некоторых отношениях является технически слабой, и свободная версия OSS содержит недостатки в некоторых драйверах, а драйверы без недостатков доступны только в коммерческих версиях. В течении нескольких лет программное обеспечение ALSA разрабатывалось отдельно от Linux. Драйверы были добавлены в базу кода Linux во время разработки серий ядра 2.5 и стали стандартной системой драйвера звука в ядре Linux 2.6..

ALSA это не только набор драйверов звуковый драйверов; это также это и библиотека с собственными расширениями API, которая позволяет приложениям взаимодействовать с последними возможностями звуковых карточек (т.н. множество звуковых каналов, Dolby AC3, и т.д.). ALSA предоставляет эффективную поддержку для множества приложений, также полностью построена из модулей, поддерживает SMP и thread-safe.

Приложения, написанные для OSS, работают с ALSA, либо через эмуляцию пространства пользователя (используя программный загрузчик aoss), либо через эмуляцию пространства ядра (snd-*-oss драйверы). Но, Вы не можете одновременно использовать драйверы и ALSA, и OSS.

Примечание: название драйверов ALSA всегда начинается с snd- .

Пакеты

Загрузка модулей

Пакет alsa-base сделан по принципу "просто" работает. Пакет alsa-base не загружает модули; вместо этого, udev обнаруживает звуковые устройства и загружает подходящие ALSA модули и затем alsa-base заботится о настройке использования уровней микшера.

Для настройки alsa нужно выполнить команду 'alsactl init' от имени пользователя root. Просто проигнорируйте сообщения об ошибках, вида 'Unknown hardware' (эта проблема исправлена в alsa-utils .20), затем перезагрузитесь и попытайтесь протестировать ваш звук. Остальные детали, пожалуйста, смотрите в этой теме.

Вы также можете попытаться обнаружить и настроить вашу звуковую карту вручную.

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

ALSA и OSS

Если ваша система уже настроена на загрузку драйверов OSS для вашей звуковой карты, то посмотрите на конфигурационные файлы загрузчика на ваш текущий, используемый модуль. Там будут присутствовать записи для модулей OSS, которые подскажут Вам, какой у вашей звуковой карточки чипсет. Не забудьте эти записи отключить, прежде, чем перенастраивать систему на загрузку модулей ALSA.

Если Вы не выгрузите все модули OSS, то тогда модули ALSA не смогут инициализироваться (или работать должным образом), потому что звуковое оборудование, которым должен управлять драйвер ALSA, будет занято драйвером OSS. Если Вы видите сообщение "sound card not detected", и Вы уверены, что установлен правильный драйвер ALSA, причина может быть в наличии модуля OSS.

Тестирование

Для тестирования драйвера, используйте aplay, mplay или, например, xmms.

Для тестирования midi, вы можете использовать aplaymidi.

Совместное использование карты несколькими процессами

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

Если Ваша дешёвая звуковая карта не поддерживает аппаратное смешивание, то можно попробовать плагин dmix. Это автоматически настраивается с версии libasound2 1.0.10-2; в предыдущих версиях, взгляните на /usr/share/doc/libasound2/examples/asound.conf_dmix, чтобы рассмотреть, как включить DMIX в файле /etc/asound.conf (для всех пользователей) или ~.asoundrc (для Вашего пользователя).

Пример .asoundrc для современных ноутбуков, которые имеют один HDMI и простую звуковую карту в the wrong order would be (используйте сначала aplay -l чтобы получить имена ваших карт):

defaults.pcm.!card Generic_1
defaults.ctl.!card Generic_1
defaults.pcm.!device 0
defaults.ctl.!device 0

Альтернативный метод

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

1. Скачайте Realtek HD Audio Codec Driver. Перейдите по ссылке на домашней странице Realtek http://www.realtek.com.tw через "Quick Links",подтвердите уведомление, и, затем скачайте соответствующий драйвер для Linux.

2. Откройте скачанный файл, распакуйте его куда-нибудь (для примера, ваша домашняя директория), откройте терминал от пользователя root, и скомпилируйте это как обычно:

./configure
make
make install

Примечание:

1. Удостоверьтесь, что у Вас необходимые средства для сборки (gcc, make, build-essential, linux-headers для Вашего ядра, и т.д.) уже установлены, прежде, чем выполнять скрипт установки, описанный выше.

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

Поиск и устранение неисправностей

Что бы увидеть, какие индексы были присвоены картам, выполните следующие:

  cat /proc/asound/cards

Первая звуковая карточка, найденная ALSA, обычно имеет индекс 0 и, таким образом, обычно является звуковой карточкой 'по умолчанию'. If you are unlucky then the first sound card found is one that it not suitable for playing system sounds. (However an error such as "Unknown PCM default" when playing a sound occurs if the user is not a member of the 'audio' group - run "sudo adduser <username> audio", and then "newgrp" as the user)

Есть два способа исправить эту проблему.

1. Принудительно загружаем модули звуковых карт в нужном порядке. Для этого добавляем в файл настроек модулей ядра /etc/modprobe.d/sound новые строки:

  options snd-trident index=0
  options snd-usb-audio index=1

Эта настройка принудительно назначит звуковую карту Trident аудиоустройством по-умолчанию (card 0) и USB микрофон card 1.

2. Поменять карту по умолчанию отредактировав файл /etc/asound.conf или ~/.asoundrc. Подробней тут Alsa Multiple Cards

Does rebooting bypass BIOS and GRUB menu? This could be caused by kexec-tools. It allows the bypass of BIOS during rebooting and prevent proper initialization of various devices. As root, edit file /etc/default/kexec and update LOAD_KEXEC to:

LOAD_KEXEC=false

This will allow your BIOS to properly initialize sound and other devices during every reboot.

Другие способы поиска и устранения неисправностей

Версия

Смотрите тут /proc/asound/version.

Утилиты

Дополнительная информация

Для дополнительной информации, прочтите файл README.Debian идущий с пакетами alsa-base и alsa-source или смотрите http://www.alsa-project.org и http://alsa.opensrc.org.

Смотрите также


CategoryHardware CategorySound