Как восстановить контрольную сумму энергонезависимой памяти (NVM) контроллера Intel Ethernet I219-V ноутбука ASUS?

у меня проблема с новым ASUSPRO B8430UA ноутбук: его Intel Ethernet Connection I219-V не работает под Linux. Фактически, я попробовал два разных ноутбука этой модели, и у обоих была та же проблема.

используемый драйвер Linux e1000e, он производит следующие сообщения во время загрузки Linux (Ubuntu 16.04):

$ dmesg | grep e1000e 
[ 5.643760] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k 
[ 5.643761] e1000e: Copyright(c) 1999 - 2015 Intel Corporation. 
[ 5.644308] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode 
[ 5.877838] e1000e 0000:00:1f.6: The NVM Checksum Is Not Valid 
[ 5.907340] e1000e: probe of 0000:00:1f.6 failed with error -5 

Я попытался установить последнюю версию 3.3.4 e1000e, но это не помогло (хотя я испортил ядро).

Я задавал вопросы об этом e1000-devel список рассылки, и мне посоветовали связаться с производителем моего ноутбука, потому что "контрольная сумма NVM недействительна" означает, что содержимое энергонезависимой памяти моего чипа Ethernet повреждено или, по крайней мере, что она не соответствует контрольной сумме (к сожалению, я не специалист и не могу объяснить это более подробно точно.)

Я задал вопрос в Службу поддержки Intel, и они ответили, что они не заботятся о OEM-системах (бортовых чипах Ethernet в ноутбуках) и что я должен связаться с ASUS:

к сожалению по мере того как ваша система ОЭМ наши варианты поддержки весьма ограничены. Производитель ноутбука, возможно, изменил программное обеспечение или аппаратное обеспечение, и именно поэтому поддержка и драйверы для таких систем обеспечивается непосредственно ноутбуком производитель.

Я связался со службой поддержки ASUS, но они ответили, что у них нет инструментов для проверки или восстановления содержимого NVM, и что, если я найду такие инструменты, они будут рады узнать об этом. Они также объяснили, что они должны поддерживать только оригинальную аппаратную и программную конфигурацию, и эта модель ноутбука продается с Windows 7. Под Windows 7 мой Ethernet, кажется, работает нормально. Согласно тому, что я узнал, Windows просто не проверяет контрольную сумму NVM.

я обнаружил, что в один подобный случай в 2011 году, проблема может быть исправлена с помощью Intel Ethernet Connections Boot Utility:

https://thesorcerer.wordpress.com/2011/07/01/guide-intel-82573l-gigabit-ethernet-with-ubuntu-11-04-and-fix-pxe-e05/

однако, оговорка в последнем абзаце предупреждает:

Вы, наверное, должны знать, что Intel (R) Ethernet Connections Boot Utility не был разработан для использования С на борту (также известный как OEM) lan карт (для PCI карт), поэтому нет никакого верного способа предсказать, что это взаимодействие с другими компонентами на борту, как USB или звуковые контроллеры.

описание BootUtil версии 1.6.13.0 также, кажется, говорит, что он не совсем предназначен для использования с бортовыми контроллерами Ethernet:

Ethernet Intel(R) Flash Firmware Utility (BootUtil) - это утилита, которая может использоваться для программирования PCI option ROM на флэш-памяти поддерживаемых сетевых адаптеров Intel PCI и PCI-Express, а также для обновления конфигураций.

[...]

OEM-производители могут предоставлять пользовательские образы прошивки flash для сетевых адаптеров OEM. Пожалуйста см. инструкции, Котор дали OEM.

однако есть абзац, который я не понял:

PXE+EFI и комбинации образов iSCSI+EFI поддерживаются всеми универсальными адаптерами OEM, однако поддержка ограничена устройствами, поддерживающими обе технологии в виде дискретных образов.

кроме того, в комментарий 5 по вопросу 2008 года, где NVM был поврежден из-за драйвера e1000e ошибка рекомендуется:

пожалуйста, не запускайте ibautil как некоторые сайты в интернете предлагают решить эту проблему. Это, вероятно, вызовет вам придется заменить материнскую плату, чтобы вернуть функциональность локальной сети.

