Судя
по письмам, приходящим на мой электронный почтовый адрес, у многих
пользователей возникли некоторые трудности с настройкой звука. Попробуем
рассмотреть этот вопрос поподробнее. Итак, сегодня мы будем учить Linux
говорить.
На теперешний момент существует несколько различных драйверов звуковых карт под Linux. Почему? Углубимся в недалекое прошлое.
С появлением первых версий Linux Ханну Савойлайнен из Финляндии
написал драйвера для звуковой карты Creative Labs Sound Blaster. После
он вместе с другими разработчиками добавил поддержку и других популярных
(и не очень) звуковых карт. Впоследствии американская фирма 4Front
Technologies предложила Саволайнену сотрудничество и стала продавать
драйверы звуковых карт в качестве коммерческого продукта, который
сейчас называется OSS v Open Sound System. Эти драйвера используются во
многих операционных системах. В состав ядра Linux входит бесплатная
версия звукового драйвера OSS под названием OSS/Lite.
Но некоторых программистов, использовавших звуковые карты Gravis
UltraSound, этот драйвер не устраивал. И они, во главе с Ярослевом
Киселой, создали свой собственный проект под названием Gravis UltraSound
Project, чтобы написать драйвер для своих звуковых карт. Впоследствии
этот проект разросся, была добавлена поддержка других звуковых карт.
Тогдаипоявилась ALSA v Advanced Linux Sound Architecture.
Но на этом дело не закончилось. Разработчик Алан Кокс по заданию
фирмы Red Hat Software изменил звуковые драйвера OSS/Lite, выделив их в
отдельные звуковые модули, чем упростил настройку звука. Эти драйвера
входят в стандартную поставку Linux.
Есть еще группа драйверов. Эти драйверы выпускают сами производители
звуковых карт, но они поставляются только в двоичном коде. Это
позволяет производителям программного обеспечения держать в секрете от
конкурентов информацию об их оригинальных разработках. Но это не позволяет пользователям самим исправлять ошибки и совершенствовать драйвера.
Итак, сделаем выводы. Звуковые драйверы делятся на четыре группы:
OSS/Lite v распространяются бесплатно, включены в ядро Linux,
поддерживают большинство звуковых карт, но больше уже не
совершенствуются и не имеют прямой поддержки Plug and Play;
OSS v поддерживают большое количество звуковых карт, легко
устанавливаются, поддерживают Plug and Play, хорошо совместимы с
OSS/Lite, имеют дополнительные возможности, но это коммерческий продукт,
который, кроме того, не предоставляет исходный код;
ALSA v бесплатны, почти совместимы с OSS/Lite, поддерживают Plug and
Play, активно совершенствуются, имеют дополнительные возможности, но в
настоящее время поддерживают лишь несколько звуковых карт;
Драйверы производителей звуковых карт v поддерживают звуковую карту,
которая может не поддерживаться другими драйверами, но доступны лишь в
двоичном коде, и не всегда полностью совместимы с OSS/Lite.
Ну вот, с выбором драйвера мы уже определились. Теперь, для
настройки, нам не помешало бы собрать информацию о звуковой карте. Хотя
часто успешно настроить звуковую карту и не имея всех данных,
рекомендуется узнать производителя и модель звуковой карты, номер
прерывания IRQ, адреса портов ввода-вывода, каналы DMA, тип микросхемы,
использующейся в звуковой карте, тип шины для звуковой карты (ISA, ISA
Plug and Play, PCI). Некоторые из этих параметров можно узнать просто
открыв корпус компьютера. Если же у вас стоит
какая-либо другая ОС, то можно использовать те же параметры, что и в ней.
Есть вообще три метода настройки звуковых карт в Linux. Рекомендуется
пробовать их в той последовательности, в которой они описываются.
Первый метод v использование автоматизированной программы настройки. В
состав некоторых дистрибутивов входит утилита, позволяющая
автоматически настраивать звуковые карты. Использование этой программки
является наиболее простым способом настройки звука. В Red Hat Linux для
такой настройки используется программка sndsonfig. Она производит поиск
всех карт, поддерживающих Plug and Play. Если таковые присутствуют в
системе, то будет выведен список, в котором можно выбрать необходимую
звуковую карту. Затем можно установить номер прерывания IRQ и каналы
DMA, указать адрес порта ввода-вывода. Для карт Plug and Play эти
параметры при можно установить автоматически. После, тип звуковой карты
сохраняется в файле /etc/sysconfig/soundcard. Для Plug and Play карт
также будет создан файл /etc/isapnp.conf , который используется
утилитами ISA Plug and Play для настройки звука при загрузке системы.
Также конфигурируется файл /etc/conf.modules , в котором указываются
соответствующие модули ядра для загрузки во время старта системы.
Для настройки звуковых драйверов OSS или ALSA воспользуйтесь аналогичными программами, которые идут в поставке с ними.
Второй метод включает в себя выполнение описанных выше действий
вручную. Если у вас карта ISA Plug and Play, то, если вы не используете
драйвера OSS или ALSA, для настройки сначала вам необходимо
воспользоваться утилитой isapnp. Для этого следует выполнить следующую
последовательность действий: создать резервную копию файла
/etc/isapnp.conf ; при помощи утилиты pnpdump создать новый файл
/etc/isapnp.conf , для чего выполните команду pnpdump >
/etc/isapnp.conf ; отредактировать этот файл, установив необходимые
параметры карты, для чего достаточно снять комментарии с соответствующих
строк; запустить программу isapnp. Более подробно о настройке карт ISA
Plug and Play можно узнать из документации на isapnp, isapnp.conf,
pnpdump.
Загрузкой звуковых модулей ядра занимается демон kerneld (или kmod в
новых версиях). Чтобы указать модули, которые следует загружать,
необходимо отредактировать файл /etc/conf.modules. Подробная информация о
нем есть в документации на указанный демон. Приводимый ниже пример
реализует загрузку драйверов для SoundBlaster 16 с драйвером OSS/Lite:
alias sound sb
alias synth0 midi
alias midi opl3
options opl3 io=0x388
options sb io=0x220 irq=10 dma=3 dma16=7 mpu_io=0x330
Если вы используете драйвер ALSA, то имена модулей будут другими, для
их правильной настройки надо посмотреть соответствующую документацию.
Для нашего же случая файл конфигурации будет выглядеть следующим
образом:
alias char-major-116 snd
alias char-major-14 soundcore
alias snd-card-0 snd-sb16
alias snd-slot-0 snd-card-0
alias sound service-0-0 snd-mixer-oss
alias sound service-0-1 snd-seq-oss
alias sound service-0-3 snd-pcm1-oss
alias sound service-0-4 snd-pcm1-oss
options snd snd_card_limit=1
# options for sb16
options snd-sb16 snd_port=0x220 snd_mpu_port=0x330 snd_irq=10
snd_dma8=3 snd_dma16=7 snd_dma8_size=64 snd_dma16_size=128
smd_mic_agc=1 snd_isapnp=0
# initialize mixer
post-install snd-sb16 alsactl restore
Для настройки и загрузки драйвера OSS обычно используется скрипт
soundon. Если модули сконфигурированы правильно, то они должны
загружаться автоматически, как только какое-нибудь приложение обратится к
звуковой карте.
Обычно модули расположены в каталоге /lib/modules/a.b.c/misc , где a.b.c v версия ядра. Иначе их надо встроить в ядро.
Третий метод заключается в непосредственной перекомпиляции ядра с
указанием драйверов, которые необходимо в него встроить. Этот метод не
требует указания модулей для загрузки. Подробнее перекомпиляцию ядра мы
рассмотрим в какой-либо из следующих статей (хотя можно почитать и
мануал), но вкратце процесс настройки драйверов звуковых карт можно
описать так. После установки пакета с исходными текстами, надо зайти в
каталог с исходниками (/usr/src/linux) и дать команду make menuconfig.
Загрузится текстовая оболочка с менюподобным интерфейсом. Для настройки
требуется изменять опции в подменю ?Sound¦ и ?Additional low level sound
drivers¦. Программа интуитивно понятна и позволяет указать описанные
выше параметры звуковых карт без особых проблем. После вам потребуется
откомпилировать ядро и установить его.
Теперь, чтобы убедиться в правильности настройки звуковой карты, надо
проверить, загружаются ли звуковые драйверы. Информацию о состоянии
звуковой карты можно получить командой cat /dev/sndstat. Если вместо
информации вы получите сообщение об ошибке, например cat:/dev/sndstat:
Operation not supported by device, то это значит, что звуковые модули не
были загружены. Здесь стоит сказать, что для драйвера ALSA каталог
/dev/sndstat не создается. Его аналогом является каталог /dev/asound.
После того, как вы удостоверились, что звуковые модули загружаются,
можно приступить к тестированию звуковой карты. В первую очередь
рекомендуется запустить микшер, попробовать поизменять различные
настройки и посмотреть, не возникают ли при этом ошибки. Используйте
xmixer, aumix, kmix. Для проигрывания файлов можно воспользоваться
программами play или kmedia.
www.i2r.ru