Включаем звук в Benq S52 (Conexant CX20551, ICH6 Family)
Теперь, когда мы разобрались, как собирать ядро для Ubuntu, переходим к следующему шагу. Я использую ноутбук Benq S52, в котором установлена звуковая карта на чипе Conexant CX20551 (определяется как ICH6 Family AC'97 Audio Controller). Этот чип еще полноценно не поддерживается в Linux. В bugrtaq проекта ALSA написано, что проблема решена. Но установка последнего RC ALSA мне не помогла. Поэтому был найден другой путь - небольшое редактирование исходных текстов ядра. Ниже приводятся оба варианта решения проблемы.
Вариант номер один: ставим новую ALSA
Скачиваем новую версию ALSA и собираем ее:
-
./configure --with-cards=intel8x0 --with-debug=full
Я не буду приводить остальные команды, необходимые для установки, так как они есть в официальной инструкции.
После установки нужен небольшой patch, который надо не забыть поставить в автозагрузку:
-
echo 5c 0001> '/proc/asound/card0/codec97#0/ac97#0-0+regs'
Примечание: этот способ у меня не заработал, звука не появилось. Правда появились щелчки из динамиков. Но, судя по форумам, у некоторых этот вариант отлично срабатывал.
Вариант номер два: модифицируем ядро
Нам понадобится отредактировать несколько файлов, добавив в них определенный код.
/usr/src/YOUR_KERNEL_VERSION/sound/pci/ac97/ac97_codec.c
-
{ 0x43525970, 0xfffffff8, "CS4202", NULL, NULL },
-
{ 0x43585421, 0xffffffff, "HSD11246", NULL, NULL }, // SmartMC II
-
{ 0x43585428, 0xfffffff8, "Cx20468", patch_conexant, NULL }, // SmartAMC fixme: the mask...
-
// Начало добавления
-
{ 0x43585431, 0xffffffff, "Cx20551", patch_cx20551, NULL }, // ДОБАВЛЯЕМ ЭТУ СТРОКУ
-
// Конец добавления
-
{ 0x44543031, 0xfffffff0, "DT0398", NULL, NULL },
-
{ 0x454d4328, 0xffffffff, "EM28028", NULL, NULL }, // same as TR28028?
/usr/src/YOUR_KERNEL_VERSION/sound/pci/ac97/ac97_patch.c
-
/* Добавляем эту функцию */
-
int patch_cx20551(struct snd_ac97 * ac97)
-
{
-
snd_ac97_write_cache(ac97, 0x5c, snd_ac97_read(ac97, 0x5c) | 0x01 );
-
return 0;
-
}
-
-
/*
-
* Analog Device AD18xx, AD19xx codecs
-
*/
/usr/src/YOUR_KERNEL_VERSION/sound/pci/ac97/ac97_patch.h
-
int patch_cirrus_spdif(struct snd_ac97 * ac97);
-
int patch_conexant(struct snd_ac97 * ac97);
-
// Начало добавления
-
int patch_cx20551(struct snd_ac97 * ac97); /* ДОБАВЛЯЕМ ЭТОТ PROTOTYPE */
-
// Конец добавления
-
int patch_ad1819(struct snd_ac97 * ac97);
Теперь компилируем ядро, ставим его, перегружаемся и наслаждаемся звуком. Лично у меня все заработало.