IBAUTIL является одним из предшественников BootUtil.

в любом случае, я решил запустить BootUtil из-под Linux без параметров командной строки, чтобы получить "список всех поддерживаемых сетевых портов Intel, найденных в системе."Вот что у меня получилось:

$ sudo ./bootutil64e

Intel(R) Ethernet Flash Firmware Utility
BootUtil version 1.6.13.0
Copyright (C) 2003-2016 Intel Corporation

Type BootUtil -? for help

Port Network Address Location Series  WOL Flash Firmware                Version
==== =============== ======== ======= === ============================= =======
  1   D017C2201F59     0:31.6 Gigabit N/A FLASH Not Present

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


обновление 1.
Согласно комментарию, который я получил от e1000-devel список рассылки о "FLASH нет",

вспышка и NVM два отдельных элемента. Вспышка позволяет вещи
как загрузка PXE и iSCSI, тогда как NVM хранит такие вещи, как
сетевой адрес.


обновление 2.
Я нашел разведданные информация для I219, Раздел 10.3.2.2 Контрольная Сумма Слово Расчет говорит:

контрольная сумма слово (слово 0x3F, байты NVM 0x7E и 0x7F) используется для обеспечения того, что базовый образ NVM является допустимым изображением. Значение этого слова должно быть рассчитано таким образом, что после сложения всех слов (0x00 - 0x3F) / байт (0x00-0x7F), включая само слово контрольной суммы, сумма должна быть 0xBABA. Начальное значение в 16-битном регистре суммирования должно быть 0x0000, а бит переноса следует игнорировать после каждое добавление.

5
задан Alexey
16.05.2023 4:13 Количество просмотров материала 3155
Распечатать страницу

6 ответов

с любезной помощью e1000-devel список рассылки, вот как я исправил NVM контрольная сумма word используя ethtool.

в принципе, я сначала исправил e1000e, чтобы иметь доступ к чипу Ethernet в Linux, а затем использовал ethtool прочитать значение из области "checksummed" NVM моего I219-V, а затем записать его обратно. Режим записи фиксированной суммы.

иметь доступ к моему чипу Ethernet от Linux, пришлось залатать e1000e пропустить проверку контрольной суммы NVM. В файле src/netdev.c, я изменил первую строку

for (i = 0;; i++) {
    if (e1000_validate_nvm_checksum(&adapter->hw) >= 0)
        break;
    if (i == 2) {
        dev_err(pci_dev_to_dev(pdev),
            "The NVM Checksum Is Not Valid\n");
        err = -EIO;
        goto err_eeprom;
    }
}

на

