Alsa-sound-mini-HOWTO

Valentijn Sessink

Перевод: Михаил Корепанов, ASPLinux

Аннотация

Этот документ описывает установку драйверов ALSA под Linux. Они полностью совместимы с обычными драйверами и являются их полноценной заменой.


Содержание
Введение
NOWTO - инструкция по быстрой установке
До того, как вы начнете
Как установить звуковые драйверы ALSA
Загрузка драйвера
Тестирование и использование
Советы по устранению неисправностей

Введение

Это mini-HOWTO по драйверам ALSA. Документ объясняет как установить и использовать драйверы ALSA. Драйверы ALSA полностью модульные и поддерживают kerneld и kmod. Они совместимы, но превосходят возможности обычных OSS API. Другими словами, совместимы, но более совершенны.


Благодарности

Этот документ содержит информацию, взятую с сайта ALSA. Благодаря пакету SGML , HOWTO можно читать в различных форматах, генерирующихся из исходного. Спасибо Erik Warmelink за его корректировку, спасибо Alfred Munnikes за пару хороших вопросов и предложений. Благодаря Yamahata Isaku, вы можете прочесть этот документ на японском. Благодаря Miodrag Vallat, вы можете прочесть этот документ на французском. И особая благодарность Steve Crowder, редактировавшему и вычитывавшему текст. Выражаем благодарность Cserna Zsolt за венгерский перевод и Marco Meloni за итальянский. Спасибо Mohamed Ismail Mohamed-Ibrahim, пославшему документацию о звуковой карте Trident 4DWave DX/NX со множеством полезной информации. Спасибо Gerard Haagh, пославшему много необходимой информации и указавшему на некоторые пробелы в других документах на эту тему.

