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-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 - версия ядра. Иначе их надо встроить в ядро.



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

Похожие новости

Комментариев 0