Recently I bought a new mother board. It’s Asus Strix Z270F with Intel I219-V ethernet controler. I was sadly surprised that stock Linux driver refuses to work with it. Here is how I dealt with this.

Spotting problem

Of course, first symptom was not working Internet connection. A quick check with ifconfig revealed that no network interface could be seen in the system.

As I mentioned before this is Intel’s I219-V card:

% lspci | grep Ether                                        
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-V

This card, like many other Intel gigabit ethernet cards, should be supported by e1000e kernel module. Quick logs check reveals a problem:

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

Explanation

Non-Volataile Memory (NVM) is a memory where some card’s configuration is stored. Image written there has a checksum calculated to ensure it isn’t corrupted. For some reason this checksum was not correct and e1000e driver refused to work with this card. There is Intel’s datasheet accessible if you want to do some more reading.

Solving a problem

There are at least two ways to sort this out. Recompiling e1000e driver temporarly and using ethtool to write some data to NVM or using Intel’s tool designed to tweak this area of memory. I took the second option. So:

  • Download Preboot.tar.gz from Intel’s download center.
  • Unpack it: tar -xzvf Preboot.tar.gz
  • Go to utility: cd APPS/BootUtil/Linux_x64/ # Or Linux32 if you are still on 32 bits
  • Add execution bit to binary: chmod +x bootutil64e
  • See if it works for you and detects a card: sudo ./bootutil64e

If your card is detected than you may proceed to next step. But first – disclaimer:

You are about to use a software that can kill your card. My card was even not listed as supported. You are doing it at your own risk.

Now, as we have all that scary stuff behind us, you can try to write something to your card. The following line will set PXE configuration to default values for network card 1. As a side effect it will also calculate correct checksum, which we are after.

% sudo ./bootutil64e -NIC 1 -defcfg

That’s it! You can reload e1000e module or simply reboot to check effects. Good luck!

Leave a Reply