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, будут прекрасно работать и без них.
"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 |
"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.
Большинство новых карт для платформы 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, может быть, там вы найдете нужную информацию.
Некоторым может понадобиться другое HOWTO, под названием Kerneld-mini-HOWTO. Kerneld - это демон, который устанавливает и убирает модули ядра по мере их необходимости. (У меня нет опыта работы с ним, поэтому прочту все советы по этому поводу. Документация драйверов ALSA содержит информацию по конфигурации kerneld, которая включена в это мини-HOWTO.)
С тех пор, как загрузчик модулей был встроен в ядро 2.2.x, все изменилось. Но я один из тех, кто предпочитает использовать modprobe вместо того, чтобы доверять демону. У меня нет информации по поводу работы с этим демоном.
Если драйвер загружается..... но звука нет
У драйверов 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.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.x то вам не нужны звуковые драйверы. Ядра 2.2 должны быть собраны с поддержкой звука, но без каких-либо драйверов карт.
Устранение ссылок на другой драйвер
Другой причиной, того, что драйвер ссылается на занятость устройства может быть файл /etc/conf.modules, который до сих пор ссылается на драйвер карты. Вы должны удалить ссылки на драйвер карты и вставить ссылки на драйверы ALSA.
Если у вас все еще появляется сообщение "Unresolved symbols"
Другим источником ошибки "unresolved symbols" может являться новое ядро со старыми драйверами. Перекомпилируйте драйверы ALSA после того, как перекомпилируете новое ядро.
Вы уверены, что ваша карта работет? Посмотрите еще раз 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
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''.
Компиляция драйвера
Если драйверы 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 каталога драйвера.
По инструкции, приведенной в файле 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 находящегося в каталоге драйверов. Если ваш драйвер не работает, то я бы посоветовал заглянуть туда и посмотреть дополнительную информацию по нему.
В крайнем случае, можно пересобрать драйвер, а сообщения об ошибках переправить в /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.
Если у вас старое ядро, то для обеспечения поддержки звука прочтите главу Разд. Обратная совместимость.