Спасибо Marc-Aur`ele Darche, Piotr Ingling, Juergen Kahrs, Tim Pearce, Patrick Stoddard, Rutger de Graaf, Shuly Wintner, Jyrki Saarela, Jonas Lofwander, Kumar Sankaran и многим другим за полезные советы и добавления.


Небольшая предыстория

Версия 2.0-pre1 - 12 ноября 1999. Изменены некоторые разделы в соответствии с ALSA 0.4.1e. Добавлено несколько ссылок.

Версия 1.7 - 29 июль 1999. Несколько поправок.

Версия 1.6 - 26 июля 1999. Добавлена глава о различных версиях ALSA.

Версия 1.5 - 21 мая 1999. Переработана глава о микшере. Глава о быстрой установке добавлена.

Версия 1.4 - 18 мая 1999. Включено URL французской версии и исправлены другие поменявшиеся URL.

Версия 1.3 - 16 мая 1999. Благодаря Jaroslav, HOWTO было размещено на сайте ALSA-project. В следствие этого были исправлены адреса электронной почты и URL.

Версия 1.2 - 11 мая 1999. Внесено несколько дополнений.

Версия 1.1 - 11 марта 1999. Добавлено описание нескольких звуковых карт, поддерживаемых драйверами серии 0.3. Описано ядро серии 2.2.

Версия 1.0 - 8 февраля 1999. Добавления к главе об устранении неисправностей. Практически законченная версия.

Версия 0.3 beta - 20 января 1999. Ссылка на сайт ALSA. Документ получил официальный статус!

Версия 0.2 alpha - Середина января 1999, Первая sgml-версия.

Версия 0.1 alpha - Январь 1999, Первая версия в формате HTML.

Still: please submit any patches in plain English, you native speakers!

Есть еще несколько дополнений, которые надо сделать в HOWTO на данный момент. Надо отметить, что Mohamed Ismail Mohamed-Ibrahim и Gerard Haagh написали прекрасные дополнения к этому HOWTO, что дало мне небольшую передышку во времени. Поэтому перед вами версия 2.0-pre1, и за ней последуют еще несколько таких же pre.


Новые версии этого документа

Последняя версия находится на http://www.alsa-project.org./~valentyn

Другие форматы документа находятся в каталоге other-formats. К сожалению, я не смог создать Postscript-версию этого документа, потому что скрипт sgml2latex возвращает слишком много ошибок.

Yamahata Isaku перевела документ на японский и поместила его на http://plaza21.mbn.or.jp/~momokuri/alsa/index.html

Miodrag Vallat поместил свой французский перевод на http://www.freenix.fr/unix/linux/HOWTO/mini/Alsa.html.

Cserna Zsolt перевел ALSA-HOWTO на венгерский. Он находится на http://kib4.vein.hu/~zsolt/alsa.html.

Marco Meloni сделал итальянский перевод, который можно найти на http://pluto.linux.it/ildp/index.html.

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


Как со мной связаться

Надеемся, что читатель поможет нам сделать HOWTO более полезным. Если у вас появятся какие-либо идеи, предложения и поправки, отсылайте их по адресу (alsa-howto@alsa-project.org), , и мы постараемся их включить в последующие версии.

К сожалению, я до сих пор получаю мало писем с информацией о этих драйверах, поэтому буду рад любым дополнениям. Даже письма типа "мне не совсем понятно то-то", я прочту с большим удовольствием.

Если вы включите эту работу на CD-ROM или какой-либо другой носитель, то я бы желал получить копию такого издания. Если вы захотите внести вклад в Linux Documentation Project, то свяжитесь с координатором проекта Linux HOWTO Tim Bynum linux-howto@metalab.unc.edu, для получения более подробной информации.


Distribution Policy

Copyright 1998/1999 Valentijn Sessink

This HOWTO is free documentation; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This document is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.

You can obtain a copy of the GNU General Public License by writing to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


Авторские права

Авторские права на русский перевод этого текста принадлежат (c) 2000 ASPLinux Все права зарезервированы.

Этот документ является частью проекта Linux HOWTO.

Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но так или иначе автор текста и автор перевода желали бы знать о таких дистрибутивах.

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

Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: , или к координатору русского перевода Linux HOWTO компании ASPLinux по адресу


NOWTO - инструкция по быстрой установке

Если вам нужен звук и нужен именно СЕЙЧАС! и не после прочтения этого HOWTO, то этот краткий экскурс по правилам установки драйверов ALSA именно для вас. Замечание: есть небольшая разница между версиями ALSA, которые поддерживают ядра 2.0, и теми, которые поддерживают ядра 2.2.


Установка ALSA для ядер 2.2.x

Если вы устанавливаете ALSA 0.4.1e (или более поздние версии), то версия вашего ядра должна быть 2.2.x. Если же версия вашего ядра более старая, то рекомендуется использовать 0.3.0-pre4.

Выполните следующие команды ``./configure - make - make install'' для драйверов, библиотеки и утилит. Вам понадобится сделать это всех трех частей, потому что утилиты участвуют в процессе инициализации вашей карты. Ядра 2.2.x должны иметь общую систему поддержки звука (без указания какой-либо конкретной карты).

Драйверы ALSA, разумеется, поддерживают родные карты, которые можно инициализировать, запустив скрипт ./snddevices .

Вы должны загрузить модуль для своей карты (или использовать kmod), а если вы хотите достичь обратной совместимости с драйверами ядра Linux, то вы должны догрузить еще два модуля: snd-pcm1-oss и snd-mixer-oss. Просмотрите главу Разд. Какой модуль для какой карты? для того чтобы выбрать нужный вам модуль. После этого вы можете получить дополнительную информацию о драйверах ALSA в каталоге /proc/asound.


Воспроизведение и запись

Несколько замечаний. У ALSA есть несколько устройств в /dev/snd, например /dev/snd/pcmC0D1 относится к Карте 0, Устройству 1 (Card 0, Device 1). Вы можете использовать старые устройства /dev/pcmXY, если загрузили snd-pcm1-oss для обратной совместимости. Вам, наверняка, пригодится /dev/mixer, поэтому для его работы загрузите snd-mixer-oss. До того, как вы начнете использовать свою карту, вы должны будете ее инициализировать при помощи ``amixer''. Наберите ``amixer groups'', затем

amixer set PCM 100 unmute

Или что-то похожее.

В принципе, вы можете использовать опции ``mute'' или ``unmute'', ``capture'' или ``nocapture'' и числа.

Ну, теперь, если у вас заработала карта, все нормально, иначе вам придется прочесть все HOWTO...


Установка ALSA для ядер 2.0.x

В драйверах ALSA версий 0.3.0, 0.3.1 и 0.3.2 были проблемы с интерфейсом микшера. Более поздние версии не поддерживают ядра 2.0.x, поэтому вам придется использовать версию драйверов 0.3.0-pre4 если у вас стоит ядро 2.0.

Выполните следующие команды ``./configure - make - make install'' для драйверов, библиотеки и утилит. Вам понадобится сделать это всех трех, потому, что утилиты участвуют в процессе инициализации вашей карты. Ядра 2.0.x должны иметь общую систему поддержки звука отключеной в установках ядра.

Драйверы ALSA, разумеется, поддерживают родные карты, которые можно инициализировать запустив скрипт ./snddevices.

Вы должны загрузить модуль для своей карты (или использовать kmod), а если вы хотите достичь обратной совместимости с драйверами ядра Linux, то вы должны догрузить еще модуль snd-pcm1-oss. Просмотрите главу Разд. Какой модуль для какой карты? для того чтобы выбрать нужный вам модуль. После этого вы можете получить дополнительную информацию о драйверах ALSA в каталоге /proc/asound.


Воспроизведение и запись

Несколько замечаний. У ALSA есть список устройств в /dev/snd, например /dev/snd/pcmC0D1 означает Карта 0, Устройство 1 (Card 0, Device 1). Вы можете использовать старые устройства /dev/pcmXY если загрузили snd-pcm1-oss для обратной совместимости. До того как вы начнете использовать свою карту вы должны будете ее инициализировать при помощи ``amixer''. Наберите ``amixer groups'', затем

amixer pcm 100 unmute

В принципе вы можете использовать опции ``mute'' или ``unmute'', ``rec'' или ``norec'' и числа или левый:правый.

Ну теперь если у вас заработала карта, то все нормально, иначе вам придется прочесть все HOWTO...


До того, как вы начнете

Введение

Этот документ поможет вам при установке и использовании драйверов ALSA, если вы используете Linux. Базовые тесты были проведены на дистрибутиве Slackware 4.0 Linux на компьютере AMD/K6, но это все должно работать и с другими дистрибутивами. Я не испытывал драйверы при работе на других платформах. У меня есть данные только о x86-компьютерах, поэтому, если вы протестировали драйвер на других системах, пожалуйста, напишите мне.

Было бы не лишним, если бы вы прочли "HOWTO: Звук в Linux" (смотрите главу Другие HOWTO), так как этот документ HOWTO описывает только драйверы, встроенные в ядро.


Общая информация о драйверах ALSA

Драйверы ALSA были изначально разработаны как замена драйверов карт Gravis UltraSound (GUS). Когда проект с GUS оказался удачным, автор начал проект ALSA, который бы снабдил рынок драйверами для различных карт. В основу проекта легла идея создать модульный вариант драйверов.

Они совместимы со звуковыми драйверами OSS/Free и OSS/Linux (эти драйверы встроены в ядро), но имеют собственный интерфейс, который лучше, чем у драйверов OSS. Некоторые особенности можно выяснить, посетив http://www.alsa-project.org/intro.html

Но имейте в виду, что драйверы ALSA все еще находятся в стадии разработки. Все меняется, и некоторые программы, рассчитанные на ALSA работают только с некоторыми конкретными версиями драйвера. Однако, я думаю что эти драйверы великолепны. Я использую ALSA уже 10 месяцев, и никогда не вернусь в темные времена драйверов с закрытыми исходными текстами - подсказка ;-)

Домашняя страничка этого проекта находится на http://www.alsa-project.org/


Поддерживаемое оборудование

Драйверы ALSA поддерживают только описанные здесь карты. На время написания этого документа поддерживались следующие карты:

  • Карты с чипсетом Trident 4D Wave DX/NX, спасибо компании Trident Microsystems, которая позволила ALSA "заглянуть" в их GPL-драйверы (только устройства MIXER и PCM) и документацию к их чипсету 4D Wave PCI . Для приобретения более подробной информации загляните на http://www.tridentmicro.com/HTML/products folder/audio.htm Карты, использующие этот чипсет: Best Union Miss Melody 4DWave PCI, HIS 4DWave PCI, Warpspeed ONSpeed 4DWave PCI, AzTech PCI 64-Q3D, Addonics SV 750, CHIC True Sound 4Dwave, Shark Predator4D-PCI и Jaton SonicWave 4D.

  • Gravis Ultrasound (GUS): ``PnP'',═ Extreme, Classic/ACE, MAX

  • Карты с чипсетом GUS: Dynasonic 3-D, STB Sound Rage 32, UltraSound 32-Pro (STB), ExpertColor MED3201 и другие с чипом AMD InterWaveT , например, некоторые карты STB, выпускаемые Compaq

  • Soundblaster: 1.0, 2.0, Pro, 16, AWE32/64, PCI64

  • ESS AudioDrive ESx688

  • Карты на основе ESS ES968 (только PnP).

  • ESS ES18xx (чипсеты). Но я лично испытал много проблем с ESS1888.

  • ESS Solo-1 ES1938 и ES1946. Работает только один из двух каналов, поэтому запись невозможна. Автор этого драйвера в настоящее время занимается этой проблемой.

  • Yamaha: OPL3-SA2, OPL3-SA3 (чипсеты)

  • OAK Mozart

  • Schubert 32 PCI (PINE, S3 SonicVibes PCI чипсет)

  • Звуковые карты Ensoniq AudioPCI ES1370/1371 PCI (Soundblaster PCI64)

  • Звуковые карты SonicVibes PCI (PINE Schubert 32 PCI)

  • Карты, основанные на ForteMedia FM801 (версия 0.3.2)

  • Карты на основе OPTi 82C9xx

  • Карты на основе AD1847, AD1848 и CS4248

  • Карты на основе AZT2320 (только PnP).

  • Карты на основе Avance Logic ALS100/ALS120

  • Карты на основе C-Media CMI8330

Далее следует множество карт, основанных на Crystal Semiconductors. Эти чипы употребляются достаточно часто, включая отдельные карты (некоторые серии Philips PCA) и материнские платы (например IBM Aptiva, Dell computers). Поддерживаются карты на основе следующих чипсетов:

  • 4231

  • 4232

  • 4232A

  • 4235

  • 4236B

  • 4237B

  • 4238B

  • 4239

  • 4280

  • 4610

  • 4612

  • 4614

  • 4615

  • 4680

Одним из достижений ALSA можно считать то, что они позволяют компьютеру без звуковой карты воспроизводить видео! Это делается за счет "пустого" драйвера, который заставляет "думать" такие программы, как Realplayer, что в вашем компьютере есть аудио карта.

Новейший список можно найти в каталоге драйверов doc/SOUNDCARDS


Другие HOWTO

Документ ALSA-sound-mini-HOWTO небольшой, но он быстро пополняется. Другие HOWTO помогут вам, если этот документ покажется вам неполным. HOWTO можно найти на зеркалах Metalab (Sunsite). Поэтому загляните на http://metalab.unc.edu/LDP/mirrors.html и выберите ближайшее зеркало. Так же вы можете найти HOWTO в каталоге LDP/HOWTO/. Заметка: все ссылки в этом документе взяты из /LDP/HOWTO/mini.

Небольшое замечание для пользователей ядра версий 2.2.x. Поддержка звука в этих ядрах сделана также, как и все остальное: она работает, но по-другому, не совсем так, как это было раньше. Начиная с настоящей версии этот документ скоцентрирует свое внимание на ядрах серии 2.2, однако я буду пытаться указать на его отличия.


Звуковые карты

Итак, вы купили звуковую карту, или, может быть, она у вас уже стояла, и теперь вы собираетесь ее использовать! Внимательно изучите Sound-HOWTO.


Карты Plug and Play

Большинство новых карт для платформы Intel - это ISA PnP карты ("Plug and Play"). Это означает, что карты настраиваются операционной системой. Это делается во время загрузки. Вам понадобится настроить карту с помощью набора утилит для PnP (PnP-utils-package). Все последние дистрибутивы Linux включают в себя такие наборы. Перед тем, как их использовать, рекомендую ознакомиться с Plug-and-Play-HOWTO

Драйверы ALSA имеют встроенную поддержку ISA-PnP для некоторых карт. К сожалению, я не смог найти документацию на эту тему и поэтому не могу описать как это работает. Пожалуйста, напишите мне, если вы попробовали использовать драйверы ALSA без утилит ISA-PnP-tools.


Загружаемые модули

Драйверы ALSA построены в виде модулей. Более подробную информацию по модулям можно найти в Kernel-HOWTO. Так же существует module-HOWTO, но сейчас он не поддерживается и не дорабатывается, это можно выяснить в howto-HOWTO. В случаях затруднения можно обратиться к Modules-mini-HOWTO, может быть, там вы найдете нужную информацию.


Kerneld

Некоторым может понадобиться другое HOWTO, под названием Kerneld-mini-HOWTO. Kerneld - это демон, который устанавливает и убирает модули ядра по мере их необходимости. (У меня нет опыта работы с ним, поэтому прочту все советы по этому поводу. Документация драйверов ALSA содержит информацию по конфигурации kerneld, которая включена в это мини-HOWTO.)

С тех пор, как загрузчик модулей был встроен в ядро 2.2.x, все изменилось. Но я один из тех, кто предпочитает использовать modprobe вместо того, чтобы доверять демону. У меня нет информации по поводу работы с этим демоном.


Как установить звуковые драйверы ALSA

Что вам потребуется

  • работающая система Linux (например дистрибутив Slackware), с установленными приложениями: gcc, make и т.д.

  • некоторые практические знания о Linux (подразумевается ваше знание "ls", "cd", "tar" и т.д.)

  • доступ с паролем root

Если у вас нет звуковой карты, то в ALSA есть драйвер, который ее эмулирует! (Он абсолютно ничего не делает, но программы, которые требовали карту, будут работать).

Если у вас есть карта PnP, тогда вам так же потребуется:

  • пакет программ isapnptools.

В каталоге драйвера есть файл INSTALL, в котором говорится, что для некоторых карт поддержка PnP не требуется, так как она уже установлена.

Надо отметить, что у вас не должно быть никаких активных звуковых драйверов, когда вы используете драйверы ALSA. Если у вас встроенный драйвер, то вам придется перекомпилировать ядро. Если у вас стоит старый модуль "sound.o", то вы должны его сделать нерабочим. При использовании kerneld это означает, что вам надо удалить sound.o из каталога /lib/modules/<kernel_version>/misc . Новейшие системы RedHat могут использовать несколько активных звуковых модулей. Вам потребуется удалить их все.

При использовании ядер серии 2.2 вы должны включить в них поддержку звука, но не драйвер карты. Затем скомпилируйте и установите ядро, и после этого скомпилируйте драйверы ALSA.


Где и как взять драйверы

Драйверы ALSA можно скачать с ftp://ftp.alsa-project.org/pub/ , зеркала которого находятся на

Для установки драйверов ALSA вам понадобятся драйверы, библиотеки и утилиты; например, вы выбрали зеркало A2000, вы берете там ftp://linux.a2000.nl/alsa/driver/alsa-driver-0.4.1e.tar.gz, ftp://linux.a2000.nl/alsa/lib/alsa-lib-0.4.1d.tar.gz и ftp://linux.a2000.nl/alsa/utils/alsa-utils-0.4.1.tar.gz


Версии ALSA

Драйверы ALSA далеко не новы. Их разработка началась еще для ядер 2.0, затем и для ядер 2.2 (у которых есть собственное звуковое ядро).

У меня замечательно работает версия 0.4 , я думаю, что и версии 0.4.1e (или более новые) будут не хуже. Если у вас ядро 2.0.x, вам понадобятся версии 0.3.0 или более старые. Я бы посоветовал использовать alsa-driver-0.3.0-pre4, alsa-lib-0.3.0-pre4 и alsa-utils-0.3.0-pre3.

Более старые версии, такие как 0.2.0-pre10p3 или старше, работают под ядром 2.0.x, но я не смог их запустить под 2.2.x .


Разархивирование

Вы можете разархивировать драйверы командой типа tar -zxf <file>. Было бы сподручнее если бы вы сделали это в каталоге /usr/src, но для этого вы должны зайти как пользователь root. Наберите "su" и пароль root для того, чтобы получить права одноименного пользователя. Но лучше не пользоваться этими правами без лишней необходимости. Итак:

cd /usr/src

tar -zxf ˜/alsa-driver-0.4.1e.tar.gz

tar -zxf ˜/alsa-lib-0.4.1d.tar.gz

tar -zxf ˜/alsa-utils-0.4.1.tar.gz
Есть еще один проверочный файл, найдите ~ -name alsa* -exec tar -zxf {} \; (нежелательно это прослушивать в присутствии детей). Замечание: если вы скачиваете файлы при помощи Netscape, вы можете скачать неразархивированные драйверы с расширением ".tgz". Если tar будет ссылаться на неправильный формат файла, уберите "z" в настройках tar.


Сборка

До того, как вы начнете использовать библиотеки, у вас должен быть драйвер, а до использования утилит у вас должны быть библиотеки:
cd alsa-driver-0.4.1e
(для не столь опытных: нажмите <tab> (клавиша "tab") после "alsa-d". Это называется автоматическое завершение командной строки.)
./configure
Если вы хотите использовать встроенные интерфейсы PnP, вы должны выполнить
./configure --with-isapnp=yes

make
Теперь вам потребуются права пользователя 'root' для установки программ
make install
Если после этого система выдает сообщение вида "version.h cannot be found", значит, у вас нет соответствующего файла в исходных текстах ядра. Вам потребуются некоторые файлы исходного текста ядра для компиляции драйверов ALSA. Разархивируйте linux-2.x.y.tar.gz в каталог /usr/src и запустите make menuconfig. (В принципе, make symlinks было бы достаточно). Теперь откомпилируйте библиотеки:
cd ../alsa-lib-0.4.1d

./configure

make

make install
Хорошо, вы закончили с библиотеками, теперь утилиты:
cd ../alsa-utils-0.4.1

./configure

make

make install
Замечание: вы можете вообще не делать "make install" для утилит и даже не собирать библиотеки и утилиты, если вам просто надо проверить, работает ли драйвер.


Приготовление к работе устройств

В каталоге драйвера есть скрипт, который установит звуковые устройства ALSA в ваш каталог /dev . Наберите
./snddevices
в каталоге драйвера. Теперь там должен появиться подкаталог /dev/snd (проверьте это. Если вы при помощи команды "ls" не нашли соответствующего каталога, то вам придется прочесть другой HOWTO. У вас должны быть кое-какие навыки работы с Linux для того, чтобы установить эти драйверы).

Теперь вы можете установить драйвер. Это описано в следующей главе.


Загрузка драйвера

Существует два способа использования звуковых модулей ALSA. Я предпочитаю делать это, как описано в инструкции, этот метод подразумевает, что во время запуска системы модуль подгружается. Драйверы ALSA были спроектированы как двоякие, то есть существует возможность их применения как догружаемых модулей, так и не подгружаемых (установленных). После загрузки они не сбивают настроек микшера, поэтому вы можете воспользоваться другим способом их эксплуатации - при помощи kerneld.

Если у вас старое ядро, то для обеспечения поддержки звука прочтите главу Разд. Обратная совместимость.


Установка modprobe

Замечание: если у вас карта PnP, то вам надо сначала правильно ее настроить на IO/IRQ/DMA. Для этого прочтите Plug-and-Play-HOWTO. Теперь вам следует запустить "modprobe snd-card-<soundcard>". Замечу, что не все дистрибутивы включают в путь /sbin. Если вы получили сообщение "bash: modprobe: command not found", это означает, что modprobe не включен в путь. Попробуйте найти утилиту modprobe в ``/sbin/modprobe snd-card-sb16'' или где-либо еще.

Самые большие проблемы могут возникнуть с чипсетами Crystal -для них у драйверов ALSA нет автоматического определения. Более подробную информацию можно прочитать в файле INSTALL, который находится в каталоге драйвера. Вот два примера: первый для Gravis UltraSound (GUS) и аналогов:
/sbin/modprobe snd-card-gusclassic
Для всех карт 16-bit Soundblaster (SoundBlaster 16 (PnP), SoundBlaster AWE 32 (PnP), SoundBlaster AWE 64 (PnP):
/sbin/modprobe snd-card-sb16
Если вы используете драйвер 0.3.0-pre4 , драйвер GUS Classic называется ``snd-gusclassic'', а модуль SoundBlaster 16 называется ``snd-sb16'' (без уточнения конкретной модели карты).


Какой модуль для какой карты?

Не забудьте, что в версиях ALSA до 0.4.x иногда употребляют названия моделей карт. Это отмечено звездочкой (*).


ESS AudioDrive Разд. ForteMedia FM801

Карты ESS AudioDrive ES-1688 и ES-688

modprobe snd-card-audiodrive1688


ESS AudioDrive 18xx Разд. ForteMedia FM801

Карты на основе ESS AudioDrive ES-18xx

modprobe snd-card-audiodrive18xx


Gravis UltraSound PnP Разд. ForteMedia FM801

Gravis UltraSound PnP, Dynasonic 3-D/Pro, STB Sound Rage 32, ExpertColor MED3201 и другие карты, основанные на чипе AMD InterWave™.

modprobe snd-card-interwave


UltraSound 32-Pro Разд. ForteMedia FM801

UltraSound 32-Pro (карты STB используемые Compaq) и другие карты, основанные на чипе AMD InterWave (tm), с улучшенной схемой управления низкими частотами TEA6330T, управлением высоких частот и громкостью

modprobe snd-card-interwave-stb


Soundblaster Разд. ForteMedia FM801

Карты 8-bit Soundblaster (SoundBlaster 1.0, SoundBlaster 2.0, SoundBlaster Pro)

modprobe snd-card-sb8


Soundblaster 16 Разд. ForteMedia FM801

Карты 16-bit SoundBlaster (SoundBlaster 16 (PnP), SoundBlaster AWE 32 (PnP), SoundBlaster AWE 64 (PnP). Замечание: этот модуль не поддерживает карту SoundBlaster VibraX16.

modprobe snd-card-sb16


OPTi 82C9xx Разд. ForteMedia FM801

Группа карт, использующих чипсет OPTi 82C9xx, такие как Audio 16 Pro EPC-SOUN9301 (основанная на 82C930), ExpertColor MED-3931 v2.0 (основанная на 82C931), ExpertMedia Sound 16 MED-1600 ( AD1848, основанная на 82C928 ), Mozart S601206-G ( CS4231, основанная на OPTI601) и Sound Player S-928

modprobe snd-card-opti9xx


AD1847/48 and CS4248

modprobe snd-card-ad1848


Yamaha OPL3-SA2/SA3 soundcards Разд. ForteMedia FM801

Команда "modprobe snd-opl3sa" не будет работать, так как этот драйвер не проводит автоматического определения. Смотрите далее.


S3 SonicVibes Разд. ForteMedia FM801

Карты S3 SonicVibes PCI . (PINE Schubert 32 PCI)

modprobe snd-card-sonicvibes


Ensoniq/Soundblaster PCI64 Разд. ForteMedia FM801

Карты Ensoniq AudioPCI ES1370/1371 PCI . (SoundBlaster PCI 64)

modprobe snd-card-audiopci


CS4231

Команда ``modprobe snd-card-cs4231'' не будет работать, так как не проводится автоматического определения. Смотрите далее.


CS4232/4232A

Для всех карт, основанных на чипе CS4232/CS4232A команда "modprobe snd-card-cs4232" не будет работать, так как не проводится автоматического определения. Смотрите далее.


4235 и выше

Для всех карт основанных на чипе CS4235/CS4236/CS4236B/CS4237B/CS4238B/CS4239, команда "modprobe snd-card-cs4236" не будет работать, так как не проводится автоматического определения. Смотрите далее.


4610/4612/4615 и 4680

modprobe snd-card-cs461x


ESS Solo 1 Разд. ForteMedia FM801

Карты ESS Solo-1, 128iPCI (es1938, ESS-SOLO-1). Jonas Lofwander послал мне ссылку на http://dice.shopcenter.nu/alsa/ , где описывается установка этой карты, хотя, в этом случае, проблем не возникает. Просто команда modprobe snd-card-esssolo1 ... . Если у вас IBM Thinkpad 1412, то можете заглянуть на ссылку, присланную Kumar Sankaran http://www.geocities.com/SiliconValley/Peaks/3649/1412.html .


Trident 4DWave DX/NX Разд. ForteMedia FM801

Best Union Miss Melody 4DWave PCI, HIS 4DWave PCI, Warpspeed ONSpeed 4DWave PCI, AzTech PCI 64-Q3D, Addonics SV 750, CHIC True Sound 4Dwave, Shark Predator4D-PCI, Jaton SonicWave 4D.

modprobe snd-card-trident


ForteMedia FM801

Это карты PCI, основанные на чипе FM801.

modprobe snd-card-fm801

(*) Для версии ALSA 0.3.0-pre4, вы должны пропустить "card-" (не для всех!) в названиях драйверов. Строка ``snd-card-sb16'' превращается в ``snd-sb16'', а ``snd-cs4232'' остается ``snd-card-cs4232'' (modprobe snd-cs4232 начнет что-то выполнять, но не будет воспроизводить звук!)

(**) В более старых версиях ALSA драйвер называется ``snd-card-trid4wave'' и ``snd-trid4wave''.


modprobe для драйверов без автоматического определения карты

Если у вас драйвер без автоматического определения, то для его работы вам потребуется внести больше информации при его загрузке. Более подробно это описано в файле INSTALL каталога драйвера.


OPL3-SA2 и OPL3-SA3

По инструкции, приведенной в файле INSTALL, вы должны внести дополнительную информацию для драйвера. Если вы инициализировали карту при помощи isapnp-tools, вы можете получить следующую информацию из файла /etc/isapnp.conf :
snd_port - control port # for OPL3-SA chip
snd_wss_port - WSS port # for OPL3-SA chip (0x530,0xe80,0xf40,0x604)
snd_midi_port - port # for MPU-401 UART (0x300,0x330), -1 = disable
snd_fm_port - FM port # for OPL3-SA chip (0x388), -1 = disable
snd_irq - IRQ # for OPL3-SA chip (5,7,9,10)
snd_dma1 - first DMA # for Yamaha OPL3-SA chip (0,1,3)
snd_dma1_size - max first DMA size in kB (4-64kB)
snd_dma2 - second DMA # for Yamaha OPL3-SA chip (0,1,3), -1 = disable
snd_dma2_size - max second DMA size in kB (4-64kB)
Для того, чтобы запустить драйвер вы можете выполнить "modprobe snd-card-opl3sa snd_port=0xNNN snd_wss_port=0x530 snd_midi_port=-1 snd_fm_port=0x388 snd_irq=5 snd_dma1=0 snd_dma1_size=NN snd_dma2=1 snd_dma2_size=NN" (это без поддержки midi. Я думаю, что вам потребуется поддержка midi, если у вас есть синтезатор и другое оборудование, и вы хотите их собрать воедино под Linux. Но он вам не потребуется в других случаях, даже для проигрывания файлов формата midi.)

Заметьте, что значения NN необходимо указать, однако я не знаю стандартных значений. Я также не знаю, требуется ли для нормальной работы опция dma_size.

Если у вас IBM Thinkpad с этим чипсетом, то загляните на http://www.cirs.org/patrick/index.html.

Если вы используете драйвер из версии 0.3.0-pre4, то пропустите ``card-'' в названии драйвера.


Чипы CS4231

По инструкции, находящейся в файле INSTALL, вы должны определить основной порт для карты. Замечу, что для драйвера карт 3235/6/7/8/9 я прописал всю информацию(кроме размера DMA), иначе драйвер не работает. Если вы инициализировали карту при помощи isapnp-tools, вы можете получить следующую информацию из файла /etc/isapnp.conf :
snd_port - port # for CS4232 chip (PnP setup - 0x534)
snd_mpu_port - port # for MPU-401 UART (PnP setup - 0x300), -1 = disable
snd_irq - IRQ # for CS4232 chip (5,7,9,11,12,15)
snd_mpu_irq - IRQ # for MPU-401 UART (9,11,12,15)
snd_dma1 - first DMA # for CS4232 chip (0,1,3)
snd_dma1_size - max first DMA size in kB (4-64kB)
snd_dma2 - second DMA # for Yamaha CS4232 chip (0,1,3), -1 = disable
snd_dma2_size - max second DMA size in kB (4-64kB)
Для загрузки драйвера со стандартной настройкой карты, вы должны выполнить "modprobe snd-card-cs4231 snd_port=0x534 snd_mpu_port=-1 snd_irq=5 snd_dma1=0 snd_dma1_size=NN snd_dma2=1 snd_dma2_size=NN". (Без поддержки midi, смотрите заметку в Yamaha OPL-3). Если вы использовали другие значения в файле /etc/isapnp.conf, то здесь вам надо использовать те же значения.

Вместо "NN" вы должны поставить числовые значения, но я не могу подсказать наилучшие значения. Также я не знаю, необходимо ли указывать размер dma.


Чипы CS4232/CS4232A

По инструкции, находящейся в файле INSTALL, вы должны определить основной порт для карты. Замечу, что для драйвера карт 3235/6/7/8/9 я прописал всю информацию(кроме размера DMA), иначе драйвер не работает. Если вы инициализировали карту при помощи isapnp-tools, вы можете получить следующую информацию из файла /etc/isapnp.conf :
snd_port - port # for CS4232 chip (PnP setup - 0x534)
snd_cport - control port # for CS4232 chip (PnP setup - 0x120)
snd_mpu_port - port # for MPU-401 UART (PnP setup - 0x300), -1 = disable
snd_fm_port - FM port # for CS4232 chip (PnP setup - 0x388), -1 = disable
snd_jport - joystick port for CS4232 chip (PnP setup - 0x200), -1 =
disable
snd_irq - IRQ # for CS4232 chip (5,7,9,11,12,15)
snd_mpu_irq - IRQ # for MPU-401 UART (9,11,12,15)
snd_dma1 - first DMA # for CS4232 chip (0,1,3)
snd_dma1_size - max first DMA size in kB (4-64kB)
snd_dma2 - second DMA # for Yamaha CS4232 chip (0,1,3), -1 = disable
snd_dma2_size - max second DMA size in kB (4-64kB)
Для загрузки драйвера со стандартной настройкой карты вы должны выполнить "modprobe snd-card-cs4232 snd_port=0x534 snd_cport=0x120 snd_mpu_port=-1 snd_fm_port=0x388 snd_jport=-1 snd_irq=5 snd_dma1=0 snd_dma1_size=NN snd_dma2=1 snd_dma2_size=NN". (Без поддержки midi, прочитайте заметку в Yamaha OPL-3, и поддержки джойстика ). Если вы использовали другие значения в /etc/isapnp.conf, тогда вы должны их использовать и здесь.

Вместо "NN" вы должны поставить числовые значения, но я не могу подсказать наилучшие значения. Так же я не знаю, необходимо ли указывать размер dma.


Чипы CS4235/CS4236/CS4236B/CS4237B/CS4238B/CS4239

По инструкции в находящейся в файле INSTALL, вы должны определить основной порт и порт управления для карты. Замечу, что для драйвера карт CS4237B я прописал всю информацию (кроме размера DMA), иначе драйвер не работает. Если вы инициализировали карту при помощи isapnp-tools, вы можете получить следующую информацию из файла /etc/isapnp.conf :
snd_port - port # for CS4232 chip (PnP setup - 0x534)
snd_cport - control port # for CS4232 chip (PnP setup - 0x120)
snd_mpu_port - port # for MPU-401 UART (PnP setup - 0x300), -1 = disable
snd_fm_port - FM port # for CS4232 chip (PnP setup - 0x388), -1 = disable
snd_jport - joystick port for CS4232 chip (PnP setup - 0x200), -1 = disable
snd_irq - IRQ # for CS4232 chip (5,7,9,11,12,15)
snd_mpu_irq - IRQ # for MPU-401 UART (9,11,12,15)
snd_dma1 - first DMA # for CS4232 chip (0,1,3)
snd_dma1_size - max first DMA size in kB (4-64kB)
snd_dma2 - second DMA # for Yamaha CS4232 chip (0,1,3), -1 = disable
snd_dma2_size - max second DMA size in kB (4-64kB)
Для того чтобы загрузить драйвер вы должны выполнить "modprobe snd-card-cs4236 snd_port=0x534 snd_cport=0x120 snd_mpu_port=-1 snd_fm_port=0x388 snd_jport=-1 snd_irq=5 snd_dma1=0 snd_dma1_size=NN snd_dma2=1 snd_dma2_size=NN". (Без поддержки midi, прочитайте заметку в Yamaha OPL-3, и поддержки джойстика). Заметки:

  • Вместо "NN" вы должны поставить числовые значения, но я не могу вам подсказать наилучшие значения.

  • Моя карта CS4237B прекрасно работает без указания dma.


Использование kerneld

kerneld - это демон, загружающий модули по мере необходимости, и убирающий их, если они более не используются. Так как я не имею практического опыта работы с kerneld, я не могу подтвердить, что нижеприведенная информация верна. Эта информация взята из файла INSTALL, находящегося в в пакете с драйверами ALSA. Информация по kerneld находится в kerneld-mini-HOWTO.

Следуйте нижеприведенным указаниям:

  • Отредактируйте свой /etc/conf.modules (примеры смотрите ниже)

  • Запустите 'modprobe snd-card', где "card" это название вашей карты [Хотя мне это кажется очень странным, так как kerneld предполагает их загрузку VS]

Пример файла /etc/conf.modules для карты Gravis UltraSound PnP:
alias char-major-14 snd
alias snd-minor-oss-0 snd-interwave
alias snd-minor-oss-3 snd-pcm1-oss
alias snd-minor-oss-4 snd-pcm1-oss
alias snd-minor-oss-5 snd-pcm1-oss
alias snd-minor-oss-12 snd-pcm1-oss
alias snd-card-0 snd-interwave
options snd snd_major=14 snd_cards_limit=1
options snd-interwave snd_index=1 snd_id="guspnp" snd_port=0x220 snd_irq=5
snd_dma1=5 snd_dma2=6
Пример на тот случай, если вы предполагаете использование нескольких карт на одном компьютере (настройка приведена для карт Sound Blaster 16 и Gravis UltraSound Classic):
alias char-major-14 snd
alias snd-minor-oss-0 snd-mixer
alias snd-minor-oss-3 snd-pcm1-oss
alias snd-minor-oss-4 snd-pcm1-oss
alias snd-minor-oss-5 snd-pcm1-oss
alias snd-minor-oss-12 snd-pcm1-oss
alias snd-card-0 snd-sb16
alias snd-card-1 snd-gusclassic
options snd snd_major=14 snd_cards_limit=2
options snd-sb16 snd_index=1 snd_port=0x220 snd_irq=5 snd_dma8=1 snd_dma16=5
options snd-gusclassic snd_index=2 snd_irq=11 snd_dma1=6 snd_dma2=7
Пример на тот случай, если у вас установлены две карты Gravis UltraSound Classic:
alias char-major-14 snd
alias snd-minor-oss-0 snd-mixer
alias snd-minor-oss-3 snd-pcm1-oss
alias snd-minor-oss-4 snd-pcm1-oss
alias snd-minor-oss-5 snd-pcm1-oss
alias snd-minor-oss-12 snd-pcm1-oss
alias snd-card-0 snd-gusclassic
alias snd-card-1 snd-gusclassic
options snd snd_major=14 snd_cards_limit=2
options snd-gusclassic snd_index=1,2 snd_port=0x220,0x260 snd_irq=5,11
snd_dma1=5,6 snd_dma2=7,3


Обратная совместимость

Если вы хотите сохранить совместимость OSS/Free или OSS/Linux, то вам придется установить еще один драйвер snd-pcm1-oss для совместимости с OSS. Наберите:
modprobe snd-pcm1-oss
Это даст вам поддержку устройств /dev/audio и /dev/dsp так же, как это делают драйверы OSS/Free (находятся в ядре) и OSS/Linux (стоят $25). Замечу, что это всего лишь эмуляция.


Тестирование и использование

Теперь вам предстоит удостовериться, что драйвер правильно установлен и попробовать его в действии.


Файловая система /proc

Вы можете узнать много интересной информации о своей системе в подкаталоге /proc. Подкаталог /proc - это виртуальная файловая система, то есть, не существующая в действительности, но управляющая некоторыми процессами и задачами в вашем компьютере. Для того, чтобы ее запустить, вам нужно скомпилировать в ядре поддержку этой системы. У большинства дистрибутивов Linux это делается по умолчанию, но если вы специально пропустили поддержку /proc при компиляции, то разумеется в каталоге /proc ничего не будет.

В каталоге /proc/modules есть информация по загруженным модулям. Когда у вас загружены драйверы ALSA, напишите cat /proc/modules, и увидите примерно следующее:
snd-pcm1-oss      4            0
snd-sb16          1            1
snd-sb-dsp        4    [snd-sb16]      0
snd-pcm1          4    [snd-pcm1-oss snd-sb-dsp]      0
snd-pcm           3    [snd-pcm1-oss snd-sb16 snd-sb-dsp snd-pcm1]    0
snd-mixer         3    [snd-pcm1-oss snd-sb16 snd-sb-dsp]      1
snd-mpu401-uart   1    [snd-sb16]      0
snd-midi          4    [snd-sb16 snd-sb-dsp snd-mpu401-uart]   0
snd-opl3          1    [snd-sb16]      0
snd-synth         1    [snd-sb16 snd-opl3]     0
snd-timer         1    [snd-opl3]      0
snd               8    [snd-pcm1-oss snd-sb16 snd-sb-dsp snd-pcm1 snd-pcm snd-mixer snd-mpu401-uart snd-midi snd-opl3 snd-synth snd-timer]    0
Если у вас во время инсталляции что-то было сделано неправильно, то вы обнаружите несколько устройств "snd", но поддержки звука не будет.

Например (Запомните: никогда не запускайте подобную команду - драйверу cs4236 необходимы все опции):
win3:˜# modprobe snd-card-cs4236
/lib/modules/2.0.35/misc/snd-card-cs4236.o: init_module: Device or resource busy
snd-mixer: Device or resource busy
win3:˜# cat /proc/modules
snd-cs4236        2           0
snd-cs4231        3    [snd-cs4236]    0
snd-timer         1    [snd-cs4231]    0
snd-pcm1          4    [snd-cs4236 snd-cs4231] 0
snd-mixer         3    [snd-cs4236 snd-cs4231] 0
snd-pcm           3    [snd-cs4236 snd-cs4231 snd-pcm1]       0
snd-mpu401-uart   1           0
snd-midi          4    [snd-mpu401-uart]       0
snd-opl3          1           0
snd-synth         1    [snd-opl3]      0
snd-timer         1    [snd-cs4231 snd-opl3]   0
snd               8    [snd-cs4231 snd-timer snd-pcm1 snd-mixer snd-pcm]     0
Вы можете проверить наличие карты, заглянув в /proc/asound/cards. Например:
bash$ cat /proc/asound/cards
0 [card1          : SB16 - Sound Blaster 16
                    Sound Blaster 16 at 0x220, irq 5, dma 1&5
В предыдущем случае (где я забыл) на экране появится:
win3:˜# cat /proc/asound/cards
--- no soundcards ---
Работающая карта CS4236 ответит так:
0 [card1         ]: CS4236 - CS4237B
                    CS4237B at 0x534, irq 7, dma 1&0
Если вы проверили и перепроверили ваши установки, и не можете "найти" свою карту, посмотрите в главу, посвященную устранению ошибок.

Каталог /proc/asound/ содержит множество другой информации о вашей системе. Не забудьте, что /proc/asound/ будет существовать только после загрузки драйвера ALSA. Если у вас нет /proc/asound, то это означает, что вы неправильно загрузили модуль "snd". Вы можете проверить установленные карты в /proc/asound/cards; для карты0 смотрите /proc/asound/0, /proc/asound/1 для карты1 и т.д.

Если после cat /proc/asound/card1/pcm0 появляется
      ES1370 DAC2/ADC
      Playback isn't active.
      Record isn't active.
это означает, что ваш драйвер готов к работе , но в настоящий момент ничего не делает. (Все прошло правильно).

Для пользователей ядра 2.0.x есть еще один способ получения информации о звуковых устройствах, а именно - если вы установили драйвер совместимости с OSS, то у вас есть /dev/sndstat . Разработчики драйверов ALSA говорят, что нельзя полностью положиться на эту информацию, так как она взята из драйвера для совместимости, а более надежный источник находится в /proc/asound/. В ядре 2.2.x ALSA использует модуль ядра soundcore и поэтому не может эмулировать /dev/sndstat, так как он будет конфликтовать с драйверами OSS.


Микшер

Наконец-то, драйверы для вашей карты установлены и файловая система /proc подтверждает это, теперь вы можете пользоваться картой. Для этого нужно настроить микшера на нужные значения громкости. Для этого вам понадобится "amixer" из пакета alsa-utils. Сначала установите пакет или, хотя бы, "amixer" в какое-нибудь доступное место, например /usr/local/bin.

Версия 0.3.2 или более поздняя имеют интерфейс, отличающийся от аналогов в драйверах OSS. Если вы наберете "amixer", увидите составляющие и их значения. Одной из этих составляющих будет "Master volume". Это будет выглядеть примерно так:

Group 'Master',0
  Capabilities: volume
  Channels: Front-Left Front-Right 
  Limits: min = 0, max = 31
  Front-Left: 31 [100%] [on] [---]
  Front-Right: 26 [84%] [on] [---]

К сожалению, я не знаю, как раздельно установить громкость на каналах. При помощи amixer вы можете менять громкость командой "amixer set". Например, для того, чтобы установить Master volume, вам следует ввести:

amixer set Master 15

Не забывайте, что названия элементов в каждой карте могут звучать по разному.

Если у вас установлена версия 0.3.0-pre4 ALSA, то amixer будет работать, как нормальный микшер. Вы можете посмотреть его настройки, набрав "amixer". Эта команда выводит список настроек микшера. Выходные сигналы с карт могут сильно различаться, на моей Soundblaster 16 они следующие:
Master         0  % (-14.00dB) : 0  % (-14.00dB)
Bass           0  % (-14.00dB) : 0  % (-14.00dB)
Treble         0  % (-14.00dB) : 0  % (-14.00dB)
Synth          0  % (-62.00dB) : 0  % (-62.00dB)
PCM            0  % (-62.00dB) : 0  % (-62.00dB)
Line-In        0  % (-62.00dB) : 0  % (-62.00dB) Mute
MIC            0  % (-62.00dB) : 0  % (-62.00dB) Mute
CD             0  % (-62.00dB) : 0  % (-62.00dB) Mute
In-Gain        0  % (-18.00dB) : 0  % (-18.00dB)
Out-Gain       0  % (-18.00dB) : 0  % (-18.00dB)
PC Speaker     0  % (-18.00dB) : 0  % (-18.00dB)

Если вы при такой команде получаете строку типа "amixer: Specify command...", то, скорее всего, вы используете утилиты ALSA 3.2 . Я бы посоветовал, установить версию 0.4.1e или более позднюю или 0.3.0-pre4.


Установки микшера для воспроизведения

Вы наверное заметили, что на установках некоторых устройств стоит "Mute". Это означает, что это устройство выключено. На некоторых картах (например CS4237B) можно отключить и основной канал. Поэтому для CS4237B, я бы написал

amixer set "Master d" unmute

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

amixer set Master 100 unmute

для того, чтобы звук на выходе воспроизводился на 100% . Наберите

amixer set "Master d" 100; amixer set PCM 100 unmute

для того, чтобы установить выходной звук с карты CS4237B на максимум и то же самое сделать для устройства PCM.

Если вы используете более старую версию amixer, то вам надо пропустить "set" в команде и просто напечатать:

amixer "master d" 100


Элементы микшера

Различные части микшера могут быть вам не знакомы, если вы не имели дела с цифровым звуком. В этом вам может помочь sound-HOWTO, а здесь описаны основные термины.

В действительности, вы будете использовать некоторые элементы микшера: один из них "CD" (это аналоговый сигнал с вашего CDROM, большинство CD ROM соединяются со звуковой картой 3-ех или 4-ех жильным красно/бело/черным проводом).

Установка "PCM" используется для большинства приложений. Такие программы, как mpg123, xmms, speakfreely, realplayer, в основном, используют канал PCM.

Установки "MIC" относятся к микрофону, "line-in" - это дополнительный вход звука на вашу карту.

Различные "gain" - это дополнительное усиление сигналов. (Например record-gain - это дополнительное усиление для канала записи, которое может быть полезно при использовании микрофона).


Установки микшера для записи

Вы можете установить канал CD на запись командой:

amixer set CD capture

и остановить запись командой:

amixer set CD nocapture.

Напомню, что более старый amixer для этого использует команды ``amixer CD rec'' и ``amixer CD norec''.

Для канала микрофона эти команды выглядят как:

amixer set "Input Gain" 100; amixer set Mic 100 capture mute.

(Using the Большинство микрофонов имеет установку "gain", для регулировки громкости.

Опять же, старый amixer использует команды ``amixer "input gain" 100; amixer mic 100 rec mute''.


Другие установки микшера

К сожалению, я не смог изменить установки "3d center" и "3d space" при помощи 0.3.0-pre4. Я еще не пробовал это с 0.4.1e (просто мой компьютер работает под ядром 2.0.38). Если кому-то удастся, то, пожалуйста, дайте мне знать. Для этого можно использовать alsamixer, но он еще не переведен для работы с 0.4.1e.

В ALSA FAQ говорится, что возможно делать установки при помощи cat <file> > /proc/asound/#/mixerC0D0, где <file> получен из /proc/asound/#/mixerC0D0. Я не смог этого сделать, так как моя система начала указывать на отсутствие устройств. Также есть программа ``alsactl'', которой я не пользуюсь. И я приглашаю вас (да, именно вас!). чтобы написать эту главу.


Устройства /dev/snd/

В каталоге /dev/snd/ находятся звуковые устройства драйверов. Если у вас стоит одна карта, вам надо просмотреть следующие устройства:
/dev/snd/pcmC0D0 - прямое аудио-устройство карты 0
/dev/snd/mixerC0D0 - микшер карты 0
/dev/snd/controlC0D0 - устройство управления картой 0
Первое число означает номер карты, второе (если есть) номер устройства . Если у карты два устройства PCM, то там будут pcmC0D0 и pcmC0D1. В старых драйверах ALSA используется обозначение /dev/snd/pcm00 (где первое число означает номер карты, второе номер устройства).

Теперь вы можете послать звуковой файл в устройство PCM первой карты. То есть, послать в /dev/snd/pcmC0D0 следующим образом: cat <filename> > /dev/snd/pcmC0D0. filename - это любой файл. Если у вас есть свой звуковой файл, воспользуйтесь им или загляните на http://www.ldp.org/sounds/english.au и скачайте файл, в котором Linus Torvalds объясняет, как произносить слово Linux :)

Ваше звуковое устройство по умолчанию настроено на 8000 Hz, 8 bit. Это означает, что файл "english.au", описанный выше, воспроизведет речь, а другие тестовые файлы только шум. Если вы ничего не услышали, то проверьте ваши колонки, перезапустите "amixer" или обратитесь к доктору. (Позже вы можете использовать настройки 48 KHz, 16 bit, при использовании вашего проигрывателя типа sox или mpg123).

Если вы загрузили модуль"snd-pcm1-oss", вы можете использовать совместимость с OSS при воспроизведении с карты. Но надо сделать следующие настройки:
/dev/snd/pcmC0D0 -> /dev/audio0 (/dev/audio) -> minor 4
/dev/snd/pcmC0D0 -> /dev/dsp0 (/dev/dsp) -> minor 3
/dev/snd/pcmC0D1 -> /dev/adsp0 (/dev/adsp) -> minor 12
/dev/snd/pcmC1D0 -> /dev/audio1 -> minor 4+16 = 20
/dev/snd/pcmC1D0 -> /dev/dsp1 -> minor 3+16 = 19
/dev/snd/pcmC1D1 -> /dev/adsp1 -> minor 12+16 = 28
/dev/snd/pcmC2D0 -> /dev/audio2 -> minor 4+32 = 36
/dev/snd/pcmC2D0 -> /dev/dsp2 -> minor 3+32 = 35
/dev/snd/pcmC2D1 -> /dev/adsp2 -> minor 12+32 = 44

Если вы хотите использовать модуль ``snd-mixer-oss'', то вам придется это делать через микшер обратной совместимости.


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

В файле INSTALL упомянуты настройки, которые должен использовать драйвер ALSA. Но их использование зависит от того, какой программой вы пользуетесь при воспроизведении звука. Обычные программы типа: mpg123, sox или программы X11 типа RealPlayer, будут прекрасно работать и без них.


/proc/asound/#/pcm#0

"Playback erase" - удалить всю дополнительную информацию о приложениях OSS
"Playback <app_name> <fragments> <fragment_size> [<options>]"
"Record erase" - удалить всю дополнительную информацию о приложениях OSS
"Record <app_name> <fragments> <fragment_size> [<options>]"

<app_name> - имя приложения с/без указания пути

<fragments> - количество фрагментов или ноль, если авто

<fragment_size> - размер фрагментов или ноль, если авто

<options> - дополнительные параметры

WR_ONLY - если вы хотите, чтобы приложение только выводило на устройство pcm (это хорошо, например, для Quake)

Примеры:
echo "Playback x11amp 128 16384" > /proc/asound/0/pcm0o
echo "Playback squake 0 0 WR_ONLY" > /proc/asound/0/pcm0o


/proc/asound/#card#/sb16

"Playback 8" -> драйвер будет всегда для воспроизведения использовать только 8-битный DMA-канал.
"Playback 16" -> драйвер будет всегда для воспроизведения использовать только 16-битный DMA-канал.
"Playback auto" (по умолчанию) -> драйвер будет находиться в автоматическом режиме
"Record 8" -> драйвер будет всегда для записи использовать только 8-битный DMA-канал.
"Record 16" -> драйвер будет всегда для записи использовать только 16-битный DMA-канал.
"Record auto" (по умолчанию) -> драйвер будет находиться в автоматическом режиме

Пример: echo "Record 16" > /proc/asound/0/sb16

Для разъяснения обратитесь к файлу INSTALL.


Советы по устранению неисправностей

Пожалуйста, сначала прочтите файл FAQ в каталоге драйвера. Эта глава еще дорабатывается.


Компиляция драйвера

Linux ".h" файлы ядра

Если драйверы ALSA не компилируются правильно, и вы получаете сообщения типа ``version.h'', и/или заголовки некоторых файлов не могут быть найдены, то это означает, что у вас отсутствуют ".h" файлы ядра. Просмотрите kernel-HOWTO, разархивируйте ядро в каталог /usr/src и выполните make config.


Если вы не можете создать исполняемые файлы

Эти утилиты содержат программы написанные на c++. У большинства стоят компиляторы c++ из gcc или egcs, но следует проверить и наличие установленного libstdc++-devel, иначе ваша система при запуске скриптов настройки этих утилит выдаст сообщение об ошибке типа ``c++ compiler cannot create executables'' (ваш компилятор С++ не может создавать запускаемые файлы).


Если вы не можете загрузить драйвер

Пожалуйста, проверьте следующие шаги.


Звуковые устройства

Драйверы ALSA используют различные устройства из /dev-tree. Удостоверьтесь в том, что вы запустили скрипт ./snddevices в каталоге исходных текстов драйверов ALSA.


Проблемы с совместимостью карт

Вы точно уверены, что ваша карта СОВМЕСТИМА с ALSA? Проверьте это еще раз. Иногда X123 - не обязательно X123b. С другой стороны, даже совместимая карта может доставить вам множество неудобств, я, например, очень долго возился при установке CS4237B, потому что к нему была очень туманная документация.


если вы получаете сообщения типа``Device busy'' или ``unresolved symbols''

Возможно, у вас собрана поддержка звука в ядре 2.0.x, или загружается драйвер OSS/Lite (ядро) (проверьте это при помощи cat /proc/modules). Уберите драйвер или пересоберите ядро (взгляните на Kernel-HOWTO).

Звуковой модуль в ядрах 2.0 называется ``sound.o'', и не должен загружаться. (Есть еще драйвер ALSA ``snd.o'').

Если у вас ядро 2.2.x, и в нем не собран звуковой драйвер, то драйверы АLSA также не будут работать.


Ядра 2.0

Я знаю, это звучит глупо, но позвольте вам напомнить еще раз. Если у вас ядро 2.0.x (команда ``uname -a'' выдает вам следующую информацию ``Linux penguin 2.0.35 #6 Wed Sep 23 10:19:16 CEST 1998 i686 unknown''), то вы должны убрать драйверы из ядра. Версии ALSA 0.4.x и более поздние не работают с ядрами 2.0


Ядра 2.2

Если у вас ядро 2.2.x то вам не нужны звуковые драйверы. Ядра 2.2 должны быть собраны с поддержкой звука, но без каких-либо драйверов карт.


Устранение ссылок на другой драйвер

Другой причиной, того, что драйвер ссылается на занятость устройства может быть файл /etc/conf.modules, который до сих пор ссылается на драйвер карты. Вы должны удалить ссылки на драйвер карты и вставить ссылки на драйверы ALSA.


Если у вас все еще появляется сообщение "Unresolved symbols"

Другим источником ошибки "unresolved symbols" может являться новое ядро со старыми драйверами. Перекомпилируйте драйверы ALSA после того, как перекомпилируете новое ядро.


Проверка установок PnP

Вы уверены, что ваша карта работет? Посмотрите еще раз PnP-HOWTO и удостоверьтесь, что вы инициализировали ее правильно.


Правильно ли вы указали параметры карты ?

Проверьте и перепроверьте параметры вашей карты. Напоминаю: 534 это не 543, как и 0x534 это не 534.

Некоторые карты могут иметь модули с другим названием. Еще раз просмотрите команду ``modprobe''. Например, драйвер к Crystal 4232 должен загружаться как modprobe snd-card-cs4232, а не "snd-cs4231", или SoundBlaster PCI 64 загружается как "snd-card-audiopci", а не snd-es1370.


Если драйвер загружается..... но звука нет

Настройки "mute"

У драйверов ALSA, как и у большинства карт, есть настройки типа "mutе". Если вы правильно установили драйверы, но карта все равно не работает, то, возможно, вы забыли про настройки "mute" . Для этого вам потребуется "amixer" или "alsamixer", которые находятся в утилитах драйверов АLSA. Теперь наберите:
amixer set -c 1 Master 70 unmute
amixer set -c 1 PCM 70 unmute
amixer set -c 1 CD 70 unmute
Не забудьте, что вы должны пропустить "set" в командной строке, если у вас старый `amixer'.


