В началоРуководство Gentoo Linux ALSA → Настройка/тестирование ALSA
Gentoo-doc HOME Пред.: Установка ALSAВ началоУровень выше: Руководство Gentoo Linux ALSAСлед.: Другие возможности ALSA

3. Настройка/тестирование ALSA

3.1. Утилиты ALSA

Пакет alsa-utils составляет неотъемлемую часть ALSA и содержит множество крайне полезных программ, в том числе и сценарий инициализации ALSA. Поэтому мы настоятельно советуем вам установить alsa-utils.

Листинг 7. Установка alsa-utils

# emerge alsa-utils


Примечание

Eсли вы включили поддержку ALSA в вашем ядре, а не собрали её в качестве модулей, пожалуйста, перейдите в раздел сценарий инициализации ALSA. Всё, что осталось сделать всем остальным, это настроить ALSA. Сделать это очень просто благодаря утилите, входящей в состав alsa-utilsalsaconf.

3.2. Настройка

Последние версии udev (>=udev-103) в некоторой степени предоставляют автоматическое конфигурирование вашей аудио карты на уровне ядра. По возможности старайтесь полагаться на автоматическую настройку и позвольте ядру настроить вашу звуковую карту. В противном случае, чтобы настроить карту, используйте alsaconf, как это показано ниже.

Примечание

Пожалуйста, завершите все программы, которые могут обратиться к звуковой карте во время работы alsaconf.

Чтобы настроить вашу звуковую карту просто наберите alsaconf в командной оболочке с правами root.

Листинг 8. Запуск alsaconf

# alsaconf


Вы увидите изящный управляемый с помощью меню интерфейс программы, которая автоматически исследует ваши устройства и попробует найти вашу звуковую карту. Вас попросят выбрать вашу звуковую карту из списка. Как только это будет сделано, вас спросят разрешения автоматически сделать необходимые изменения в /etc/modules.d/alsa. После этого программа изменит настройки громкости на оптимальный уровень, выполнит update-modules и запустит службу /etc/init.d/alsasound. Как только alsaconf завершит работу, вы сможете продолжить с настройки сценария инициализации ALSA.

3.3. Сценарий инициализации ALSA

Мы почти завершили настройку. Вне зависимости от выбранного вами способа установки ALSA, вам понадобится что-то, что будет загружать модули или инициализировать ALSA и восстанавливать настройки громкости при загрузке системы. Сценарий инициализации ALSA, называемый alsasound, сделает всё это для вас. Добавьте его в загрузочный уровень исполнения.

Листинг 9. Добавление ALSA в загрузочный уровень исполнения

# rc-update add alsasound boot
 * alsasound added to runlevel boot
 * rc-update complete.


Теперь проверьте файл /etc/conf.d/alsasound и убедитесь, что переменная SAVE_ON_STOP установлена в значение yes, тогда ваши настройки звука при выключении системы будут сохраняться.

3.4. Группа audio

Перед тем как начать проверку звука, необходимо сделать одну последнюю важную вещь. Главное правило в операционных системах *nix гласит: «не запускай ничего с правами root, если этого не требуется». И в данной ситуации это правило тоже применимо ;) Каким образом? Пожалуй, большую часть времени вы будете работать под учётной записью пользователя, при этом слушать музыку или иметь доступ к звуковой карте. Чтобы вы могли это делать, вы должны быть в группе audio. Тут то мы и добавим пользователей в эту группу, чтобы у них не было проблем с доступом к аудио устройствам. Мы воспользуемся gpasswd, так что вы должны иметь права root, чтобы сделать это.

Листинг 10. Добавление пользователей в группу audio

(Замените <имя_пользователя> вашим именем)
# gpasswd -a <имя_пользователя> audio
Adding user <имя_пользователя> to group audio


3.5. Проверка громкости!

Теперь все настройки и необходимые предпосылки выполнены, так что давайте заставим ALSA работать. Если вы запускали утилиту alsaconf, то можете пропустить этот шаг, так как alsaconf уже всё сделал за вас.

Листинг 11. Запуск сервиса

# /etc/init.d/alsasound start


Теперь мы позаботились обо всём, что может быть необходимым, нам нужно проверить громкость, так как в определённых случаях звук выключен. Для этого мы воспользуемся alsamixer.

Листинг 12. Запуск alsamixer

(Откройте в терминале. Будут отображены только требуемые настройки)
# alsamixer


Важно

Если у вас проблемы с запуском alsamixer и вы получаете ошибки, подобные этой: «alsamixer: function snd_ctl_open failed for default: No such file or directory», то, скорее всего, проблема в том, как демон udev инициализировал устройства. Выполните killall udevd; udevstart для перезагрузки устройств в /dev и попробуйте снова alsamixer. Это должно решить проблему.

