# Advanced Linux Sound Architecture (Русский)

Этот документ описывает процесс настройки ALSA для ядер версии 2.6. Посмотрите также, как разрешить одновременно проигрывать звук нескольким программам.

## Установка

### Модули ядра

ALSA включено в ядро 2.6 и есть во всех пакетах kernel26*. Если вы компилируете ядро самостоятельно, не забудьте включить ALSA модуль, который вам нужен. Все необходимые модули будут найдены и загружены автоматически с помощью udev. Никакой особой настройки не требуется, если вы не используете ISA карты. НИКОГДА не используйте `alsaconf`, если у вас PCI или ISAPNP звуковая карта: строчки, добавленные в modprobe.conf могут сломать автоопределение udev.

### Пользовательские утилиты

- Необходимо для родных ALSA программ и управления:

     # pacman -S alsa-lib alsa-utils

- Рекомендуется, если вы хотите использовать приложения с поддержкой OSS в комбинации с dmix:

     # pacman -S alsa-oss

Обратите внимание: Начиная с udev>=171, OSS-модули, по-умолчанию, автоматически не загружаются. При необходимости загрузите вручную: sudo modprobe snd-mixer-oss и добавьте в /etc/rc.conf, в секцию модулей: MODULES=(... snd-mixer-oss). Например, TVtime использует snd-mixer-oss для программного управления звуком

У всех alsa программ в качестве зависимости есть alsa-lib.

## Настройка

### Проверка загруженных модулей

Вы можете рассчитывать, что udev автоматически найдёт вашу звуковую карту, включая модули совместимости OSS. Вы можете проверить это с помощью следующей команды:

    $ lsmod|grep 'snd'
    snd_usb_audio          69696  0
    snd_usb_lib            13504  1 snd_usb_audio
    snd_rawmidi            20064  1 snd_usb_lib
    snd_hwdep               7044  1 snd_usb_audio
    snd_seq_oss            29412  0
    snd_seq_midi_event      6080  1 snd_seq_oss
    snd_seq                46220  4 snd_seq_oss,snd_seq_midi_event
    snd_seq_device          6796  3 snd_rawmidi,snd_seq_oss,snd_seq
    snd_pcm_oss            45216  0
    snd_mixer_oss          15232  1 snd_pcm_oss
    snd_intel8x0           27932  0
    snd_ac97_codec         87648  1 snd_intel8x0
    snd_ac97_bus            1792  1 snd_ac97_codec
    snd_pcm                76296  4 snd_usb_audio,snd_pcm_oss,snd_intel8x0,snd_ac97_codec
    snd_timer              19780  2 snd_seq,snd_pcm
    snd                    43776  12 snd_usb_audio,snd_rawmidi,snd_hwdep,snd_seq_oss,snd_seq,snd_seq_device,snd_pcm_oss,snd_mixer_oss,snd_intel8x0,snd_ac97_codec,snd_pcm,snd_timer
    snd_page_alloc          7944  2 snd_intel8x0,snd_pcm

Если вывод имеет похожий вид, то ваши звуковые модули успешно обнаружились (обратите внимание, что в этом случае, snd_intel8x0 и snd_usb_audio являются драйверами для устройств). Вы также можете проверить каталог /dev/snd на правильные права:

    $ ls -l /dev/snd/
    total 0
    crw-rw----  1 root audio 116,  0 Apr  8 14:17 controlC0
    crw-rw----  1 root audio 116, 32 Apr  8 14:17 controlC1
    crw-rw----  1 root audio 116, 24 Apr  8 14:17 pcmC0D0c
    crw-rw----  1 root audio 116, 16 Apr  8 14:17 pcmC0D0p
    crw-rw----  1 root audio 116, 25 Apr  8 14:17 pcmC0D1c
    crw-rw----  1 root audio 116, 56 Apr  8 14:17 pcmC1D0c
    crw-rw----  1 root audio 116, 48 Apr  8 14:17 pcmC1D0p
    crw-rw----  1 root audio 116,  1 Apr  8 14:17 seq
    crw-rw----  1 root audio 116, 33 Apr  8 14:17 timer

Если у вас есть хотя бы controlC0 и pcmC0D0p или что-то похожее, то ваши звуковые модули обнаружились и загрузились правильно.

Если это не так, то ваши модули не были обнаружены. Если вы хотите получить помощь на форумах или IRC, пожалуйста, введите вывод команд, использовавшихся выше. Для решения этой ситуации вы можете попробовать загрузить модули вручную:

