User:Zunguguzunguzeng/ALSA
Advanced Linux Sound Architecture (ALSA) это компонент ядра, призванный заменить оригинальную Open Sound System (OSSv3) в предоставлении драйверов звуковым картам. Помимо драйверов звуковых устройств, ALSA также включает в себя пользовательскую библиотеку для разработчиков приложений, которые хотели бы использовать возможности драйвера с API более высокого уровня чем простое взаимодействие с драйвером ядра.
Установка
ALSA уже включена в ядро Арча по умолчанию, как набор модулей, так что в установке нет необходимости.
udev автоматически проверит оборудование, загрузив соответствующий вашей звуковой карте модуль ядра. Так что звук уже должен работать, просто по умолчанию все каналы заглушены.
Пользователи должны состоять в группе audio, чтобы воспроизводить звук с помощью ALSA. Для добавления пользователя в группу audio можно воспользоваться следующей командой:
# gpasswd -a yourusername audio
Пользовательские утилиты
Пакет alsa-utils включает в себя программу alsamixer, которая позволяет настраивать звук из консоли, или терминала. Устанавливается с помощью pacman:
# pacman -S alsa-utils
Установите пакет alsa-oss если хотите, чтобы ваши OSS-приложения работали с dmix (software mixing):
# pacman -S alsa-oss
udev>=171
, модули эмуляции OSS (snd_seq_oss, snd_pcm_oss, snd_mixer_oss
) не загружаются автоматически по умолчанию.Установите пакет alsa-plugins, если вам нужны high quality resampling, upmixing/downmixing и другие дополнительные программы:
# pacman -S alsa-plugins
Включение каналов
Текущая версия ALSA устанавливается с заглушенными по умолчанию каналами. Включать каналы нужно вручную.
Для этого прекрасно подойдёт alsamixer
(сделанный в ncurses) (либо можно использовать amixer из командной строки):
$ alsamixer
Буквы "MM" под обозначением канала говорят о том, что канал заглушен, а "00" о том, что включен.
Включите каналы Master и PCM с помощью стрелок на клавиатуре, и клавиши M
. Используйте клавишу ↑
, и увеличьте громкость, чтобы gain стал 0dB (его уровень можно увидеть левом верхнем углу: Item: Master [dB gain: 0,00, 0,00]
). Больший уровень gain может стать причиной искажений и шума.
Для 5.1 или 7.1 surround надо включить остальные каналы, такие как: Front, Surround, Center, LFE (subwoofer) и Side (это названия каналов Intel HD Audio, для других карточек они могут отличаться). Здесь надо заметить, что таким образом качество обычного стерео повышено не будет (как повысить качество читай #Upmixing/Downmixing).
Выход из alsamixer осуществляется кнопкой Esc
.
Дальше проверка, как работает/не работает звук:
$ speaker-test -c 2
Измените Change -c в соответствии со своей аудиосистемой. Для системы 7.1 используйте -c 8:
$ speaker-test -c 8
Если не работает, читайте #Настройка и #Поиск проблем, чтобы разобраться.
Если всё получилось, то осталось лишь сохранить настройки микшера:
# alsactl -f /var/lib/alsa/asound.state store
Этой командой создаётся файл /var/lib/alsa/asound.state
, содержащий установки alsamixerа.
Потом добавьте демон alsa в секцию DAEMONS файла /etc/rc.conf
, чтобы микшер автоматически восстанавливал значения при загрузке:
/etc/rc.conf
DAEMONS=(... @alsa ...)
/var/lib/alsa/asound.state
. It is separate from the alsa audio library (and kernel level API).Настройка
Если вы так ничего не слышите, то проверьте ещё раз настройки микшера, и попробуйте запустить alsaconf от имени root:
# alsaconf
Все необходимые модули udev должен определить и подгрузить автоматически. Особых настроек потребоваться не должно, (если только для карт ISA).
Установка дефолтной звуковой карты
В окружении ядра
Чтобы предотвратить конфликты другого оборудования со звуковой картой, узнайте название модели: lspci(8), и названия модулей ALSA с помощью ls:
$ ls -l /sys/module/snd/holders
total 0 lrwxrwxrwx 1 root root 0 Apr 25 00:56 snd_hda_codec -> ../../snd_hda_codec lrwxrwxrwx 1 root root 0 Apr 25 00:56 snd_hda_codec_realtek -> ../../snd_hda_codec_realtek lrwxrwxrwx 1 root root 0 Apr 25 00:56 snd_hda_intel -> ../../snd_hda_intel lrwxrwxrwx 1 root root 0 Apr 25 00:56 snd_hwdep -> ../../snd_hwdep lrwxrwxrwx 1 root root 0 Apr 25 00:56 snd_pcm -> ../../snd_pcm lrwxrwxrwx 1 root root 0 Apr 25 00:56 snd_timer -> ../../snd_timer
Или лучше (source[1]):
$ cat /proc/asound/modules
Then add the names of your sound card modules to (source[2]):
/etc/modprobe.d/alsa.conf
options snd slots=snd-intel8x0
These entries ensure that the Intel 82801DB-ICH4 sound card will become card 0 and the PC speaker will become card 1.
/usr/share/alsa/alsa.conf
. For example, replace all "card 0" with "card 1" .Пользовательский способ
Этот способ не требует прав администратора, изменения делаются от имени простого пользователя, и вступают в силу сразу после перезапуска приложения.
В файле /usr/share/alsa/alsa.conf
содержится список настроек, которые alsa применяет по умолчанию. Он может быть переписан в файл ~/.asoundrc
.
~/.asoundrc
pcm.!default { type hw card 1 device 0 } ctl.!default { type hw card 1 device 0 }
Опции 'pcm' определяют какая именно карта будет использоваться для воспроизведения звука. В свою очередь опции 'ctl' определяют какую карту будут использовать программы управления, такие как alsamixer, amixer итп.
Чтобы выяснить какие цифры какое устройство обозначают, используйте aplay -l
.
$ aplay -l **** List of PLAYBACK Hardware Devices **** card 0: Intel [HDA Intel], device 0: CONEXANT Analog [CONEXANT Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: Intel [HDA Intel], device 1: Conexant Digital [Conexant Digital] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: JamLab [JamLab], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0 card 2: Audio [Altec Lansing XT1 - USB Audio], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0
Как узнать, загрузились ли модули
Допустим, что udev определил устройства правильно, вы можете это проверить:
$ lsmod|grep '^snd' | column -t snd_hda_codec_hdmi 22378 4 snd_hda_codec_realtek 294191 1 snd_hda_intel 21738 1 snd_hda_codec 73739 3 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_intel snd_hwdep 6134 1 snd_hda_codec snd_pcm 71032 3 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec snd_timer 18992 1 snd_pcm snd 55132 9 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_timer snd_page_alloc 7017 2 snd_hda_intel,snd_pcm
Если вывод команды схож с приведённым выше, значит звуковые драйвера успешно определились.
udev>=171
, OSS модули (snd_seq_oss, snd_pcm_oss, snd_mixer_oss
) не загружаются по умолчанию, это надо сделать вручную: modprobe
и/или добавьте их в секцию MODULES
, в /etc/rc.conf
, если необходимо.Вам также возможно захочется заглянуть в папку /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 или аналоги, значит звуковые модули определены и загружены правильно.
В случае, если модули определились неправильно, можете попробовать загрузить их вручную:
- Найдите модуль для своей звуковой карты здесь: ALSA Soundcard Matrix, перед названием модуля нужно поставить 'snd-' (например: 'snd-via82xx').
- Загрузите модули:
# modprobe snd-NAME-OF-MODULE
- Сверьтесь с файлами устройств в /dev/snd (см. выше) and/or try if alsamixer or amixer have reasonable output.
- Add snd-NAME-OF-MODULE and snd-pcm-oss to the list of MODULES in
/etc/rc.conf
to ensure they are loaded next time (make sure snd-NAME-OF-MODULE is before snd-pcm-oss).