Нет звука в Lenovo Ideapad

Драйвер e1000e - это тот драйвер, который может запускать контроллеры Ethernet I2xx Intel. А последний драйвер e1000e (на момент написания) может работать с микросхемой I219 .

Сообщение Неправильная контрольная сумма NVM во время загрузки препятствовало загрузке старых драйверов. В других ОС (особенно в окнах MS) эта ошибка игнорируется. Но Linux кажется более строгим.

NVM - это ПЗУ (постоянное запоминающее устройство) в микросхеме, которое проверяет контрольную сумму, и более старая версия драйвера e1000 не знала о содержимом NVM новых микросхем. Поскольку карта работает в других операционных системах, которые игнорируют ошибку, другой возможностью было заставить драйвер игнорировать ошибку.

Контрольная сумма выполняется внутри nvm.c , хотя некоторые другие модели представляют свои собственные функции fix_checksum , которые выполняются до e1000e_validate_nvm_checksum_generic .

s32 e1000e_validate_nvm_checksum_generic(struct e1000_hw *hw)
{
        s32 ret_val;
        u16 checksum = 0;
        u16 i, nvm_data;

        for (i = 0; i < (NVM_CHECKSUM_REG + 1); i++) {
                ret_val = e1000_read_nvm(hw, i, 1, &nvm_data);
                if (ret_val) {
                        e_dbg("NVM Read Error\n");
                        return ret_val;
                }
                checksum += nvm_data;
        }

        if (checksum != (u16)NVM_SUM) {
                e_dbg("NVM Checksum Invalid\n");
                return -E1000_ERR_NVM;
        }

        return 0;
}

NVM_SUM определяется внутри define.h

#define NVM_SUM                         0xBABA

Если вы уверены, что карта работает (и дает сбой только из-за контрольной суммы NVM), вы можете попробовать изменить функцию контрольной суммы на:

s32 e1000e_validate_nvm_checksum_generic(struct e1000_hw *hw)
{
        return 0;
}

И это заставит контрольную сумму всегда быть успешной.


Дополнительные (более или менее) заслуживающие доверия ссылки:

3
26.12.2018, 17:04
1 ответ

Чтобы звук заработал, согласно аналогичному сообщению на форумах FreeBSD, вы должны выполнить:

sudo sysctl dev.hdac.0.polling=1

После этого изменения звук начал работать при использовании разъема для наушников (Right Analog ).

Для вывода звука на внутренние динамики (Внутренний аналоговый ), пришлось сделать:

sudo sysctl hw.snd.default_unit=1

Чтобы иметь эти конфигурации во время загрузки, добавьте их в/etc/sysctl.conf:

dev.hdac.0.polling=1
hw.snd.default_unit=1

См. также:

FreeBSD :нет автоматического переключения между звуком в динамике и встроенным -в разъем для наушников

4
27.01.2020, 21:18

Теги

Похожие вопросы