воскресенье, 31 января 2010 г.

Настройка звука в Ubuntu

Имеется: Ubuntu 9.10 на ноутбуке ASUS A7U со звуковой картой:
ATI Technologies Inc Radeon X1200 Series Audio Controller.
После установки системы звука нет. После долгих поисков наткнулся на статью
http://ubuntueasy.com/oborudovanie/nastrojka-zvuka-v-ubuntu-904-na-noutbuke-toshiba-satellite-l30-114
Статья помогла частично: звук появился, но встроенный микрофон так и не заработал. Причём, самое неприятное, после перезагрузки звук снова пропал. Да ещё так пропал, что в Gnom'е пропали все звуковые карты вообще. Тогда я повторно провёл идентификацию аудиокарты, как описано в первой статье, а затем воспользовался советами из второй статьи (занёс в blacklist "неправильное" оборудование)...
Вот первая статья:

ATI Technologies Inc IXP SB4x0 High Definition Audio Controller
(HDA ATI SB (ALC861))...
В наличии имею Ubuntu 9.04 на ноутбуке Toshiba Satellite L30-114 со звуковой картой:
HDA ATI SB (ALC861)
ATI Technologies Inc IXP SB4x0 High Definition Audio Controller
Кто является обладателем ноутбука с такой звуковой картой знают, что есть проблема с драйверами.
Предистория
Начал я свое знакомство я с Ubuntu 8.04, там звук не заработал после установки, но 1-2 часа полазив по форумах я нашел решение на http://forum.ubuntu.ru/ где было достаточно в /etc/modprobe.d/alsa-base.conf дописать строку
options snd-hda-intel model=asus-laptop
или
options snd-hda-intel model=asus
причем значение параметра может меняться в зависимости от вида ALC..... , но для данного ноутбука полноценно работающими являются только эти 2.
У меня наступило счастье все работает — я был доволен …..
Но время идет и я решил перейти на Ubuntu 8.10, но там этот метод не помог. Вернее помог, звук появился, но он был прерывистый, тормозил и т.д. Что я только не пробовал (и сносил pulseaudio), но толком ничего не помогало. Хотя потом понял, что пульс не причем (специально ставил Debian 5.0 где пульса нет — там такая же проблема). Короче потратив на поиски кучу времени я так и не смог заставить нормально работать звук. Пришлось откатиться на Ubuntu 8.04.
Начал я день за днем ждать выхода Ubuntu 9.04, но какое было мое разочарование, что там такая же проблема как в Ubuntu 8.10. Короче с пол месяца у меня стоял Ubuntu 9.04 (откат на 8.04 решил не делать), но без нормального звука — постоянные перезагрузки с sudo alsa force-reload и ловля нормального звука — нет, снова перезагрузка.
И потом я подумал про мудрецов которые говорили: «Зашел в тупик — вернись на начало и начни все заново».
Настройка
Вот я и начал заново. Начал искать информацию как собрать alsa c нуля. Поиски мои закончились на сайте http://wiki.ubuntu.com/RussianDocumentation/AlsaHda-intel
В принципе практически сделал все как там описано, но есть нюансы с которыми пришлось столкнуться. Решил описать, что бы другие не мучились как я. :)
И начал все с того, что снес абсолютно все, что касалось звука (alsa, pulseaudio). В итоге после перезагрузки у меня не определилась звуковая.
Дальше я начал выполнять установку, как описано в ссылке, только вместо 1.0.16 сборки взял уже 1.0.20 (я взял 1.0.22 - прим. автора)
1.Для начала следует установить необходимые пакеты для сборки ПО из исходных текстов:
sudo apt-get install linux-headers-`uname -r` build-essential gcc gawk libgettext-ruby-util libgettext-ruby1.8 libncurses5-dev

2.Нужно скачать исходные тексты ALSA с официального сайта, желательно самые последние:
wget ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.20.tar.bz2
wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.20.tar.bz2
wget ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.20.tar.bz2

3.Распаковать каждый архив и перейти в директорию ./alsa-driver-1.0.20:
tar jxvf alsa-driver-1.0.20.tar.bz2
tar jxvf alsa-lib-1.0.20.tar.bz2
tar jxvf alsa-utils-1.0.20.tar.bz2
cd ./alsa-driver-1.0.20

4.Собираем ALSA с поддержкой звуковой карты HDA-Intel:
./configure -with-cards=hda-intel
make
sudo make install

5.Собираем alsa-lib:
cd ../alsa-lib-1.0.20
./configure
make
sudo make install

6.Собираем alsa-utils:
cd ../alsa-utils-1.0.20
./configure
make

а вот здесь у меня выдало ошибку (/bin/bash: xmlto: command not found). Для того что бы все было нормально нужно в консоли выполнить
sudo apt-get install xmlto
После этого сново выполнить
make
Потом
sudo make install

7.Теперь пришло время настроить alsa.
sudo alsaconf

