HOWTO Alsa и встроенные звуковые платы VIA и Intel

Материал из Gentoo Linux Wiki

Перейти к: навигация, поиск
Вернуться в раздел руководства

Содержание

[править] Настройка встроенного звука на чипсетах от Intel или VIA.

[править] Введение

За любые комментарии, дополнения, уточнения и исправления ошибок – буду только благодарен :)
И еще – все нижеописанное касается моей материнки на VIA333 чипсете. Если у кого то чего то таки не заработает - пардон, я в этом не виноват и старался как мог при составлении данного мини-руководства  :)
Итак, у меня материнка на чипсете от VIA со встроенной звуковой. Звука нет. Для того, чтобы звук появился я обнаружил три пути – один из них не заработал как следует, но он есть и это точно.
У каждого есть свои преимущества и недостатки, о которых я, по мере сил, постараюсь расказать.

Первый путь

Установка звуковых драйверов из портежей. (сначала я поставил так)

+ самые свежие драйвера и утилиты
+ рекомендуют сами разработчики Gentoo
- после смены ядра нужно переустанавливать alsa-driver(около 5 минут т.к. драйвера небольшие)
Судя по тому, что написано в документе Gentoo Linux ALSA Guide, а именно: "The Gentoo maintainers decided to discontinue support for the alsa-driver package, concentrating their resources on the ALSA drivers available within the Linux kernel", разработчики Gentoo уже не рекомендуют этот путь установки.

Второй путь

Компиляция ядра с модульной поддержкой звуковухи (так у меня не получилось)

+ драйвера самые свежие (насколько я понял, тут используются драйвера не из ядра, а из портежа)
+ перекомпиляция ядра на звук не влияет
- не всегда эти модули загружаются корректно, по крайней мере у меня половина загружалась, а половина нет, и не знаю почему (то ли с ядро не совместимо то ли что еще), была куча ворнингов и фаталов, и в итоге звук ни фига все равно не работал.

Стоит отметить, что проблема с загрузкой может возникать из-за одновременного присутствия "ядреных" модулей и модулей из пакета alsa-driver. Тогда

~ # rm -rf /lib/modules/<kernel_version>/alsa-driver/; cd /usr/src/linux; make modules_install

Последней командой из этих трех мы на всякий случай еще раз инсталлируем модули ядра.

Третий путь

Компиляция ядра со статически встроенным звуком (так я поставил себе)

+ не нужно устанавливать alsa-driver вообще
+ перекомпиляция ядра на звук не влияет
- драйвера не самые свежие

Начнем.

В любом случае нужно убедится, что звуковуха видна вообще. Я так понял очень много людей обожглись на этой несуразности :)
~ # lspci | grep -i audio
У меня результат был такой:
00:11.5 Multimedia audio controller: 
VIA Technologies, Inc. VT8233/A/8235/8237 AC97 Audio 
Controller (rev 50)
Т.е. звуковая есть. Можно приступать к установке драйверов.
Еще неплохо бы перед установкой по пути 2 и 3, точно быть уверенным в том, какой драйвер соответствует именно вашей звуковухе. Для этого ищем в /usr/src/linux/Documentation/sound/alsa/ALSA-Configuration.txt свою карточку и запоминаем какому модулю она соответствует.

Если lspci(lsusb?) не вывел ничего про устройства звука, то необходимо проверить факт включения данного устройства в биосе

[править] Первый путь.

[править] 1) настраиваем ядро.

Не забудьте убедиться,что ссылка /usr/src/linux указывает на правильное ядро! (на ядро 2.6 естественно!)


Выполняем.
~ #  cd /usr/src/linux && make menuconfig
Считаем, что используется ядро 2.6.
Device Drivers ---> 
 Sound --->
  <M>Sound card support
Все остальные опции выключаются и даже становятся недоступны. В этом же разделе заходим в подпункты:
Open Sound System ---> 
 < > Open Sound System (DEPRECATED)
Выходим на уровень вверх и заходим в раздел ALSA
Advanced Linux Sound Architecture ---> 
 < > Advanced Linux Sound Architecture
при снятии флажка Advanced Linux Sound Architecture все остальные опции также автоматически выключатся.
Сохраняем файл конфигурации (я подразумеваю, что соответствующая опция выбрана в ядре ранее, описывать ее здесь не буду, т.к. это выходит за рамки данной статьи)
Делаем
~ # make && make modules_install 
Короче стандартные действия по установке нового ядра, кто там как делает, кто руками, кто genkernel использует, главное чтобы было сделано новое ядро с такими параметрами и вы загрузились с новым ядром.

[править] 2) установка нужных портежей.

