- 2Solutions
Problem Description
On certain ThinkPads, e1000 driver for Intel Gigabit Ethernet (10/100/1000) fails to load with the following error message in /var/log/messages:
Download Intel Ethernet Flash Firmware Utility. BootUtil replaces older utilities and provides the functionality of the older IBAUTIL, ISCSIUTL, LANUTIL. 6 Drivers for Intel Boot Agent Networks Cards. Here's where you can download Free! The newest software for your Boot Agent. When I tried to revive it using ibautil.exe it got corrupt enough to no longer be enumerated. Would be nice if there was a way to bring that port back to life, because I really don't think anything electrical has happend to it. Hmm, I have the same motherboard and I cannot see something like this with an vanilla kernel using Frugalware. IBAUTIL.EXE version 4.02.02.01 or newer for Intel network interface cards (NICs) or Intel ‐ based LANs on Motherboard (LOMs). B57UTIL.EXE version 10.11 or newer or B57UDIAG.EXE version 6.04 or newer for Broadcom NICs or Broadcom ‐ based LOMs.
The problem is caused by a power savings feature obstructing normal operation, and causes the first bytes read from the EEPROM to be corrupt, resulting in a random or invalid MAC address (but no other data corruption). The EEPROM checksum test traps the problem and the driver refuses to load.
Solutions
Try to reload the e1000 module until the ethernet is pluged in, and the hardware have a chance to detect a link.
Use e1000e---Kernel Patch
Auke Kok published two patches in October 2007 that help solve both the 'corrupted' EEPROM read and bad latency.One of the patches moves many network cards over to the e1000e (e1000 for PCI-Express) module. The second disables some PCIe power management features that were the cause for the bad EEPROM read and some stability issues.
Refer to LinuxHQ on how to apply kernel patches.
From Lenovo
Lenovo provides a script that uses 'ethtool' command to update the card's settings. They say it is for SLED 10 but the Linux flavor shouldn't really matter. For some users, neither of the circumventions listed below help, but this script does!
Via module parameter
In recent kernels (at least with 2.6.22, maybe also in 2.6.21) there is a kernel module option to make the module ignore the error.
Load the module like this
You might also apply that parameter via modprobe.d or if you are using Debian/Ubuntu as append-line in your bootloader: e1000.eeprom_bad_csum_allow=1
From Mat's Blog
The fundamental solution is explained at Mat's Blogwhich directs the reader to Intel's site to download PROBOOT.EXE.
DO NOT USE THIS TOOL ON THINKPADS. The IBAUTIL.EXE tool that it contains is designed only to work with discrete ethernet parts that are on PCI/PCIe cards. It is not at all intended for use with laptop parts, although it is not sufficiently careful to refuse to run on such hardware. Improper use of this tool can leave your LAN firmware corrupted to the point that it will not even enumerate on the PCI bus and you will probably have to have your laptop repaired to restore the LAN functionality.See http://www.mail-archive.com/e1000-devel@lists.sourceforge.net/msg00398.html for an Intel Linux driver employee's comments on this.
Comment:
I used PROBOOT.EXE Version 15.2 (file version 4.0.100.1124) on Bios Version 2.26 (79ETE6WW) for T60 Type 2007-53G with success.The copied instruction is:
“ Download PROBOOT.EXE from Intel. Get the first one from the list - the one without Network adapter, it says only 'Intel® Boot Agent PROBOOT.exe version: 11.2', install that - it will create a folder with some files - put these on a bootable floppy (or two) or a bootable CD. Boot to DOS with the floppy or CD and run 'IBAUtil.exe -DEFCFG' that will reset the configuration and all should be OK „
I used an old bootable W98 to start the computer and a second CD with the files above. It is only working under DOS!
Using Preboot tool on linux
This has been tested on a T60 running 64bit Debian buster displaying the error e1000e the nvm checksum is not valid
if you're running a 32Bit installation of linux, follow this instructions (This was not tested)
if you're running a 64Bit installation of linux, follow this instructions
Circumvention
- Upgrade your BIOS
Lenovo has published newer BIOS revisions that appear to fix the issue for some users. The BIOS upgrade turns off 'Deep smart power down' which has been known to cause issues at initialization time (the driver can re-enable the issue later if you desire, the feature works correctly then).
- Insert a cable
Inserting a linked network cable bypasses the problem.
- Take the checksum twice
This bug report describes a fix -- take the checksum twice. First time will report a bad checksum, second will work (the problem seems to be triggered by some power-saving technology). This requires a tweak to the driver source and a rebuild of your kernel. This is much better than a previous 'fix' published here that disabled checksum checking entirely.
I updated the patch above to 2.6.22:
Ra 15:28, 5 September 2007 (UTC)
- Remove/add kernel module
Removing and adding the kernel module is a possible work-around. As root, run
On some occasions, the commands have to be run twice before eth0 becomes useable.On some X60s this will not work at all.
- Disabling and re-enabling the NIC in the BIOS
For some it fixed the issue finally, for some it helped just temporarily.
- Hacking the kernel to carry on even if the checksum is not valid
Although being a very ugly, hack, this works fine for me. To do that, you have to search drivers/net/e1000/e1000_main.c for the line containing the error message and then comment out the following two lines which set the error state and then jump to the error code. Although this doesn't fry the hardware for me, consider yourself warned...
See also
Intel Ibautil.exe Download Pc
- bug report submitted for e1000 driver.
- Discussion at Gentoo forums