Настройки "Gain"

Некоторые карты имеют отдельный усилитель в микшере для входных и выходных сигналов. Это дополнение обычно называется "gain", "in-gain" для входа и "out-gain" для выхода. Устанавливая этот gain на определенный уровень, вы можете достичь максимальной громкости на колонках (подумайте о ваших родителях/соседях/своих ушах). Установки делаются командой
amixer set out-gain 100 unmute


Совместимость OSS/Linux

Если вы используете драйверы ALSA впервые, но уже пользовались встроенными драйверами ранее, то вам скорее всего понадобится обратная совместимость (можно использовать устройство /dev/pcmX ). Для этого вам потребуется установить "драйвер совместимости с OSS". Выполните команду modprobe snd-pcm1-oss && modprobe snd-mixer-oss. (Прочитайте конец этой главы об установке драйвера). Замечание: snd-pcm1-oss это не то же самое, что и snd-pcm1; snd-pcm1-oss вам потребуется для поддержки звука старым способом, а snd-mixer-oss для микшера.


Если вы не можете открыть микшер

Если вы пробовали установить несколько разных версий ALSA, то иногда, в этих случаях, микшер больше нельзя открыть. Это случается если вы установили 0.3.2, а потом переустановили версию 0.3.0-pre4 (IIRC). Вам следует удалить все файлы libasound и все ссылки из /usr/lib, а затем перекомпилировать все библиотеки и утилиты:
rm /usr/lib/libasound.*
И чтобы полностью быть уверенным в успехе, вам надо удалить все драйверы ALSA, затем их перекомпилировать и переустановить.


