5

New build on Gigabyte z490 Vision G motherboard. Network link lights lit up, cable directly to the switch. I installed another network card, connected to the same switch, and it's what I'm using for connectivity because it works great (Intel igb driver). Onboard network port will occasionally come up after reboot, but usually shows no link and speed/duplex "Unknown!"

What do you think is going on? What other information do you need?

I don't think it's the cat6 cable, I've tried multiple and multiple switch ports, and cables that are used successfully on the other ports. It's a 2.5Gbps NIC connecting to a 1Gbps switch, I could try picking up a cat7 and see if that helps.

Data requested appended at the end, no /etc/network/interfaces directory, and everything under /etc/network looks stock.

Ubuntu 20.04 server install.

$ ethtool enp5s0 
Settings for enp5s0:
    Supported ports: [ ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
                            2500baseT/Full 
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Supported FEC modes: Not reported
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
                            2500baseT/Full 
    Advertised pause frame use: Symmetric
    Advertised auto-negotiation: Yes
    Advertised FEC modes: Not reported
    Speed: Unknown!
    Duplex: Unknown! (255)
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: off (auto)
Cannot get wake-on-lan settings: Operation not permitted
    Current message level: 0x00000007 (7)
                   drv probe link
    Link detected: no

$ lspci -knn
5:00.0 Ethernet controller [0200]: Intel Corporation Device [8086:15f3] (rev 02)
    Subsystem: Gigabyte Technology Co., Ltd Device [1458:e000]
    Kernel driver in use: igc
    Kernel modules: igc

$ dmesg | grep igc
[    3.181094] igc 0000:05:00.0: 4.000 Gb/s available PCIe bandwidth (5 GT/s x1 link)
[    3.181096] igc 0000:05:00.0 eth0: MAC: 18:c0:4d:00:00:00
[    3.181657] igc 0000:05:00.0 enp5s0: renamed from eth0

           *-network
                description: Ethernet interface
                product: Intel Corporation
                vendor: Intel Corporation
                physical id: 0
                bus info: pci@0000:05:00.0
                logical name: enp5s0
                version: 02
                serial: 18:c0:4d:00:00:00
                capacity: 1Gbit/s
                width: 32 bits
                clock: 33MHz
                capabilities: bus_master cap_list rom ethernet physical 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
                configuration: autonegotiation=on broadcast=yes driver=igc driverversion=0.0.1-k latency=0 link=no multicast=yes port=twisted pair slave=yes
                resources: irq:17 memory:51a00000-51afffff memory:51b00000-51b03fff memory:51900000-519fffff

Requested data:

$ cat /etc/netplan/*.yaml
network:
  ethernets:
    enp6s0f0:
      dhcp4: no
    enp6s0f1:
      dhcp4: no
    enp5s0:
      dhcp4: no
      optional: true
  bonds:
    bond0:
      interfaces: [enp6s0f0, enp6s0f1, enp5s0]
      addresses: [192.168.37.10/24]
      gateway4: 192.168.37.1
      nameservers:
        addresses: [192.168.37.1]
        search: [home.lan]
      parameters:
        mode: balance-alb
  version: 2

$ sudo lshw -C network 
  *-network                 
       description: Ethernet interface
       product: Intel Corporation
       vendor: Intel Corporation
       physical id: 0
       bus info: pci@0000:05:00.0
       logical name: enp5s0
       version: 02
       serial: 18:c0:4d:00:00:00
       capacity: 1Gbit/s
       width: 32 bits
       clock: 33MHz
       capabilities: pm msi msix pciexpress bus_master cap_list rom ethernet physical 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=igc driverversion=0.0.1-k latency=0 link=no multicast=yes port=twisted pair slave=yes
       resources: irq:17 memory:51a00000-51afffff memory:51b00000-51b03fff memory:51900000-519fffff
  *-network:0
       description: Ethernet interface
       product: 82576 Gigabit Network Connection
       vendor: Intel Corporation
       physical id: 0
       bus info: pci@0000:06:00.0
       logical name: enp6s0f0
       version: 01
       serial: 00:1b:21:00:00:00
       size: 1Gbit/s
       capacity: 1Gbit/s
       width: 32 bits
       clock: 33MHz
       capabilities: pm msi msix pciexpress bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=igb driverversion=5.6.0-k duplex=full firmware=1.5.1 latency=0 link=yes multicast=yes port=twisted pair slave=yes speed=1Gbit/s
       resources: irq:16 memory:51820000-5183ffff memory:51400000-517fffff ioport:3020(size=32) memory:51844000-51847fff memory:51848000-51867fff memory:51868000-51887fff
  *-network:1
       description: Ethernet interface
       product: 82576 Gigabit Network Connection
       vendor: Intel Corporation
       physical id: 0.1
       bus info: pci@0000:06:00.1
       logical name: enp6s0f1
       version: 01
       serial: f6:3b:fc:00:00:00
       size: 1Gbit/s
       capacity: 1Gbit/s
       width: 32 bits
       clock: 33MHz
       capabilities: pm msi msix pciexpress bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=igb driverversion=5.6.0-k duplex=full firmware=1.5.1 latency=0 link=yes multicast=yes port=twisted pair slave=yes speed=1Gbit/s
       resources: irq:17 memory:51800000-5181ffff memory:51000000-513fffff ioport:3000(size=32) memory:51840000-51843fff memory:51888000-518a7fff memory:518a8000-518c7fff
1
  • link=no usually indicates an ethernet cable problem. Are you using cat 5e or cat 6 cables? Is this a desktop or server installation? Edit your question and show me cat /etc/network/interfaces and cat /etc/netplan/*.yaml and sudo lshw -C network when BOTH network cards are installed.
    – heynnema
    May 29, 2020 at 18:25

6 Answers 6

13

I'll answer my own question, this is an intel firmware issue. Hope this helps someone else.

Gigabyte has a NIC firmware posted on their website which is windows-only, https://download.gigabyte.com/FileList/Driver/mb_driver_intel-i225-firmware-tool.zip. Intel has Linux NVMUpdate utilities on their site, but not packaged with this firmware, as far as I could tell. Available at https://downloadcenter.intel.com/download/22283/Intel-Ethernet-Adapter-Complete-Driver-Pack

So, download both, copy FXVL_15F3_V_2MB_1.45.bin from the windows updater to the linux location, in my case:

cp ~/Nvmupdate145/i225/FXVL_15F3_V_2MB_1.45.bin ~/NVMUpdatePackage/700_Series/700Series/Linux_x64

Add this to nvmupdate.cfg:

BEGIN DEVICE
    DEVICENAME: NNT
    VENDOR:     8086
    DEVICE:     15F3
    SUBVENDOR:  1458
    SUBDEVICE:  E000
    NVM IMAGE:  FXVL_15F3_V_2MB_1.45.bin
    IMAGE DOWNGRADE: TRUE
END DEVICE

And run the utility. You should see:

$ sudo ./nvmupdate64e 

Intel(R) Ethernet NVM Update Tool
NVMUpdate version 1.35.23.3
Copyright (C) 2013 - 2020 Intel Corporation.


WARNING: To avoid damage to your device, do not stop the update or reboot or power off the system during this update.
Inventory in progress. Please wait [*****.....]


Num Description                          Ver.(hex)  DevId S:B    Status
=== ================================== ============ ===== ====== ==============
01) Intel(R) Gigabit ET Dual Port         1.5(1.5)   10C9 00:002 Update not    
    Server Adapter                                               available
02) Intel(R) Ethernet Controller (2)    1.69(1.45)   15F3 00:006 Update        
    I225-V                                                       available

Options: Adapter Index List (comma-separated), [A]ll, e[X]it
Enter selection: a
Would you like to back up the NVM images? [Y]es/[N]o: n
Update in progress. This operation may take several minutes.
[********+.]


Num Description                          Ver.(hex)  DevId S:B    Status
=== ================================== ============ ===== ====== ==============
01) Intel(R) Gigabit ET Dual Port         1.5(1.5)   10C9 00:002 Update not    
    Server Adapter                                               available
02) Intel(R) Ethernet Controller (2)    1.69(1.45)   15F3 00:006 Update        
    I225-V                                                       successful


Tool execution completed with the following status: All operations completed successfully.
Press any key to exit.

And, didn't even need a reboot:

$ ethtool enp6s0 
Settings for enp6s0:
    Supported ports: [ ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
                            2500baseT/Full 
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Supported FEC modes: Not reported
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
                            2500baseT/Full 
    Advertised pause frame use: Symmetric
    Advertised auto-negotiation: Yes
    Advertised FEC modes: Not reported
    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: off (auto)
Cannot get wake-on-lan settings: Operation not permitted
    Current message level: 0x00000007 (7)
                   drv probe link
    Link detected: yes
5

Based on the inspiration from the answers above, for my Ubuntu 20.04.1 system running on an Asus WS X299 SAGE II motherboard with the Intel I225-LM chipset, I switched to the 5.8.7 mainline generic kernel (the latest 5.8 line at the time of this writing) using the Kernel PPA builds. (steps inspired by the article here).

  1. You’ll need to download the following files from here:

    • linux-headers-*all.deb
    • linux-headers-*generic*.deb
    • linux-image-unsigned-*generic*.deb
    • linux-modules-*generic*.deb
  2. Once they’ve been downloaded, run sudo dpkg -i deb linux*.deb

  3. Reboot! (e.g. sudo reboot)

  4. Once your system is back up and running, you can verify you’re on kernel 5.8.7 by running uname -sr

Doing this fixed the issue I was having with my built-in NICs on the and the entire system has been stable without issues under high memory and CPU pressure for several days continually.

I initially tried going the firmware update route but got stymied as I have an I225-LM rather than the I225-V. The latter seems to have updated firmware that can be brought into a Linux environment while I couldn’t find a similar outcome for the former.

3
  • 1
    @Nmath Thanks for the feedback, I’ve elaborated a bit further. Let me know what the gap is. I definitely want others to benefit from what I’ve learnt if possible. Sep 7, 2020 at 20:53
  • Thank you! This seems to finally have fixed it for me. 5.8.9 was the latest at the time of writing. Sep 15, 2020 at 16:44
  • Ended up using the Ukuu tool described in the linked howto. Upgraded to kernel 5.8.18 and my LAN port now supports Gigabit connections. Feb 7, 2021 at 0:37
3

John, thank you so much for posting after you figured it out for yourself. I just completed a new build with a Gigabyte Z490i and was totally flummoxed when the onboard LAN worked, and then didn't, and then did, and then didn't.

As I write this I'm about to try your method, but first I'm verifying things look similar:

% ethtool enp4s0
Settings for enp4s0:
    Supported ports: [ ]
    Supported link modes:   10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
                            2500baseT/Full
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Supported FEC modes: Not reported
    Advertised link modes:  10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
                            2500baseT/Full
    Advertised pause frame use: Symmetric
    Advertised auto-negotiation: Yes
    Advertised FEC modes: Not reported
    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: off (auto)
Cannot get wake-on-lan settings: Operation not permitted
    Current message level: 0x00000007 (7)
                   drv probe link
    Link detected: yes
% lspci -knn | grep -i -C3 ethernet
04:00.0 Ethernet controller [0200]: Intel Corporation Device [8086:15f3] (rev 01)
    Subsystem: Gigabyte Technology Co., Ltd Device [1458:e000]
    Kernel driver in use: igc
    Kernel modules: igc
[    3.572001] igc 0000:04:00.0: 4.000 Gb/s available PCIe bandwidth (5 GT/s x1 link)
[    3.572005] igc 0000:04:00.0 eth0: MAC: [redacted]
[    3.581425] igc 0000:04:00.0 enp4s0: renamed from eth0
[   14.359088] igc 0000:04:00.0 enp4s0: igc: enp4s0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX

The first hurdle was that https://download.gigabyte.com/FileList/Driver/mb_driver_intel-i225-firmware-tool.zip was some weird zip format that I couldn't extract with anything except a Windows computer. So I did that, copied the FXVL_15F3_V_2MB_1.45.bin file to the server, and proceeded with your instructions.

% sudo ./nvmupdate64e

Intel(R) Ethernet NVM Update Tool
NVMUpdate version 1.35.33.4
Copyright (C) 2013 - 2020 Intel Corporation.


WARNING: To avoid damage to your device, do not stop the update or reboot or power off the system during this update.
Inventory in progress. Please wait [**|.......]


Num Description                          Ver.(hex)  DevId S:B    Status
=== ================================== ============ ===== ====== ==============
01) Intel(R) Ethernet Controller        1.56(1.38)   15F3 00:004 Update
    I225-V                                                       available

Options: Adapter Index List (comma-separated), [A]ll, e[X]it
Enter selection: 1
Would you like to back up the NVM images? [Y]es/[N]o: y

And the after:

Num Description                          Ver.(hex)  DevId S:B    Status
=== ================================== ============ ===== ====== ==============
01) Intel(R) Ethernet Controller        1.69(1.45)   15F3 00:004 Update not
    I225-V                                                       available

Unfortunately, this didn't seem to help my problem.

After a reboot, the link was still dead, like there wasn't even a cable plugged in. Currently the only way I've found to get it to work is to boot into the Ubuntu live installer, get to the point where I can configure the network, get it an IP via DHCP, then reboot into my on-disk install, and it works until the next reboot. Obviously this isn't ideal.

1
  • 7z didn’t work for you?
    – 0andriy
    Dec 3, 2021 at 8:43
2

I was able to solve this thanks to your workaround.

I had a different motherboard, so I downloaded the Windows LAN Driver from Asus's website at
https://www.asus.com/Motherboards/ROG-STRIX-Z490-E-GAMING/HelpDesk_Download/.

I then downloaded the NVM Update Utility at
https://downloadcenter.intel.com/download/24769 since it has a Linux version.

The name of the file should be similar to FXVL_15F3_ASUS.bin, but the ending will be different depending on the various Z490 motherboard manufacturers. This can be found on the driver website for the specific motherboard you are using.

After unzipping this file, I was left with two zip files,

  • I225V_End_User_FW_UPDATE.zip
  • I225V_Intel_Gigabit_Ethernet_Driver_V1.0.1.4_WIN10_64-bit.zip.
  1. I found the FXVL_15F3_ASUS.bin in I225V_End_User_FW_UPDATE.zip and copy-pasted this file over into the /700Series/Linux_x64/ directory for the NVM Update Utility.

  2. Next, we need to find the config file for the i225 driver. After unzipping and searching the Asus LAN Driver files, I found the proper config settings at config_i225.txt in I225V_End_User_FW_UPDATE.zip. Again, the location of the config_i225.txt might vary depending on the motherboard manufacturer's LAN driver.

  3. Lastly, I navigated to nvmupdate.cfg in /700Series/Linux_x64/, and added this to the end of the file:

    BEGIN DEVICE
        DEVICENAME: NNT
        VENDOR:     8086
        DEVICE:     15F3
        SUBVENDOR:  1043
        SUBDEVICE:  87D2
        NVM IMAGE:  FXVL_15F3_ASUS.bin
        IMAGE DOWNGRADE: TRUE
    END DEVICE
    
  4. Once this is added, type sudo ./nvmupdate64e. After following the on-screen instructions, Ethernet should connect immediately. Hope this helps anyone experiencing this issue!

3
  • Made my day that you found this and were able to get your new ASUS board working :)
    – John
    Jun 20, 2020 at 2:35
  • Thanks so much for taking the time to post this! It helped me immensely!!
    – obe
    Sep 4, 2020 at 20:03
  • You have the "ROG STRIX Z490-E GAMING" board, is that correct? I had the same problem with the Intel I225-V, but I have a ROG STRIX B550-F GAMING board. Sadly I don't have the "I225V_End_User_FW_UPDATE.zip" file when I download the LAN driver package for Windows for my own board. I wonder if I can reuse the BIN image you found, even if it's not the same board? Contacting ASUS support is useless, they give me standard blanket answers like "sorry to hear about this" and "you can try to uninstall and reinstall GNU/LINUX". Literally, this is what they told me. And they copy and pasted "GNU/LINUX".
    – Samir
    Dec 14, 2020 at 21:12
1

Option 1: Switch to Pop!_OS Kernel

I have the same NIC (I225-V) on an Asus B550 motherboard (ROG-STRIX-B550-I). I got the NIC working by (accidentally) switching to the latest Pop!_OS 5.4 kernel.

  1. Add the Pop repository:
sudo add-apt-repository ppa:system76/pop
  1. Do an apt update.

  2. And when you do an apt upgrade, it should recommend to upgrade the kernel to the Pop version, something like this 5.4.0-76XX-generic.

The 76 signifies that it's Pop's custom kernel, and the next two numbers provide the Debian version of the kernel.

Right now, I'm running kernel 5.4.0-7634-generic with Xubuntu. The NIC comes up and registers at 1Gbit/s.

Option 2: Out-of-tree module compilation using the Pop!_OS source

If you don't want to go so far as switching kernels, then you can compile the igc driver from the Pop source using the Ubuntu kernel build as your base library.

  1. Download the latest source from Pop's github repository:
wget https://github.com/pop-os/linux/archive/master_focal.zip
  1. Decompress the archive:
unzip master_focal.zip
  1. Change to the driver source directory:
cd linux-master_focal/drivers/net/ethernet/intel/igc
  1. Compile the driver using your current 5.4 kernel build directory:
make -C /lib/modules/`uname -r`/build M=$PWD

For example, I compiled the driver using the 5.4.0-42-generic kernel source files:

make -C /lib/modules/5.4.0-42-generic/build M=$PWD

Substitute 5.4.0-42-generic with uname -r going forward.

You can inspect that everything worked with a modinfo:

modinfo igc.ko

The vermagic in the output should match your current kernel, like this:

vermagic:       5.4.0-42-generic SMP mod_unload
  1. Now install the driver object file. I opted to do this manually so that I could make a backup of the Ubuntu driver in case things went south with the Pop driver.
sudo cp -vp igc.ko /lib/modules/5.4.0-42-generic/kernel/drivers/net/ethernet/intel/igc/igc.ko-latest-pop
cd /lib/modules/5.4.0-42-generic/kernel/drivers/net/ethernet/intel/igc/
sudo cp -pv igc.ko igc.ko-5.4.0-42-generic-original
sudo cp -pv igc.ko-latest-pop igc.ko
  1. Reboot and enjoy a NIC that works using the latest driver from Pop!

After booting into the kernel with the updated driver, you can check that you are using the compiled driver using modinfo:

modinfo igc

The filename should match the location of the driver you installed, for example:

filename:       /lib/modules/5.4.0-42-generic/kernel/drivers/net/ethernet/intel/igc/igc.ko

WARNING YMMV. If you choose to compile the Pop drivers, make sure you have a working backup kernel, and that you are comfortable with switching kernels in grub in case you bork the kernel while installing the driver. I edited my grub defaults (in /etc/default/grub) to be able to easily switch kernels.

GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=9

Beware: There are still issues with the latest driver.

I have noticed that even this version of the igc driver still has bugs in kernel 5.4. For instance, the /proc/net/dev stats are blank and do not update under the igc driver for the NIC. The stats from ethtool -S are updating. I'm not sure if they are accurate or not.

Experimentation

I've compiled and installed the igc driver from linux-5.6.19 kernel source. It also seems to be working under the Pop 5.4 kernel, but the 5.6 driver version still has the /proc/net/dev stats issue.

I also tried compiling the latest source for the igc driver in the 5.7 and 5.8 kernels. And it is a no go if you are using the 5.4 source. There are dependency issues under 5.7 and 5.8.

It looks like the 5.8 kernel adds some power management dependencies that are lacking in 5.4. I get the following error:

error: ‘DPM_FLAG_NO_DIRECT_COMPLETE’ undeclared

when I run:

make -C /lib/modules/5.4.0-7634-generic/build M=$PWD

using the latest source as of 8/19/2020:

svn export https://github.com/torvalds/linux.git/trunk/drivers/net/ethernet/intel/igc
0

I got similar issue while using Asus Z490I motherboard with Ubuntu 18.04. This worked for me:

#Update to kernel 5.4.0-89 and extra modules (which contains igc driver)
sudo apt-get install linux-headers-5.4.0-89-generic linux-hwe-5.4-headers-5.4.0-89 linux-image-5.4.0-89-generic linux-modules-5.4.0-89-generic linux-modules-extra-5.4.0-89-generic linux-tools-5.4.0-89-generic linux-hwe-5.4-tools-5.4.0-89 linux-hwe-5.4-tools-common linux-hwe-5.4-headers-5.4.0-89 linux-hwe-5.4-source-5.4.0

#Update linux-firmware package from ubuntu 20.04 repos
wget http://archive.ubuntu.com/ubuntu/pool/main/l/linux-firmware/linux-firmware_1.187.19_all.deb
sudo dpkg -i firmware_1.187.19_all.deb

#reboot to take effect
sudo reboot

EDIT: This worked for a while in ubuntu 18. But the network device is not stable. After reboot, sometimes the device doesn't come up.

The consistent solution was to upgrade to ubuntu 20.04, with kernel 5.11.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .