Linux mini-HOWTO

         

Alsa-sound-mini-HOWTO


Valentijn Sessink
valentyn@alsa-project.org
Перевод: Михаил Корепанов, ASPLinux

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



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


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

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

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

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

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

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

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

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

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



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


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


/proc/asound/#/pcm#0



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

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

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

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

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

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.



Другие 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 вместо того, чтобы доверять демону. У меня нет информации по поводу работы с этим демоном.



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



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

У драйверов ALSA, как и у большинства карт, есть настройки типа "mutе". Если вы правильно установили драйверы, но карта все равно не работает, то, возможно, вы забыли про настройки "mute" . Для этого вам потребуется "amixer" или "alsamixer", которые находятся в утилитах драйверов АLSA. Теперь наберите:



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


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


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

Драйверы 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.



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


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

В каталоге /proc/modules есть информация по загруженным модулям. Когда у вас загружены драйверы ALSA, напишите cat /proc/modules, и увидите примерно следующее:



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


Драйверы ALSA можно скачать с ftp://ftp.alsa-project.org/pub/

, зеркала которого находятся на

США: ftp://ftp.silug.org/pub/alsa

США: ftp://ftp.eecs.umich.edu/pub/linux/alsa

Голландия: ftp://linux.a2000.nl/alsa

Польша: ftp://ftp.task.gda.pl/pub/linux/misc/alsa

Германия: ftp://ftp.tu-clausthal.de/pub/linux/alsa

Словакия: ftp://ftp.phacka.sk/pub/alsa

Австралия: ftp://ftp.suburbia.com.au/pub/alsa

Для установки драйверов 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



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


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

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

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

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

Пример файла /etc/conf.modules для карты Gravis UltraSound PnP:



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


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


Gravis UltraSound Extreme Разд. ForteMedia FM801

modprobe snd-card-gusextreme


Gravis UltraSound MAX Разд. ForteMedia FM801

modprobe snd-card-gusmax


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


OAK Mozart Разд. ForteMedia FM801

modprobe snd-mozart


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''.


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



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

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


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

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



Микшер


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

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



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


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


OPL3-SA2 и OPL3-SA3

По инструкции, приведенной в файле INSTALL, вы должны внести дополнительную информацию для драйвера. Если вы инициализировали карту при помощи isapnp-tools, вы можете получить следующую информацию из файла /etc/isapnp.conf :



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


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



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


Если вы хотите сохранить совместимость OSS/Free или OSS/Linux, то вам придется установить еще один драйвер snd-pcm1-oss для совместимости с OSS. Наберите:

modprobe snd-pcm1-oss

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



Общая информация о драйверах 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/



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



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

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


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

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


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

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



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


Драйверы 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'',treme, 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



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


В каталоге драйвера есть скрипт, который установит звуковые устройства ALSA в ваш каталог /dev . Наберите

./snddevices

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

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



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


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



Сборка


До того, как вы начнете использовать библиотеки, у вас должен быть драйвер, а до использования утилит у вас должны быть библиотеки:



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


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

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

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

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

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

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

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

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



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


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



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


После того как вы замените ядро, вам следует пересобрать драйверы 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)



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


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



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


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

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



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


Удаление из памяти более десяти модулей занятие довольно скучное. К счастью, все модули имеют приставку "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).



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


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



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


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



Установка 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 для ядер 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.



Установка modprobe


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

Самые большие проблемы могут возникнуть с чипсетами Crystal -для них у драйверов ALSA нет автоматического определения. Более подробную информацию можно прочитать в файле INSTALL, который находится в каталоге драйвера. Вот два примера: первый для Gravis UltraSound (GUS) и аналогов:



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


В каталоге /dev/snd/ находятся звуковые устройства драйверов. Если у вас стоит одна карта, вам надо просмотреть следующие устройства:



Версии 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 .



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


Несколько замечаний. У 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, если вы используете Linux. Базовые тесты были проведены на дистрибутиве Slackware 4.0 Linux на компьютере AMD/K6, но это все должно работать и с другими дистрибутивами. Я не испытывал драйверы при работе на других платформах. У меня есть данные только о x86-компьютерах, поэтому, если вы протестировали драйвер на других системах, пожалуйста, напишите мне.
Было бы не лишним, если бы вы прочли "HOWTO: Звук в Linux" (смотрите главу Другие HOWTO), так как этот документ HOWTO описывает только драйверы, встроенные в ядро.

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


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

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