Хочу поделиться решением неприятной проблемы со звуком на некоторых моделях ноутбуков 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 не собирался.
Спасибо за внимание (-;