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


Hardware > Sound


ALSA

ALSA, Усовершенствованная Архитектура Звука Linux, 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.

Hint: название драйверов ALSA ВСЕГДА начинается с snd- .

Пакеты

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

Последние версии пакета alsa-base были разработаны таким образом, чтобы работать только с ?hotplug и discover. Пакет alsa-base не загружает модули; вместо этого, ?hotplug или discover находят устройство звука, и загружают все необходимые модули ALSA, а затем, alsa-base самостоятельно устанавливает используемые уровни микшера.

Вы можете также запустить ?alsaconf. Эта программа использует различные методы обнаружения аппаратного обеспечения, и, если программа поняла, что нашла необходимый модуль, то она сгенерирует файл /etc/modutils/sound или /etc/modprobe.d/sound (в зависимости от того, на какой версии ядра Linux вы работаете, 2.4 или 2.6, соответственно). В последнем случае, когда snd модуль будет загружен, будет загружен рассматриваемый модуль. Достаточно загрузить snd модуль, чтобы затем загрузить модуль драйвера для Вашего определенного аппаратного обеспечения. Чтобы использовать этот механизм загрузки модуля, Вы, скорее всего, должны добавить snd в /etc/modules.

В релизе Squeeze, а также, во всех последующих релизах, ?alsaconf больше не доступен из пакета alsa-utils. Т.о., попытайтесь настроить 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. Это автоматически установлено с версии 1.0.10-2 libasound2; в предыдущих версиях, взгляните на /usr/share/doc/libasound2/examples/asound.conf_dmix, чтобы рассмотреть, как включить DMIX в /etc/asound.conf (для всех пользователей) или ~.asoundrc (для Вашего пользователя).

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

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

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

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

./install

Примечание:

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

2. Если Вы встречаете ошибки, то попытайтесь удалить (очистить) несколько пакетов alsa, такие как alsa-base и alsa-oss (если Вы их уже устанавливали), перезагрузитесь, и выполните скрипт установки снова.


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


Причин отсутствия звука может быть множество:

1. Пользователь не член группы 'audio'. В этом случае выдаётся ошибка "Unknown PCM default" при воспроизведении звука, Для решения проблемы нужно выполнить команду

$ sudo adduser <имя пользователя> audio
$ newgrp


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

  cat /proc/asound/cards

Первая звуковая карточка, найденная ALSA, обычно имеет индекс 0 и, таким образом, обычно является звуковой карточкой по умолчанию.

Для решения этой проблемы нужно выставить по умолчанию реальную звуковую карту подсоединённую к колонкам.


Вариант 1

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

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

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

Для применения настройки требуется перезагрузка.


Вариант 2

Выставить карту по-умолчанию в настройках самой ALSA. Открываем {{{/usr/share/alsa/alsa.conf{{{, ищем параметры...

  # defaults

 defaults.ctl.card 0
 defaults.pcm.card 0

Меняем 0 на индекс нужной карты. Перезагружаем ALSA.


Вариант 3

Изменить звуковую карточку по умолчанию, редактируя файл /etc/asound.conf или ~/.asoundrc. (по умолчанию в Debian 6 эти файлы отсутствуют) За дальнейшей информацией обращайтесь на FAQ

# /etc/init.d/alsa-utils restart


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

Версия

Посмотрите в файл /proc/asound/version.

Утилиты

Дальнейшая информация

За дальнейшей информацией обращайтесь в файлы README.Debian в пакетах alsa-base и alsa-source, или просмотрите http://www.alsa-project.org и http://alsa.opensrc.org.

Заметьте, пожалуйста, с Debian Sarge, моя звуковая карточка работает теперь правильно, но у меня всё ещё НИЧЕГО нет в /proc/asound, хотя lsmod показывает snd_intel8x0 и целый набор другого звукового материала.

Смотрите также: AlsaMidi.

Новая информация

Старая информация


CategorySound