User Tools

Site Tools


howtos:e1000e

Intro

For unknown reasons Ubuntu is shipping an ancient intel (e1000) driver that seems to have serious performance problems. Therefor you might want to use the driver shipped by Intel to get rid of ping delays up hole seconds!!

Getting the driver

Download the driver here: http://e1000.sf.net/

Go for the “e1000e for 82571/2/3/4, es2lan, ich8lan, ich9lan, ich10lan adapters” link and download e1000e-0.4.x.x.tar.gz.

Building e1000e

Make sure you have build-essential installed before trying to compile the driver:

sudo apt-get install build-essential

Unpak gzip'ed tarball:

tar -xzvf e1000e-0.4.x.x.tar.gz

Head for the src directory and build away:

cd src
sudo make install

This will install the module into “/lib/modules/<KERNEL-VERSION>/kernel/drivers/net/e1000e”.

You might get an error about man pages, just discard that. If e1000e.ko is in place everything is okay.

Testing your new driver

To test if the driver works do the following (please note you will loose network connectivity):

sudo rmmod e1000       (this kills you network!)
sudo modprobe e1000e

You should now have your interface back. Use whatever tool you like to get an ip address, but an “ifconfig eth0” should reveal an interface.

The final touch

Now you have several options to get the right driver loaded. If you do nothing, both drivers end up getting loaded after reboot, and your network performance gets even more crappy. Therefor I recommend one of the options below.

Option 1

Add the following to you “/etc/rc.local”:

rmmod e1000
rmmod e1000e
modprobe e1000e
/etc/init.d/networking restart 

This will unload both drivers on boot, reinsert the correct driver and bounce your network configuration.

Doing this will give you a network while running on the correct kernel version. When a kernel update is installed you end up with no network at all. This may be what you want as you know you have to compile against the new kernel.

Option 2

Add e1000e to the initramfs that will try to load it during boot.

Append e1000e and build a new initramfs image:

sudo echo e1000e >> /etc/initramfs-tools/modules
sudo update-initramfs -c -k all

Now the e1000e driver will rule your nic's and reclaim a desired network speed.

There is a catch to this solution, if you boot up into a kernel not compatible with your homebreved driver, the original crappy/buggy driver will get loaded. You can look at this in two ways. One, you will always have a network. Two you do not (might not) know that you are using the wrong driver and gets annoyed that things are getting slow and unreliable.

If you only want the e1000e driver loaded do the following:

sudo echo "blacklist e1000" >> /etc/modprobe.d/blacklist 

Now the e1000 is blacklisted and will not load. Now you have to remember that missing eth0 (or what ever your interface is called) means that you need to recompile e1000e against the new/different kernel.

Option 3

Hack you kernel options for booting. Append “noload=e1000” to your kernel line in the grub boot menu.lst. Make it look something like this:



title Ubuntu 8.04, kernel 2.6.24-19-generic
root (hd0,0)
kernel /boot/vmlinuz-2.6.24-19-generic root=UUID=0ba28d65-9563-47b5-b011-4c0f201141a4 ro quiet splash <color red>noload=e1000</color>
initrd /boot/initrd.img-2.6.24-19-generic
quiet



Now you completely have disabled the e1000 driver from the system.

howtos/e1000e.txt · Last modified: d/m/Y H:i (external edit)