for (i = 0; false; i++) {

(весь блок также может быть просто удален или закомментирован.)

затем я установил исправленный модуль. От /src каталог я сделал:

sudo make install
sudo modprobe -r e1000e
sudo modprobe e1000e
sudo update-initramfs -u
reboot

проверка контрольной суммы пропущена и Ethernet запущен рабочий.

прежде чем исправить контрольное слово, я посмотрел в контур NVM I219, представленный в разделе 10 Intel информация. Использование контрольной суммы поясняется в разделе 10.3.2.2.

я отметил Слово контрольной суммы перед записью в NVM:

$ sudo ethtool -e enp0s31f6 offset 0x7e length 2
Offset      Values
------      ------
0x007e:     60 13 

(enp0s31f6 имя моего интерфейса Ethernet.) Таким образом, значение слова с ошибочной контрольной суммой было 0x1360.

я посмотрел на свалку NVM с sudo ethtool -e enp0s31f6 а потом снова посмотрел на байт со смещением 0x10:

$ sudo ethtool -e enp0s31f6 offset 0x10 length 1
Offset      Values
------      ------
0x0010:     ff 

(по-видимому, любое местоположение будет делать, но мне сказали, что в моем случае значение со смещением 0x10 вообще не использовалось, поэтому казалось "более безопасным".)

для записи на NVM (EEPROM) с помощью ethtool, мне нужен "волшебный ключ."Я читаю снятие ограничений с сетевого интерфейса Intel Pro/1000 (e1000) и понял, что мой волшебный ключ был 0x15708086 используя lspci -nn:

$ lspci -nn | grep Ethernet
00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection I219-V [8086:1570] (rev 21)

тогда я написал 0xff вернуться к смещению 0x10 в NVM:

$ sudo ethtool -E enp0s31f6 magic 0x15708086 offset 0x10 value 0xff

после сравнения дампов NVM до и после записи я мог видеть, что, как и ожидалось, единственное, что изменилось, это контрольная сумма:

$ sudo ethtool -e enp0s31f6 offset 0x7e length 2
Offset      Values
------      ------
0x007e:     60 93 

новое значение таким образом было 0x9360.

я загрузил ядро с неисправленной e1000e, и порт Ethernet работал нормально.

P. S. Я считаю, это немного беспокоясь, что только самый высокий бит в контрольной сумме слова был неправильным.

7
отвечен Alexey 2023-05-17 12:01

Я bootutil для Linux от Intel (как предлагалось в сообщении 2011 года) на интегрированной Intel NIC на моем Asus Z270-A, чтобы исправить эту ошибку, без перекомпиляции и волшебных ключей, обсуждаемых в ответе upvoted. Отлично сработало. Я скачал инструмент из Intel скачать сайт

chmod +x ./bootutil64e
sudo ./bootutil64e -NIC 1 -defcfg
5
отвечен Chester Wisniewski 2023-05-17 14:18

я получал ту же ошибку на Fedora 24 от e1000e драйвер с материнской платой ASUS ROG MAXIMUS IX HERO, которая имеет адаптер Intel I219-V NIC.

Я нахожу принятое решение, которое требует исправления NVM, слишком рискованным. Это может сделать ваше оборудование бесполезным.

одним из безопасных решений является применение конфигурации по умолчанию к сетевому адаптеру с помощью Intel Ethernet Connections Boot Utility. Он работает в Linux из коробки, нет необходимости создавать загрузку диск:

$ chmod +x bootutil64e
$ sudo ./bootutil64e -NIC=1 -DEFAULTCONFIG

вот и все. Просто перезагрузитесь (или перезагрузите e1000e драйвер вручную).

3
отвечен Maxim Egorushkin 2023-05-17 16:35

У меня была такая же ошибка, и я хотел попробовать все остальное, прежде чем играть с битами NVM.

Я не уверен, что это то, что решило проблему, но последнее, что я сделал, прежде чем он волшебным образом снова работал, было попытка загрузки по сети с помощью UEFI (IPv4). Тогда какая-то черная магия починила мой NVM.

окружающая среда

  • материнская плата: Asus PRIME Z270-A (BIOS 0701)
  • NIC:00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (2) I219-V [8086:15b8]
1
отвечен 222 2023-05-17 18:52

попробуй:

$ sudo ./bootutil64e -NIC=XXX -BOOTENABLE=DISABLED.

Это должно сделать трюк в последних версиях bootutil64e.

1
отвечен elch 2023-05-17 21:09

мое решение гораздо проще:



- введите утилиту UEFI BIOS;

- enter расширенный режим

- перейдите к Дополнительно \ Конфигурация Сетевого Стека и просто включите сетевой стек (я только включил IPv4, чтобы безопасно оставаться за моим NAT).



Перезагрузка и наслаждаться NIC. По-видимому, этого достаточно, чтобы как-то очистить плохую контрольную сумму NVM. Затем вы можете вернуться и отключить Саид стек.

это под BIOS версии 8001 на материнской плате Asus Prime z270-A (драйвер e1000e на Arch Linux, ядро 4.9.11-1).



возможно, что вызвало эту проблему whas, что я попытался обновить прошивку через интернет непосредственно через утилиту EZ Flash (и не смог сделать это как для DHCP, так и для статических режимов IP). Я помню, как утилита спрашивала, Может ли она включить сетевой стек (который по умолчанию выключен), чтобы попытаться обновление.

0
отвечен ppparadox 2023-05-17 23:26

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

asus-laptop
drivers
ethernet
linux
oem
Вверх