Общие рекомендации

Попробуйте использовать"insmod"

Лучше начинать с "insmod", а не с kerneld. Может быть, вам поступит сообщение об ошибке.


Прочтите файл INSTALL

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


Сообщения об ошибках

В крайнем случае, можно пересобрать драйвер, а сообщения об ошибках переправить в /var/log/messages. Зайдите в каталог драйверов, используя cd /usr/src/alsa-driver-...., и дайте следующую команду:

./configure --with-debug=detect; make clean; make

Уберите драйвер (так как он активирован, посмотрите инструкцию по его удалению). Затем при помощи "modprobe", установите заново собранный драйвер. Просмотрите /var/log/messages на наличие сообщений.


Если вы все же не смогли справиться...

Если эти сообщения не помогли вам разобраться в ситуации, то пошлите письмо с описанием вашей проблемы по адресу alsa-user@alsa-project.org.

В письме должна содержаться следующая информация:

  • Название вашей звуковой карты + названия микросхем, используемых картой

  • Соответствующие части isapnp.conf, если у вас карта ISA PnP

  • conf.modules, или команды которыми вы активировали драйвер ALSA

  • Все сообщения из /var/log/messages, касающиеся драйвера ALSA


Сообщите нам о замеченных ошибках

Если вы обнаружите ошибку, то разработчики драйверов ALSA были бы вам очень признательны за следующую информацию о ней

  1. Название драйвера + версия ядра: 'cat /proc/asound/version'

  2. Информация по карте:

    • название карты (данное производителем)

    • список используемых картой микросхем

    • содержание 'cat /proc/asound/cards'

  3. Все сообщения из /var/log/messages, относящиеся к драйверу ALSA

  4. Описание ошибки