- Узнайте имя модуля для вашей звуковой карты: http://www.alsa-project.org/alsa-doc/ Модуль будет иметь префикс 'snd-' (например, 'snd-via82xx').
- Загрузите модули:

     # modprobe snd-NAME-OF-MODULE
     # modprobe snd-pcm-oss

- Проверьте файлы в /dev/snd (смотрите выше) и/или что alsamixer или amixer достаточный уровень звука.
- Добавьте snd-NAME-OF-MODULE и snd-pcm-oss в список MODULES в /etc/rc.conf, чтобы они загрузились в следующий раз (удостоверьтесь, что snd-NAME-OF-MODULE находится перед snd-pcm-oss).

### Выставление звука на каналах и проверка звуковой карты

В этом разделе мы подразумеваем, что вы выполняете команды от суперпользователя. Если вы хотите выполнять эти шаги от пользователя, то перейдите сначала к следующей секции, Настройка прав доступа.

- Включение звука

Рекомендуется использовать 'alsamixer' для настройки вашего микшера и включения звука на каналах.
ОБРАТИТЕ ВНИМАНИЕ: когда вы используете alsamixer, включите звук нажатием M, а не только повысьте уровень звука. ОБРАТИТЕ ВНИМАНИЕ: при использовании amixer для выставления уровня громкости следует использовать знак процента %. amixer понимает знак процента (%), а не числа.

     # amixer set Master 90% unmute
     # amixer set PCM 85% unmute

- Попробуйте проиграть wav-файл:

     # aplay mywav.wav

ОБРАТИТЕ ВНИМАНИЕ: на некоторых карточках (как минимум, на Soundblaster Audigy LS) требуется отключить или заглушить цифровой выход, чтобы слушать аналоговый звук.

- Как разрешить нескольким программам выводить звук одновременно

### Настройка прав

Для того чтобы можно было пользоваться звуковой картой пользователем, проделайте следующие шаги:

- Добавьте пользователя в группу audio:

    # gpasswd -a USERNAME audio

- Выйдите пользователем из системы и войдите заново.

### Восстановление звуковых настроек при загрузке

- Запустите 'alsactl' один раз, чтобы создать '/etc/asound.state':

    alsactl store

- Отредактируйте '/etc/rc.conf' и добавьте 'alsa' в список демонов, загружающихся при старте системы. Это позволит сохранять настройки микшера при каждом выключении системы и восстанавливать их при загрузке.

### Настройка вывода через SPDIF

(от gralves с форумов Gentoo)

- В GNOME Volume Control, во вкладке Options, измените IEC958 на PCM. Эта опция может быть включена в настройках.
- Если у вас не установлен GNOME Volume Control:
  - Отредактируйте файл /etc/asound.state. В нём хранятся alsasound хранит настройки вашего микшера.
  - Найдите строчку вида: 'IEC958 Playback Switch'. Рядом с ней вы найдёте строчку типа `value:false`. Измените её на `value:true`.
  - Теперь найдите строчку 'IEC958 Playback AC97-SPSA' и измените её значение на 0.
  - Перезапустите alsa.

Есть другой способ включить вывод через SPDIF автоматически при загрузке системы (проверено на SoundBlaster Audigy):

- добавьте следующие строчки в /etc/rc.local:

     # Use COAX-digital output
     amixer set 'IEC958 Optical' 100 unmute
     amixer set 'Audigy Analog/Digital Output Jack' on

Вы можете увидеть имя цифрового выхода вашей карты с помощью:

     amixer scontrols

### KDE

- Запустите KDE:

    $ startx

- Установите предпочитаемый уровень звука (у каждого пользователя сои настройки):

    $ alsamixer

- KDE 3.5. Зайдите в K Menu -> Multimedia -> KMix
  - Выберите Settings > Configure KMix...
  - Выключите опцию "Restore volumes on login"
  - Нажмите OK. Теперь ваш уровень звука будет одинаковым как в командной строке, так и в KDE.

## Проблемы

### Если у вас всё ещё нет звука

Даже если ваши драйвера установлены корректно, выставлен правильный уровень звука, ничего не выключено, вы можете ничего не слышать! Добавление следующей строчки к `/etc/modprobe.d/modprobe.conf` решает эту проблемы (по крайней мере для модуля `via82xx`):

    options snd-NAME-OF-MODULE ac97_quirk=0

### Плохое качество звука

Если качество звука у вас плохое, можете попробовать выставить такой уровень PCM (в alsamixer), чтобы gain был равен 0.

Categories:

- Audio/Video (Русский)
- Русский