Здесь все до боли просто - в /etc/make.conf дописываем
ALSA_CARDS="via82xx" (ну или что там у вас за звук)
Ну это, как я понял, опционально, т.е. чтобы не все звуковухи были, а только та, что у вас есть.
Потом
~ # emerge alsa-driver alsa-utils
Затем запускаем alsaconf , здесь выберите ту звуковуху, что у вас (в моем случае виа), она по идее будет автоматом настроена (т.е. загружены необходимые модули и выставлен оптимальный уровень громкости в микшере)
Настройки микшера можно изменить введя alsamixer (вроде бы, пишу по памяти)
Потом добавляете сценарий загрузку драйверов
~ # rc-update add alsasound boot
Звук должен работать. Проверьте запустив мплером какую нибудь песенку, да! И добавьте громкости в мплеере, я сам на этом лоханулся :)
проверить все ли драйвера загружены можно просто
~ #  /etc/init.d/alsasound restart
Если сценарий оcтановился и запустился без ошибок – то все ок.
Список загруженных модулей естественно можно посмотреть по
~ # lsmod
По идее все.


[править] Второй путь.

[править] 1) настраиваем ядро.

Device Drivers ---> 
 Sound --->
 <M>Sound card support
Выходим на уровень вверх
Open Sound System ---> 
 < > Open Sound System (DEPRECATED)
Выходим на уровень вверх и заходим в раздел ALSA
Advanced Linux Sound Architecture ---> 
здесь делаем так.
<M> Advanced Linux Sound Architecture
<M> Sequencer support
<M> OSS Mixer API 
<M> OSS PCM (digital audio) API
Generic devices --->
смотрю, чтобы здесь ничего не было выбрано (если ничего не нужно конечно)
ISA devices --->
аналогично, т.к. у меня нету такого :)
PCI devices --->
А здесь отмечаем ТОЛЬКО ту звуковуху, что у Вас, (у меня)
<M> VIA 82C686A/B, 8233/8235 AC97 Controller
Только внимание! По умолчанию там вроде есть
<M> Intel/SiS/nVidia/AMD/ALi AC97 Controller
Это нужно снять, т.к. иначе будет конфликтовать.
здесь снимаем ВСЕ флажки, которые установлены.
вобщем в
PCI devices --->
должно быть только
<M> VIA 82C686A/B, 8233/8235 AC97 Controller
и ничего больше. (если у вас конечно звук от виа а нет от интела)
Потом компилим ядро, перегружаемся.

[править] 2) установка нужных портежей.

в /etc/make.conf дописываем
ALSA_CARDS="via82xx" 
Потом
~ # emerge alsa-utils
Затем запускаем alsaconf , для автоматической настройки звуковухи и т.п., но вот тут у меня и выходит облом. Хоть и пишется – ура, наслаждайтесь, но пролистав немного вверх вывод отладки – я вижу что далеко не все модули загрузились… вобщем что дальше и как делать в этом варианте – я не знаю, за совет и разъяснение – буду только очень благодарен (из принципа хочется разобраться)… по идее тоже самое, т.е.
~ # rc-update add alsasound boot
но вот с дровами какие то проблемы. :( не хотят они загружаться.

О платах VIA сказать ничего не могу но на платах Intel этот путь прокатывает и всё прекрасно работает. По крайней мере у меня на 82845 G/GL всё путём.

Добавлено TolicHем
Все намного проще. Никакого alsa-utils нам не надо. Модуль, скомпиленый в ядро, будет называться snd-xxxx, где xxxx - чип вашей звуковушки (у меня этот модуль называется snd-als300). Значит, чтобы получить доступ к звуковухе нужно всего лишь добавить одну строчку в файл /etc/modules.autoload.d/kernel-2.6 и перезагрузиться.

~ # echo "snd-als300" >> /etc/modules.autoload.d/kernel-2.6 && reboot

Внимание: в микшере по умолчанию все ползунки выкручены на ноль, поэтому не забудьте включить звук вашим любимым микшером, к примеру KMix (входит в состав kdemultimedia), или alsamixer (чтобы получить последний, придется все же поставить alsautils). Также при каждой перезагрузке громкость будет сбрасываться, так что советую поставить микшер в автозапуск (в случае KMix достаточно его просто не вырубать).

Как поставить поддержку OSS я честно говоря не помню. А вам она вообще нужна? :)

[править] Третий путь

Итак – здесь необходимые драйвера статически встраиваются в ядро.

[править] 1) настраиваем ядро.

Здесь все почти как во втором пути, но только вместо <M> нужно ставить <*>
Device Drivers ---> 
 Sound --->
  <*>Sound card support
Выходим на уровень вверх
Open Sound System ---> 
 < > Open Sound System (DEPRECATED)
(короче это во вех трех путях одинаково нужно снимать. Написано же – нежелательно :))
Выходим на уровень вверх и заходим в раздел ALSA
Advanced Linux Sound Architecture ---> 
 <*> Advanced Linux Sound Architecture
 <*> Sequencer support
 <*> OSS Mixer API 
 <*> OSS PCM (digital audio) API
