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

Звук на ASUS A7U

Ещё одна попытка решить проблему со звуком на ASUS A7U. Решение обнаружил здесь: http://www.linux.org.ru/view-message.jsp?msgid=3706331
Звук на ASUS A7U, A7K с Intel HDA (SBx00 Azalia, Realtek ALC660-VD)

Хочу поделиться решением неприятной проблемы со звуком на некоторых моделях ноутбуков ASUS. Подвержены как минимум две модели: A7U и A7K. Проблема довольно старая (я бы даже сказал, застарелая), и до недавнего времени красивого решения не имевшая (кроме как использовать старые версии ядра и alsa-driver). Была замечена даже на ЛОРе.

Звуковая карта определяется lspci так:
# lspci | grep "Intel HDA"
00:14.2 Audio device: ATI Technologies Inc SBx00 Azalia (Intel HDA)
Версия кодека:
# cat /proc/asound/card0/codec#0 | grep Codec
Codec: Realtek ALC660-VD
Симптомы: звук работает только со старыми версиями alsa-driver <= 1.0.15. Все последующие версии либо вообще не выдают звука, либо выдают очень тихий, шипящий и щёлкающий звук (слышно если выкрутить все регуляторы на максимум и хорошо прислушаться). Манипуляции с параметрами модуля snd-hda-intel (model, position_fix, enable_msi, probe_mask) не помогают. Причина: эти модели используют один и тот же выход для вывода и аналогового, и цифрового сигнала (S/PDIF). По идее, драйвер должен сам определять, какое оборудование подключено к устройству, и в зависимости от этого выдавать либо аналоговый, либо цифровой сигнал. Но по какой-то причине это перестало работать начиная с alsa-driver 1.0.16. Решение: заставить HDA-кодек выдавать аналоговый сигнал. Для этого нужно: прописать в modprobe.conf options snd-hda-intel model=auto position_fix=1 скачать и собрать утилиту hda-verb; добавить в rc.local (или что у вас там) следующие строки: /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 наслаждаться звучанием. Это элегантное решение было найдено пользователем dfm7a с багтрекера ALSA (баг #0004380), за что ему огромный респект и уважуха. Работает для моего ASUS A7U, возможно сработает также для некоторых похожих моделей. Наконец-то я смог без потерь обновить ядро, до этого приходилось сидеть на древнем 2.6.23 — с более новыми ядрами alsa-driver 1.0.15 не собирался. Спасибо за внимание (-; theSoul (*) (15.05.2009 11:59:52) Asus A7U звук external amplifier нужно отключить галочкой на младших ASUS может и на A7U также.. Silvy (*) (23.10.2009 13:59:43) Решение проблем со звуком на ASUS A7U и новым ядром ubuntu 9.04 >P.S. На моем слабосильном A7U стандартное ядро собиралось около 4 часов (((

Да лана. На атоме ядро 30-40 минут собирается с -j2.
Dimez (*) (22.10.2009 23:11:53)

Решение проблем со звуком на ASUS A7U и новым ядром ubuntu 9.04

В дополнение к этой http://www.linux.org.ru/view-message.jsp?msgid=3706331 теме.

Все было хорошо и замечательно, пока не обновился до последней версии ядра.

В /dev/snd по умолчанию нет девайса hwC0D0. При раскапывании корней данной проблемы выяснилось, чтоб сей девайс появился необходимо пересобрать ядро с включенной опцией HWDEP.

P.S. На моем слабосильном A7U стандартное ядро собиралось около 4 часов (((
Markusha (*) (22.10.2009 18:56:28)

Re: [Solution] Звук на ASUS A7U, A7K с Intel HDA (SBx00 Azalia, Realtek ALC660-VD)

ох. надо б на моей аудиджи испытать, а то там тоже самое, звук вроде есть, но похоже только на цифровой выход.
iSage (*) (15.05.2009 18:04:12)

Re: [Solution] Звук на ASUS A7U, A7K с Intel HDA (SBx00 Azalia, Realtek ALC660-VD)

Этот способ подойдёт только для встроенных карточек на базе Intel HDA. Прога hda-verb предназначена для работы c HDA-кодеком напрямую. А для Аудиджи, если мне не изменяет амнезия, предназначен драйвер emu10k1.
theSoul (*) (15.05.2009 18:20:17)

Re: [Solution] Звук на ASUS A7U, A7K с Intel HDA (SBx00 Azalia, Realtek ALC660-VD)

>ох. надо б на моей аудиджи испытать, а то там тоже самое, звук вроде есть, но похоже только на цифровой выход.

AudigySE? Тогда запускай альтернативную ОСь и переключи режим digital/analog, должно после этого все заработать в лялеге.
linux4ever (*) (15.05.2009 23:12:41)

Re: [Solution] Звук на ASUS A7U, A7K с Intel HDA (SBx00 Azalia, Realtek ALC660-VD)

нет у меня альтернативной оси
iSage (*) (16.05.2009 13:02:16)

Решение проблем со звуком на ASUS A7U и новым ядром ubuntu 9.04

>>ядро собиралось около 4 часов (((

O_o на трипневом селероне не больше часа собиралось
madcore (*) (22.10.2009 22:28:38)

Решение проблем со звуком на ASUS A7U и новым ядром ubuntu 9.04

Хм... странно. Именно что 4 часа. В итоге получилось весом в 280Мб.

Исходники брал с официального репа, конфиг из /boot , поправил только один пункт. Что я не так сделал?
Markusha (*) (22.10.2009 23:19:58)

Решение проблем со звуком на ASUS A7U и новым ядром ubuntu 9.04

cat /etc/modprobe.d/modprobe.conf в студию!
nanofon (*) (23.10.2009 21:35:55)

Решение проблем со звуком на ASUS A7U и новым ядром ubuntu 9.04

=) Поздно, я уже снес 9.04, с ATI x1200 проблемы были. Поставил interpid из сохранившегося дистрибутива.
Markusha (*) (23.10.2009 21:50:08)

Asus A7U звук

Легендарный солюшн: http://www.linux.org.ru/view-message.jsp?msgid=3706331#comment-3707588

Сделал все как написано, звука нет. Если в алсамиксере включаю на максимум фронт, то колонки, подключенные в разъем наушников на полной громкости, играют тихо и хреново. Если перезапустить alsa, звука уже нет

Куда копать?

$ uname -a Linux megafon 2.6.31-ARCH #1 SMP PREEMPT Tue Oct 13 13:36:23 CEST 2009 i686 AMD Athlon(tm) 64 X2 Dual-Core Processor TK-53 AuthenticAMD GNU/Linux

$ lspci |grep HDA 00:14.2 Audio device: ATI Technologies Inc SBx00 Azalia (Intel HDA)
nanofon (*) (23.10.2009 0:50:17)

Re: [Solution] Звук на ASUS A7U, A7K с Intel HDA (SBx00 Azalia, Realtek ALC660-VD)

Наверное, это бы надо в FAQ
ist76 (*) (15.05.2009 12:36:13)

Re: [Solution] Звук на ASUS A7U, A7K с Intel HDA (SBx00 Azalia, Realtek ALC660-VD)

Для фака оно может слишком специфично, а вот в индексе гугла пусть будет — там пока только вопросы без ответов. Неплохо бы запостить на ubuntuforums.org да на forums.gentoo.org.
theSoul (*) (15.05.2009 13:08:17)

Вот такие-вот неприятности... А воз и ныне там...

Настройка звука в 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
Остается только пересобрать ядро и перезапустить систему.
Сборку ядра смотрите в хендбуке для своего дистрибутива линукса.

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