Совет по применению CD

При использовании kmod/kerneld и драйверов ALSA для проигрывания CD, программы kmod/kerneld не используют драйверы. Это случается потому, что команда, поступающая на проигрыватель CD, приказывает, только ему воспроизводить звук, и не посылает сообщение kmod/kerneld о том, что есть звук. Пожалуй, единственным решением может быть использование modprobe.


Совет по установке драйвера MIDI

Обычно IO порт последовательного устройства управляется стандартным драйвером устройства. До команды ``modprobe snd-serial'' мы должны предупредить драйвер, чтобы он освободил устройство.

Здесь описана процедура.

setserial /dev/ttyS0 uart none
modprobe snd-serial

(Замените /dev/ttyS0 соответствующим устройством /dev/ttySx, если ваше устройство MIDI использует другое последовательное устройство).


Совет: новое ядро? Новые модули!

После того как вы замените ядро, вам следует пересобрать драйверы ALSA. Если вы в каталоге /usr/src, не забудьте скомандовать make clean до того, как выполните ./configure, make, make install.

Да, еще есть ошибка с ядром ``2.2.0ac1'' о котором скрипт настройки говорит ``not a number'' (использовано не числовое выражение). Я думаю, что это все же поправили в новых скриптах, иначе вам придется изменить версию ядра в исходниках.