Вот так может выглядеть микшер ALSA при первом запуске. Обратите внимание, что уровни каналов Master и PCM занижены и что под ними буквы MM. Это означает, что они выключены. Если вы попробуете что-нибудь проиграть, в то время пока alsamixer в таком состоянии, то вы ничего не услышите из ваших динамиков.

Главное окно микшера ALSA, каналы выключены

Для начала включим каналы и установим необходимые уровни громкости.

Внимание

Оба канала Master и PCM должны быть включены и установлены в слышимый уровень громкости, если вы хотите услышать что-нибудь из ваших динамиков.

  1. Для перемещения между каналами используйте клавиши влево и вправо. (<- и ->).

  2. Для того чтобы выключить/включить канал, например Master, выберите его и нажмите клавишу m.

  3. Чтобы увеличить или уменьшить уровень громкости, используйте клавиши вверх и вниз.

Примечание

Будьте осторожны при установке значений для Bass и Treble. Обычно для обоих оптимально значение 50. Слишком высокие значения Bass могут вызвать дребезжание неспособных воспроизводить глубокие басы динамиков.

После того как вы всё сделаете, ваш микшер ALSA должен выглядеть, так, как это показано ниже. Заметьте, что вместо MM стоит 00 и уровни громкости в оптимальном значении.

Микшер ALSA готов зажигать

3.6. Проверка звука!

Наконец-то. Какие-нибудь звуки. Если всё прошло успешно, то теперь вы сможете услышать музыку. Быстрый способ проверить — это воспользоваться консольной командой, наподобие media-sound/madplay. Вы также можете использовать что-нибудь более известное, например, mpg123. Если вы поклонник формата OGG, используйте программу ogg123 из пакета media-sound/vorbis-tools. Используйте любой удобный для вас плеер. Как всегда, emerge — всё что вам нужно.

Листинг 13. Установка программ

(Установка необходимых приложений)
# emerge madplay mpg123
(Для проигрывания ogg-файлов)
# emerge vorbis-tools


А теперь проиграем ваш любимый саундтрек...

Листинг 14. Проигрывание музыки

# madplay -v /mnt/shyam/Music/Paul\ Oakenfold\ -\ Dread\ Rock.mp3
MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al.
          Title: Dread Rock
         Artist: Paul Oakenfold
          Album: Matrix Reloaded
           Year: 2003
          Genre: Soundtrack
                 Soundtrack
 00:04:19 Layer III, 160 kbps, 44100 Hz, joint stereo (MS), no CRC

# ogg123 Paul\ Oakenfold\ -\ Dread\ Rock.ogg
Audio Device:   Advanced Linux Sound Architecture (ALSA) output

Playing: Paul Oakenfold - Dread Rock.ogg
Ogg Vorbis stream: 2 channel, 44100 Hz
Genre: Soundtrack
Transcoded: mp3;160
Title: Dread Rock
Artist: Paul Oakenfold
Date: 2003
Album: Matrix Reloaded
Time: 00:11.31 [04:28.75] of 04:40.06  (200.6 kbps)  Output Buffer  96.9%


3.7. ALSA и USE

Теперь, для того чтобы приложения, поддерживающие ALSA, были собраны с поддержкой оной, вам нужно добавить USE-флаг alsa в файл /etc/make.conf. Некоторые архитектуры, например, x86 и amd64, включают этот флаг по умолчанию.

3.8. Проблемы?

Если по каким-либо причинам вы не слышите звука, перво-наперво проверьте настройки alsamixer. 80% всех проблем заключаются в выключенных каналах или низкой громкости. Кроме того, проверьте звуковой апплет вашего оконного менеджера и удостоверьтесь, что громкости каналов установлены на слышимом уровне.

/proc — ваш друг. В этом случае, /proc/asound — ваш лучший друг. Мы бегло просмотрим, сколько полезной информации доступно нам здесь.

Листинг 15. Развлечение с /proc/asound

(Прежде всего, если /proc/asound/cards отображает вашу карту, то ALSA
распознала вашу звуковую карту.)
# cat /proc/asound/cards
0 [Live           ]: EMU10K1 - Sound Blaster Live!
                     Sound Blaster Live! (rev.6, serial:0x80271102) at 0xb800, irq 11

(Следующая команда оторбразит текущую версию ALSA)
# cat /proc/asound/version
Advanced Linux Sound Architecture Driver Version 1.0.8 (Thu Jan 13 09:39:32 2005 UTC).

