Linux. Звук. |
Судя по письмам, приходящим на мой электронный почтовый адрес, у многих пользователей возникли некоторые трудности с настройкой звука. Попробуем рассмотреть этот вопрос поподробнее. Итак, сегодня мы будем учить 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. Есть еще группа драйверов. Эти драйверы выпускают сами производители звуковых карт, но они поставляются только в двоичном коде. Это позволяет производителям программного обеспечения держать в секрете от конкурентов информацию об их оригинальных разработках. Но это не позволяет пользователям самим исправлять ошибки и совершенствовать драйвера. Итак, сделаем выводы. Звуковые драйверы делятся на четыре группы:
Ну вот, с выбором драйвера мы уже определились. Теперь, для настройки, нам не помешало бы собрать информацию о звуковой карте. Хотя часто успешно настроить звуковую карту и не имея всех данных, рекомендуется узнать производителя и модель звуковой карты, номер прерывания 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 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. |