(да причем не asoundconf, а именно alsaconf )
Выбираем нужную звуковую карту, в нашем случае это hda-intel, далее просто нажимаем OK:
В процессе нахождения звуковой карты он создаст файл etc/modprobe.d/50-sound.conf а файл alsa-base.conf я создал сам путем копированием файла etc/modprobe.d/50-sound.conf (так как я снес его вначале, когда удалял все что связано со звуком :) )

8.Добавляем в /etc/modrpobe.d/alsa-base.conf и /etc/modrpobe.d/50-sound.conf следующую строчку (на самом деле на счет файла 50-sound.conf — может он и не нужен, но я уже не экспериментировал):
options snd-hda-intel model=asus-laptop

9.Перезапускаем alsa и наслаждаемся звуком:
sudo /etc/init.d/alsasound reload
Но здесь нужно еще перезагрузить машину, и настроить регуляторы в alsamixer. И тогда все работает как нужно, даже исчез треск с колонок когда звук ставишь на 0 а проигрыватель играет (раньше трещало как будту короткое замыкание)

P.S. Если будет время попробую pulseaudio поставить назад.
Также извините за ошибки и т.д (писал ночью)

Вот следующая статья:
http://lamskoy.livejournal.com/tag/sound

Я перепробовал несколько дистрибутивов линукса на своем ноуте - ни на одном из них звук сам не заработал.
Аидоустройства ядро и alsa операционной системы видели, но звук не выдавали хоть ты тресни.

Вот что выдала команда lspci | grep -i audio:
00:14.2 Audio device: ATI Technologies Inc SBx00 Azalia (Intel HDA)
01:05.2 Audio device: ATI Technologies Inc Radeon X1200 Series Audio Controller
Перепробовал кучу решений (в основном с настройками / пересборкой alsa), ничего не помогало.
Оказалось проблема в том, что alsa не может правильно установить режим выхода звука - по умолчанию он идет на HDMI выход, а нужно пускать его на аналоговый.
Помогло следующее решение (запускать от root-а):
wget http://www.kr.xemacs.org/pub/linux/kernel/people/tiwai/misc/hda-verb/hda-verb-0.3.tar.gz (прим. автора: ссылка оказалась нерабочая... Я то же самое нашёл здесь: ftp://ftp.suse.com/pub/people/tiwai/misc/ )...

tar -xf hda-verb-0.3.tar.gz
cd hda-verb-0.3
make -s
cp hda-verb /usr/local/sbin/

cat > /usr/local/sbin/sound.sh << EOF #!/bin/bash /usr/local/sbin/hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 3
/usr/local/sbin/hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIRECTION 1
/usr/local/sbin/hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 1

EOF

chmod a+x /usr/local/sbin/sound.sh
echo blacklist snd-hda-codec-atihdmi >> /etc/modprobe.d/blacklist.conf
echo blacklist snd-hda-codec-si3054 >> /etc/modprobe.d/blacklist.conf
echo /usr/local/sbin/sound.sh >> /etc/conf.d/local.start

Последняя строка специфична для Gentoo, в Debian-based дистрибутивах нужно писать в /etc/rc.local
Чтобы устройства определились правильно и заработал микрофон, иногда приходится добавлять две строки в blacklist.conf и перезапустить alsa. Пример тому Ubuntu 9.10.
Запускаем /usr/local/sbin/sound.sh, если все проходит успешно, видим чтото в духе:

nid = 0x1, verb = 0x716, param = 0x3 value = 0x0
nid = 0x1, verb = 0x717, param = 0x1 value = 0x0
nid = 0x1, verb = 0x715, param = 0x1 value = 0x0

Радуемся, проверяем наличие звука :)
Если ядро собранно без включенной опции конфига CONFIG_SND_HDA_HWDEP=y (например во всех версиях generic-ядра Ubuntu 9.04 эта опция выключена по дефолту), видим ошибку:
Hardware device was not found: /dev/snd/hwC0D0
В этом случае необходимо пересобрать ядро с CONFIG_SND_HDA_HWDEP=y
Тем кто привык пользоватся make menuconfig:
Зайти в Device Drivers -> Sound Support -> Advanced Linux Sound Architecture -> Pci Sound Devices -> Intel HD Audio
Выбрать Build hwdep interface for HD-audio driver
Остается только пересобрать ядро и перезапустить систему.
Сборку ядра смотрите в хендбуке для своего дистрибутива линукса.

Однако, микрофон по-прежнему не работает...
Ищу информацию дальше...

2 комментария:

  1. Ноутбук ASUS A7U, Те же проблемы со звуком. В Линуксе я новичок, и начал искать дрова на звук, но! Вчера вышла Ubuntu 10, обновил - все заработало на ура! Но получил массу знаний, и здесь и на других ресурсах. Спасибо!

    ОтветитьУдалить
  2. Приятно что моя статья пригодилась :)
    Ставьте Arch - не пожалеете. У меня на ноуте хорошо прижился. И со звуком никаких проблем не наблюдается.

    ОтветитьУдалить