Аннотация |
Этот документ описывает установку драйверов ALSA под Linux. Они полностью совместимы с обычными драйверами и являются их полноценной заменой. |
Это 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, для получения более подробной информации.
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@metalab.unc.edu>, или к координатору русского перевода Linux HOWTO компании ASPLinux по адресу <linux-howto@asplinux.ru>
Если вам нужен звук и нужен именно СЕЙЧАС! и не после прочтения этого HOWTO, то этот краткий экскурс по правилам установки драйверов ALSA именно для вас. Замечание: есть небольшая разница между версиями ALSA, которые поддерживают ядра 2.0, и теми, которые поддерживают ядра 2.2.
Если вы устанавливаете 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 версий 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 были изначально разработаны как замена драйверов карт 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
4231
4232
4232A
4235
4236B
4237B
4238B
4239
4280
4610
4612
4614
4615
4680
Новейший список можно найти в каталоге драйверов doc/SOUNDCARDS
Документ 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 вместо того, чтобы доверять демону. У меня нет информации по поводу работы с этим демоном.
работающая система Linux (например дистрибутив Slackware), с установленными приложениями: gcc, make и т.д.
некоторые практические знания о Linux (подразумевается ваше знание "ls", "cd", "tar" и т.д.)
доступ с паролем root
Если у вас есть карта PnP, тогда вам так же потребуется:
пакет программ isapnptools.
Надо отметить, что у вас не должно быть никаких активных звуковых драйверов, когда вы используете драйверы ALSA. Если у вас встроенный драйвер, то вам придется перекомпилировать ядро. Если у вас стоит старый модуль "sound.o", то вы должны его сделать нерабочим. При использовании kerneld это означает, что вам надо удалить sound.o из каталога /lib/modules/<kernel_version>/misc . Новейшие системы RedHat могут использовать несколько активных звуковых модулей. Вам потребуется удалить их все.
При использовании ядер серии 2.2 вы должны включить в них поддержку звука, но не драйвер карты. Затем скомпилируйте и установите ядро, и после этого скомпилируйте драйверы ALSA.
Драйверы ALSA можно скачать с ftp://ftp.alsa-project.org/pub/ , зеркала которого находятся на
Голландия: ftp://linux.a2000.nl/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
Драйверы 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 |
До того, как вы начнете использовать библиотеки, у вас должен быть драйвер, а до использования утилит у вас должны быть библиотеки:
cd alsa-driver-0.4.1e |
./configure |
./configure --with-isapnp=yes |
make |
make install |
cd ../alsa-lib-0.4.1d |
./configure |
make |
make install |
cd ../alsa-utils-0.4.1 |
./configure |
make |
make install |
В каталоге драйвера есть скрипт, который установит звуковые устройства ALSA в ваш каталог /dev . Наберите
./snddevices |
Теперь вы можете установить драйвер. Это описано в следующей главе.
Существует два способа использования звуковых модулей ALSA. Я предпочитаю делать это, как описано в инструкции, этот метод подразумевает, что во время запуска системы модуль подгружается. Драйверы ALSA были спроектированы как двоякие, то есть существует возможность их применения как догружаемых модулей, так и не подгружаемых (установленных). После загрузки они не сбивают настроек микшера, поэтому вы можете воспользоваться другим способом их эксплуатации - при помощи kerneld.
Если у вас старое ядро, то для обеспечения поддержки звука прочтите главу Разд. Обратная совместимость.
Замечание: если у вас карта 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 |
/sbin/modprobe snd-card-sb16 |
Не забудьте, что в версиях ALSA до 0.4.x иногда употребляют названия моделей карт. Это отмечено звездочкой (*).
Карты ESS AudioDrive ES-1688 и ES-688
modprobe snd-card-audiodrive1688
Карты на основе ESS AudioDrive ES-18xx
modprobe snd-card-audiodrive18xx
Gravis UltraSound PnP, Dynasonic 3-D/Pro, STB Sound Rage 32, ExpertColor MED3201 и другие карты, основанные на чипе AMD InterWave™.
modprobe snd-card-interwave
UltraSound 32-Pro (карты STB используемые Compaq) и другие карты, основанные на чипе AMD InterWave (tm), с улучшенной схемой управления низкими частотами TEA6330T, управлением высоких частот и громкостью
modprobe snd-card-interwave-stb
Карты 8-bit Soundblaster (SoundBlaster 1.0, SoundBlaster 2.0, SoundBlaster Pro)
modprobe snd-card-sb8
Карты 16-bit SoundBlaster (SoundBlaster 16 (PnP), SoundBlaster AWE 32 (PnP), SoundBlaster AWE 64 (PnP). Замечание: этот модуль не поддерживает карту SoundBlaster VibraX16.
modprobe snd-card-sb16
Группа карт, использующих чипсет 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-opl3sa" не будет работать, так как этот драйвер не проводит автоматического определения. Смотрите далее.
Карты S3 SonicVibes PCI . (PINE Schubert 32 PCI)
modprobe snd-card-sonicvibes
Карты Ensoniq AudioPCI ES1370/1371 PCI . (SoundBlaster PCI 64)
modprobe snd-card-audiopci
Команда ``modprobe snd-card-cs4231'' не будет работать, так как не проводится автоматического определения. Смотрите далее.
Для всех карт, основанных на чипе CS4232/CS4232A команда "modprobe snd-card-cs4232" не будет работать, так как не проводится автоматического определения. Смотрите далее.
Для всех карт основанных на чипе CS4235/CS4236/CS4236B/CS4237B/CS4238B/CS4239, команда "modprobe snd-card-cs4236" не будет работать, так как не проводится автоматического определения. Смотрите далее.
Карты 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 .
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
Это карты 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''.
Если у вас драйвер без автоматического определения, то для его работы вам потребуется внести больше информации при его загрузке. Более подробно это описано в файле INSTALL каталога драйвера.
По инструкции, приведенной в файле 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) |
Заметьте, что значения NN необходимо указать, однако я не знаю стандартных значений. Я также не знаю, требуется ли для нормальной работы опция dma_size.
Если у вас IBM Thinkpad с этим чипсетом, то загляните на http://www.cirs.org/patrick/index.html.
Если вы используете драйвер из версии 0.3.0-pre4, то пропустите ``card-'' в названии драйвера.
По инструкции, находящейся в файле 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) |
Вместо "NN" вы должны поставить числовые значения, но я не могу подсказать наилучшие значения. Также я не знаю, необходимо ли указывать размер dma.
По инструкции, находящейся в файле 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) |
Вместо "NN" вы должны поставить числовые значения, но я не могу подсказать наилучшие значения. Так же я не знаю, необходимо ли указывать размер dma.
По инструкции в находящейся в файле 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) |
Вместо "NN" вы должны поставить числовые значения, но я не могу вам подсказать наилучшие значения.
Моя карта CS4237B прекрасно работает без указания dma.
kerneld - это демон, загружающий модули по мере необходимости, и убирающий их, если они более не используются. Так как я не имею практического опыта работы с kerneld, я не могу подтвердить, что нижеприведенная информация верна. Эта информация взята из файла INSTALL, находящегося в в пакете с драйверами ALSA. Информация по kerneld находится в kerneld-mini-HOWTO.
Следуйте нижеприведенным указаниям:
Отредактируйте свой /etc/conf.modules (примеры смотрите ниже)
Запустите 'modprobe snd-card', где "card" это название вашей карты [Хотя мне это кажется очень странным, так как kerneld предполагает их загрузку VS]
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 |
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 |
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 |
Теперь вам предстоит удостовериться, что драйвер правильно установлен и попробовать его в действии.
Вы можете узнать много интересной информации о своей системе в подкаталоге /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 |
Например (Запомните: никогда не запускайте подобную команду - драйверу 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 |
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 --- |
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/pcmC0D0 - прямое аудио-устройство карты 0 /dev/snd/mixerC0D0 - микшер карты 0 /dev/snd/controlC0D0 - устройство управления картой 0 |
Теперь вы можете послать звуковой файл в устройство 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, будут прекрасно работать и без них.
"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 |
"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 в каталоге драйвера. Эта глава еще дорабатывается.
Если драйверы 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, потому что к нему была очень туманная документация.
Возможно, у вас собрана поддержка звука в ядре 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" может являться новое ядро со старыми драйверами. Перекомпилируйте драйверы ALSA после того, как перекомпилируете новое ядро.
Вы уверены, что ваша карта работет? Посмотрите еще раз PnP-HOWTO и удостоверьтесь, что вы инициализировали ее правильно.
Проверьте и перепроверьте параметры вашей карты. Напоминаю: 534 это не 543, как и 0x534 это не 534.
Некоторые карты могут иметь модули с другим названием. Еще раз просмотрите команду ``modprobe''. Например, драйвер к Crystal 4232 должен загружаться как modprobe snd-card-cs4232, а не "snd-cs4231", или SoundBlaster PCI 64 загружается как "snd-card-audiopci", а не snd-es1370.
У драйверов 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 |
Некоторые карты имеют отдельный усилитель в микшере для входных и выходных сигналов. Это дополнение обычно называется "gain", "in-gain" для входа и "out-gain" для выхода. Устанавливая этот gain на определенный уровень, вы можете достичь максимальной громкости на колонках (подумайте о ваших родителях/соседях/своих ушах). Установки делаются командой
amixer set out-gain 100 unmute |
Если вы используете драйверы 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.* |
Лучше начинать с "insmod", а не с kerneld. Может быть, вам поступит сообщение об ошибке.
Очень много информации можно почерпнуть из файла 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 были бы вам очень признательны за следующую информацию о ней
Название драйвера + версия ядра: 'cat /proc/asound/version'
Информация по карте:
название карты (данное производителем)
список используемых картой микросхем
содержание 'cat /proc/asound/cards'
Все сообщения из /var/log/messages, относящиеся к драйверу ALSA
Описание ошибки
При использовании kmod/kerneld и драйверов ALSA для проигрывания CD, программы kmod/kerneld не используют драйверы. Это случается потому, что команда, поступающая на проигрыватель CD, приказывает, только ему воспроизводить звук, и не посылает сообщение kmod/kerneld о том, что есть звук. Пожалуй, единственным решением может быть использование modprobe.
Обычно 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, но не работают системные звуки: например звук при открытии окна или программы. При этом у вас работает проигрыватель CD, mp3 и микшер, то, возможно, у вас не запущено "kwmsound".
Поэтому удостоверьтесь, что "kwmsound" запускается вашим загрузочным скриптом ($KDEDIR/bin/startkde)
Если у вас скомпилирована поддержка звука в ядре, то все приложения будут работать с /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).