Linux. Звук

Linux. Звук "Алло, как слышно?.."
Судя по письмам, приходящим на мой электронный почтовый адрес, у многих пользователей возникли некоторые трудности с настройкой звука. Попробуем рассмотреть этот вопрос поподробнее. Итак, сегодня мы будем учить Linux говорить.

На теперешний момент существует несколько различных драйверов звуковых карт под Linux. Почему? Углубимся в недалекое прошлое.
С появлением первых версий Linux Ханну Савойлайнен из Финляндии написал драйверы для звуковой карты Creative Labs Sound Blaster. После он вместе с другими разработчиками добавил поддержку и других популярных (и не очень) звуковых карт. Впоследствии американская фирма 4Front Technologies предложила Саволайнену сотрудничество и стала продавать драйверы звуковых карт в качестве коммерческого продукта, который сейчас называется OSS — Open Sound System. Эти драйверы используются во многих операционных системах. В состав ядра Linux входит бесплатная версия звукового драйвера OSS под названием OSS/Lite.

Но некоторых программистов, использовавших звуковые карты Gravis UltraSound, этот драйвер не устраивал. И они, во главе с Ярослевом Киселой, создали свой собственный проект под названием Gravis UltraSound Project, чтобы написать драйвер для своих звуковых карт. Впоследствии этот проект разросся, была добавлена поддержка других звуковых карт. Тогда и появилась ALSA — Advanced Linux Sound Architecture.
Но на этом дело не закончилось. Разработчик Алан Кокс по заданию фирмы Red Hat Software изменил звуковые драйверы OSS/Lite, выделив их в отдельные звуковые модули, чем упростил настройку звука. Эти драйверы входят в стандартную поставку Linux.
Есть еще группа драйверов, которые выпускают сами производители звуковых карт, но они поставляются только в двоичном коде. Это позволяет производителям программного обеспечения держать в секрете от конкурентов информацию об их оригинальных разработках. Но это не позволяет пользователям самим исправлять ошибки и совершенствовать драйверы.

Итак, сделаем выводы. Звуковые драйверы делятся на четыре группы:
1. OSS/Lite — распространяются бесплатно, включены в ядро Linux, поддерживают большинство звуковых карт, но больше уже не совершенствуются и не имеют прямой поддержки Plug and Play;
2. OSS — поддерживают большое количество звуковых карт, легко устанавливаются, поддерживают Plug and Play, хорошо совместимы с OSS/Lite, имеют дополнительные возможности, но это коммерческий продукт, который, кроме того, не предоставляет исходный код;
3. ALSA — бесплатны, почти совместимы с OSS/Lite, поддерживают Plug and Play, активно совершенствуются, имеют дополнительные возможности, но в настоящее время поддерживают лишь несколько звуковых карт;
4. Драйверы производителей звуковых карт — поддерживают звуковую карту, которая может не поддерживаться другими драйверами, но доступны лишь в двоичном коде и не всегда полностью совместимы с OSS/Lite.

Ну вот, с выбором драйвера мы уже определились. Теперь, для настройки, нам не помешало бы собрать информацию о звуковой карте. Хотя часто, для того, чтобы успешно настроить звуковую карту, не имея всех данных, рекомендуется узнать производителя и модель звуковой карты, номер прерывания IRQ, адреса портов ввода-вывода, каналы DMA, тип микросхемы, использующейся в звуковой карте, тип шины для звуковой карты (ISA, ISA Plug and Play, PCI). Некоторые из этих параметров можно узнать, просто открыв корпус компьютера. Если же у вас стоит какая-либо другая ОС, то можно использовать те же параметры, что и в ней.

Есть вообще три метода настройки звуковых карт в Linux. Рекомендуется пробовать их в той последовательности, в которой они описываются.
Первый метод — использование автоматизированной программы настройки. В состав некоторых дистрибутивов входит утилита, позволяющая автоматически настраивать звуковые карты. Использование этой программки является наиболее простым способом настройки звука. В 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-slo
t-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 # option
s for sb16 options snd-sb16 snd_port=0x220 snd_mpu_port=0x330 snd_irq=10 \ snd_dma8=3 snd_dma16=7 sn
d_dma8_size=64 snd_dma16_size=128 \ smd_mic_agc=1 snd_isapnp=0 # initialize mixer post-install snd-s
b16 alsactl restore
Для настройки и загрузки драйвера OSS обычно используется скрипт soundon. Если модули сконфигурированы правильно, то они должны загружаться автоматически, как только какое-нибудь приложение обратится к звуковой карте.
Обычно модули расположены в каталоге /lib/modules/a.b.c/misc, где a.b.c — версия ядра. Иначе их надо встроить в ядро.

Третий метод заключается в непосредственной перекомпиляции ядра с указанием драйверов, которые необходимо в него встроить. Этот метод не требует указания модулей для загрузки. Подробнее перекомпиляцию ядра мы рассмотрим в какой-либо из следующих статей (хотя можно почитать и мануал), но вкратце процесс настройки драйверов звуковых карт можно описать так. После установки пакета с исходными текстами надо зайти в каталог с исходниками (/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.

X-Stranger
xstranger@tut.by


(c) компьютерная газета




Компьютерная газета. Статья была опубликована в номере 21 за 2001 год в рубрике soft :: linux

©1997-2024 Компьютерная газета