Тестирование и использование
Теперь вам предстоит удостовериться, что драйвер правильно установлен и попробовать его в действии.
Файловая система /proc
Вы можете узнать много интересной информации о своей системе в подкаталоге /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 |
Если у вас во время инсталляции что-то было сделано неправильно, то вы обнаружите несколько устройств "snd", но поддержки звука не будет.
Например (Запомните: никогда не запускайте подобную команду - драйверу 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 |
Вы можете проверить наличие карты, заглянув в /proc/asound/cards. Например:
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 --- |
Работающая карта CS4236 ответит так:
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, вам следует ввести:
Не забывайте, что названия элементов в каждой карте могут звучать по разному.
Если у вас установлена версия 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/ находятся звуковые устройства драйверов. Если у вас стоит одна карта, вам надо просмотреть следующие устройства:
/dev/snd/pcmC0D0 - прямое аудио-устройство карты 0
/dev/snd/mixerC0D0 - микшер карты 0
/dev/snd/controlC0D0 - устройство управления картой 0 |
Первое число означает номер карты, второе (если есть) номер устройства . Если у карты два устройства PCM, то там будут pcmC0D0 и pcmC0D1. В старых драйверах ALSA используется обозначение /dev/snd/pcm00 (где первое число означает номер карты, второе номер устройства).
Теперь вы можете послать звуковой файл в устройство 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, будут прекрасно работать и без них.
/proc/asound/#/pcm#0
"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 |
/proc/asound/#card#/sb16
"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.