Generic devices --->
ничего не нужно
ISA devices --->
аналогично
PCI devices --->
А здесь отмечаем ТОЛЬКО ту звуков уху, что у Вас, (у меня)
<*> VIA 82C686A/B, 8233/8235 AC97 Controller
Внимание! По умолчанию там вроде есть
<M> Intel/SiS/nVidia/AMD/ALi AC97 Controller
Это нужно снять, т.к. иначе будет конфликтовать.
здесь снимаем ВСЕ флажки, которые установлены
вобщем в PCI devices --->
должно быть только
<*> VIA 82C686A/B, 8233/8235 AC97 Controller
и ничего больше. (опять таки – это для виа)
Потом компилим ядро, перегружаемся.
Потом заходим в систему и выполняем
~ # dmesg | grep -i via
Должно быть вот что
agpgart: Detected VIA KT400/KT400A/KT600 chipset VP_IDE: 
VIA vt8235 (rev 00) IDE UDMA133 controller on pci0000:00:11.1
 #0: VIA 8235 with ALC650F at 0xe800, irq 10

И еще вот это

via82xx: Assuming DXS channels with 48k fixed sample rate.
Если все так, то теперь у нас есть статично встроенные в ядро драйвера и можно переходить к следующему шагу.

[править] 2) установка нужных портежей.

Делаем
~ # emerge alsa-utils
Запускаем alsaconf , и настраиваем звуковуху. При попытке скрипта загрузить модули – естественно будут ошибки – но это фигня :) главное, что alsamixer выставит громкость для звуковухи.

alsaconf запускать не имеет смысла ,так как драйверы статично встроены в ядро и alsaconf, естественно, не может их выгрузить и настроить, а запускать нужно только alsamixer. Добавлять alsasound в rc, в случае статично встроенных в ядро тоже не нужно. Все это проверено только на Intel HD Audio, но имхо правильно и для VIA./// С уважением, Alex-87.

Делаем
~ # rc-update add alsasound boot
Но тут один нюанс – постоянно при загрузке будут сообщения о невозможности загрузки драйверов, - зачем нам их грузить, если они есть в ядре?
Правим /etc/init.d/alsasound оставляя неизменными только те процедуры, что отвечают за сохранение и восстановление уровней микшера, а загрузку-выгрузку модулей просто убираем. (не удаляем их полность, просто меняем!)
Можно конечно новый сценарий написать – но на фига, если есть готовый и его можно просто подправить? :)
Итак, в теле процедур загрузки и выгрузки модулей (не помню как они по-английски пишутся, они вобщем первые две сверху), а так же в третьей сверху процедуре (кажется terminate) все стираем, а оставляем только return 0; и все.
Проверим измененный сценарий
~ #  /etc/init.d/alsasound restart
Должно быть все ок.
Кажется все :) все изменения, добавки, поправки и т.п. приветствуются.
Надеюсь это все кому-то поможет и вообще кому-нибудь нужно :)
Вы конечно можете это копировать, постить куда хотите, печатать и т.п., но очень бы хотелось (ели конечно не трудно) указывать, что автор сего почти шестистраничного труда есть tradakad :)


Удачи всем! Gentoo рулит!

[править] P.S. Запуск наушников

Еще не все. Звуковуха Intel HD Audio (snd-hda-intel) может вас порадовать неработающими наушниками (про VIA не скажу, не пробовал). Кручение миксера не спасет, может не ломать над этим голову. Выход подсказал Максим Дашков вот с таким адресом: http://www.dashkov.kiev.ua/
(кстати, единственное место, которое я нашел, где описан выход).

Че надо:
  • Скомпиленное как оговаривалось выше ядро
  • Строки в /etc/make.conf
ALSA_CARDS="hda-intel"
SUPPORT_ALSA=1
  • Установленные пакеты "sox", "esound", "alsa-tools", "alsa-utils", "alsa-lib" ("alsa-utils" мы уже поставили)
~ # emerge sox esound alsa-driver alsa-tools alsa-utils alsa-lib
  • И строка в /etc/modules.d/alsa
options snd-hda-intel model=z71v position_fix=1

Это все.

~ # reboot

Кстати, способ можно рассматривать как путь 3.5, потому что после того, как я проделал то, что описано в этой статье, у меня работало не все, что надо; но, после проведения описаных мной процедур, звук наладился, и гормоны радости заполнили мое тело.

Name_No.

P.S.

Кроме регулировки звука в плеере надо не забыть включить пользователя в группу audio. :)

И самое главное - если все настроено, а звука нет - нужно emerge gst-plugins-alsa.

[править] Важное замечание для владельцев ноутбуков Asus F3Sr и некоторых других моделей!

Нужен звук? Необходимо прописать в /etc/modprobe.d/alsa-base

options snd_hda_intel enabled=1 index=0 model=lenovo

после чего

update-modules && reboot

всё!

Личные инструменты