Совет по использованию KDE и драйверов ALSA

Предположим, что у вас стоит работающая KDE, но не работают системные звуки: например звук при открытии окна или программы. При этом у вас работает проигрыватель CD, mp3 и микшер, то, возможно, у вас не запущено "kwmsound".

Поэтому удостоверьтесь, что "kwmsound" запускается вашим загрузочным скриптом ($KDEDIR/bin/startkde)


Совет: используйте устройства ALSA

Если у вас скомпилирована поддержка звука в ядре, то все приложения будут работать с /dev/pcm0, /dev/audio и /dev/mixer. Это нормально, если вы используете совместимость с OSS при помощи модуля snd-pcm1-oss. Но было бы лучше, если бы вы использовали устройства ALSA, находящиеся в /dev/snd/.


Совет по выгрузке из памяти всех модулей

Удаление из памяти более десяти модулей занятие довольно скучное. К счастью, все модули имеют приставку "snd-" , поэтому можно исхитриться и написать программу в одну командную строку. Вы можете удалить их, используя строку:

cat /proc/modules|gawk '/^snd-/{print $1}'|xargs -i rmmod {}

Juergen Kahrs написал мне: "У меня есть скрипт, который выгружает из памяти модули soundcore, soundlow и sound, если они не используются". Этот скрипт обращается к /proc/modules трижды, поэтому там не должно оставаться модулей после запуска скрипта''. Его скрипт представлен ниже

awk '/^snd/||/^sound/&&($3==0){system("rmmod " $1)}' /proc/modules /proc/modules /proc/modules

Замечание: если один модуль зависит от другого модуля (главного) вы не можете просто удалить главный модуль. Вам придется удалить сначала зависимый, а потом уже главный. (Я не сталкивался с такой ситуацией, но, вероятно, можно выгружать модули ALSA в том порядке в каком они стоят в /proc/modules).