(Подробности эмуляции OSS в ALSA)
# cat /proc/asound/oss/sndstat
Sound Driver:3.8.1a-980706 (ALSA v1.0.8 emulation code)
Kernel: Linux airwolf.zion 2.6.11ac1 #2 Wed May 4 00:35:08 IST 2005 i686
Config options: 0

Installed drivers:
Type 10: ALSA emulation

Card config:
Sound Blaster Live! (rev.6, serial:0x80271102) at 0xb800, irq 11

Audio devices:
0: EMU10K1 (DUPLEX)

Synth devices: NOT ENABLED IN CONFIG

Midi devices:
0: EMU10K1 MPU-401 (UART)

Timers:
7: system timer

Mixers:
0: SigmaTel STAC9721/23


Другой очень распространённой проблемой среди пользователей является странная ошибка «Unknown symbol in module» («Неизвестный символ в модуле»). Пример её появления показан ниже.

Листинг 16. Ошибка: неизвестный символ в модуле

# /etc/init.d/alsasound start
 * Loading ALSA modules ...
 *   Loading: snd-card-0 ...                                              [ ok ]
 *   Loading: snd-pcm-oss ...
WARNING: Error inserting snd_mixer_oss
(/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-mixer-oss.ko): Unknown
symbol in module, or unknown parameter (see dmesg) FATAL: Error inserting
snd_pcm_oss
(/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-pcm-oss.ko): Unknown
symbol in module, or unknown parameter (see dmesg)
                                                                          [ !! ]
 *   Loading: snd-mixer-oss ...
FATAL: Error inserting snd_mixer_oss
(/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-mixer-oss.ko): Unknown
symbol in module, or unknown parameter (see dmesg)
                                                                          [ !! ]
 *   Loading: snd-seq ...                                                 [ ok ]
 *   Loading: snd-emu10k1-synth ...                                       [ ok ]
 *   Loading: snd-seq-midi ...                                            [ ok ]
 * Restoring Mixer Levels ...                                             [ ok ]


И если, как советуют, просмотреть вывод dmesg, то, скорее всего, можно увидеть следующее:

Листинг 17. Вывод dmesg

(Показаны только относящиеся к делу части вывода)
# dmesg | less
ACPI: PCI Interrupt 0000:02:06.0[A] -> Link [APC3] -> GSI 18 (level, low) -> IRQ 209
snd_mixer_oss: Unknown symbol snd_unregister_oss_device
snd_mixer_oss: Unknown symbol snd_register_oss_device
snd_mixer_oss: Unknown symbol snd_mixer_oss_notify_callback
snd_mixer_oss: Unknown symbol snd_oss_info_register
snd_pcm_oss: Unknown symbol snd_unregister_oss_device
snd_pcm_oss: Unknown symbol snd_register_oss_device
snd_pcm_oss: Unknown symbol snd_mixer_oss_ioctl_card
snd_pcm_oss: Unknown symbol snd_oss_info_register
snd_mixer_oss: Unknown symbol snd_unregister_oss_device
snd_mixer_oss: Unknown symbol snd_register_oss_device
snd_mixer_oss: Unknown symbol snd_mixer_oss_notify_callback
snd_mixer_oss: Unknown symbol snd_oss_info_register


Эта проблема вызвана переключением с alsa-driver на драйверы, предоставляемые ядром, потому что когда вы удаляете alsa-driver, то файлы модулей сохраняются системой защиты конфигурации. И поэтому, когда вы переходите на встроенные в ядро драйверы, попытка modprobe выдаст вам смесь модулей из alsa-driver и встоенных в ядро, вызывая приведённые выше ошибки.

Решение очень простое. Удалите вызывающий проблемы каталог после удаления alsa-driver. Проверьте, что удаляете модули правильной, но не текущей версии ядра!

Листинг 18. Удаление модулей alsa-driver

# rm -rf /lib/modules/$(uname -r)/alsa-driver


Другой причиной подобных сообщений может являться файл в /etc/modules.d, содержащий параметр device_mode, в то время как он не требуется. Проверьте, так ли это, и выясните, какой файл является источником проблем.

Листинг 19. Подтверждение проблемы и поиск device_mode

(Проверим вывод dmesg для идентификации проблемы)
# dmesg | grep device_mode
snd: Unknown parameter `device_mode'
(И теперь найдём источник проблемы)
# grep device_mode /etc/modules.d/*


Обычно это файл с именем alsa, в котором присутствует строка options snd device_mode=0666. Удалите эту строку и перезапустите службу alsasound. Это должно решить проблему.

Пред.: Установка ALSAВ началоУровень выше: Руководство Gentoo Linux ALSAСлед.: Другие возможности ALSA
В началоРуководство Gentoo Linux ALSA → Настройка/тестирование ALSA