is anyone using i225-v Nic in their pve setup?

rykr

Member
Aug 22, 2020
35
1
8
54
Me and one other guy is having a terrible time getting things to work. I can't imagine that *noone* is using this nic.
 
I'm using an Asus z490 prime a which has a single I225-V nic. Works fine in Windows and Manjaro/Fedora linux. On proxmox it is down on boot. I log in as root after install and the network is done. No error in dmesg or anywhere else. Doing a systemctl restart networking.service brings it up.

Possibly related is if I create a vm using the linux bridge that is created by default my vm has no internet connectivity. The vm can ping the host and the host can ping the vm but that's it.

But the first thing I'm trying to fix is the Nic being dead on startup.
 
I am running it on a different motherboard but I had the same issues (No interface on boot and no bridge traffic) initially.
I solved them by using a 5.8 ubuntu kernel instead of the 5.4 which seems to be installed by default on the latest PVE version.

After the kernel upgrade, traffic on the bridge (both tagged and untagged) started working correctly as well as the ifup at startup.

It seems to be a problem with the igc drivers shipped with that kernel, so another possible route is to backport the newer igc driver from 5.8 to 5.4 but I didn't investigate that.

The only thing to remember is that using a custom compiled 5.8 kernel is not officially supported so don't use it for production workloads.

If you need, I can post the instructions on how to compile 5.8.
 
I am running it on a different motherboard but I had the same issues (No interface on boot and no bridge traffic) initially.
I solved them by using a 5.8 ubuntu kernel instead of the 5.4 which seems to be installed by default on the latest PVE version.

After the kernel upgrade, traffic on the bridge (both tagged and untagged) started working correctly as well as the ifup at startup.

It seems to be a problem with the igc drivers shipped with that kernel, so another possible route is to backport the newer igc driver from 5.8 to 5.4 but I didn't investigate that.

The only thing to remember is that using a custom compiled 5.8 kernel is not officially supported so don't use it for production workloads.

If you need, I can post the instructions on how to compile 5.8.
would love it. This is not a "production" machine. I was simply trying to setup a kvm workstation to run a Windows and MacOS vm at the same time. My Windows partition boots nicely (just with no network).
 
OK, instructions below:

Prerequisites:
  • Internet connected Debian 10 system
  • Run all commands as root

Few things to consider before doing this:
  1. This is NOT supported by proxmox
  2. This has NOT been tested with anything other than my own PC motherboard
  3. This procedure is NOT official and may contain errors, I've done this by myself in an afternoon. It's not a battle tested setup guide.
  4. If proxmox releases a new 5.8 firmware package, use it instead. It is probably going to work better than this.
  5. Every new 5.8 kernel version (especially the ones containing security patches) must be recompiled with this procedure. Keep an eye on the upstream Ubuntu kernel releases to make sure you do not end up with a vulnerable kernel.

Procedure:

Create a build folder
Code:
mkdir /root/proxmox

Add proxmox no-subscription debian repository on the system
Code:
wget http://download.proxmox.com/debian/proxmox-ve-release-6.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg
echo -n "deb http://download.proxmox.com/debian/pve buster pve-no-subscription" >> /etc/apt/sources.list

Add debian testing repository, specifically for the "dwarves" package and set apt to use debian stable packages by default
Code:
echo "# add testing repo for dwarves package" >> /etc/apt/sources.list
echo "deb http://deb.debian.org/debian/ bullseye main" >> /etc/apt/sources.list
echo 'APT::Default-Release "buster";' > /etc/apt/apt.conf.d/99defaultrelease
apt update

Install all required dependencies
Code:
apt install git gcc make g++ lintian python-sphinx debhelper dh-python dh-exec asciidoc-base bc bison flex libdw-dev libelf-dev libiberty-dev libnuma-dev libpve-common-perl libslang2-dev libssl-dev python-minimal lz4 rsync

Install dependencies from debian testing repository
Code:
apt install -t bullseye dwarves

Clone the proxmox kernel and the pve-firmware repository
Code:
cd /root/proxmox
git clone git://git.proxmox.com/git/pve-kernel.git && git clone git://git.proxmox.com/git/pve-firmware.git

Clone the desired Ubuntu kernel (see - https://wiki.ubuntu.com/Kernel/Dev/KernelGitGuide) as a git submodule (https://git-scm.com/book/en/v2/Git-Tools-Submodules), in this case we clone from the "groovy" release
Code:
cd /root/proxmox/pve-kernel/submodules
git submodule add git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/groovy

Modify the Makefile variables in /root/proxmox/pve-kernel/Makefile to reflect the new Ubuntu kernel values, specifically:
  1. Variable KERNEL_SRC with the name Ubuntu kernel release submodule. (groovy)
  2. Make sure variables KERNEL_MAJ , KERNEL_MIN , KERNEL_PATCHLEVEL are the same as the Ubuntu kernel Makefile. Compare the variable values with the Makefile under /root/proxmox/pve-kernel/submodules/groovy/Makefile
  3. Comment out the following lines in /root/proxmox/pve-kernel/Makefile:
  4. Code:
    #lintian ${DST_DEB}
    #lintian ${HDR_DEB}
    #lintian ${LINUX_TOOLS_DEB}
  5. Code:
    #.PHONY: upload
    #upload: ${DEBS}
    #    tar cf - ${DEBS}|ssh -X repoman@repo.proxmox.com -- upload --product pve,pmg --dist buster --arch ${ARCH}
=== OPTIONAL ===
I also had to remove some patch files not compatible with kernel 5.8, you can modify the code to make them work if you wish. either way, I removed the following files:
rm /root/proxmox/pve-kernel/patches/kernel/0002-*
rm /root/proxmox/pve-kernel/patches/kernel/0006-*
======

Once the above is completed, run:
Code:
cd /root/proxmox/pve-kernel
make

The compilation will take few minutes, depending on your computer performance.

Make may fail with a fwcheck error, if that happens do:

Code:
cp /root/proxmox/pve-kernel/fwlist-{KERNELVERSION}-pve /root/proxmox/pve-firmware
cd /root/proxmox/pve-firmware
make
cp /root/proxmox/pve-firmware/fwlist-{KERNELVERSION}-pve /root/proxmox/pve-kernel/fwlist-previous
cp /root/proxmox/pve-firmware/fwlist-{KERNELVERSION}-pve /root/proxmox/pve-kernel/build/fwlist-previous

Then re-run make inside the pve-kernel directory
Code:
cd /root/proxmox/pve-kernel
make

At the end of this process, you should have a seriers of .deb packages to install in your proxmox system.
The new kernel and firmware package should give you the latest IGC driver which may fix your issue (like it did with mine).
 
  • Like
Reactions: rykr
OK, instructions below:

Prerequisites:
  • Internet connected Debian 10 system
  • Run all commands as root

Few things to consider before doing this:
  1. This is NOT supported by proxmox
  2. This has NOT been tested with anything other than my own PC motherboard
  3. This procedure is NOT official and may contain errors, I've done this by myself in an afternoon. It's not a battle tested setup guide.
  4. If proxmox releases a new 5.8 firmware package, use it instead. It is probably going to work better than this.
  5. Every new 5.8 kernel version (especially the ones containing security patches) must be recompiled with this procedure. Keep an eye on the upstream Ubuntu kernel releases to make sure you do not end up with a vulnerable kernel.

Procedure:

Create a build folder
Code:
mkdir /root/proxmox

Add proxmox no-subscription debian repository on the system
Code:
wget http://download.proxmox.com/debian/proxmox-ve-release-6.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg
echo -n "deb http://download.proxmox.com/debian/pve buster pve-no-subscription" >> /etc/apt/sources.list

Add debian testing repository, specifically for the "dwarves" package and set apt to use debian stable packages by default
Code:
echo "# add testing repo for dwarves package" >> /etc/apt/sources.list
echo "deb http://deb.debian.org/debian/ bullseye main" >> /etc/apt/sources.list
echo 'APT::Default-Release "buster";' > /etc/apt/apt.conf.d/99defaultrelease
apt update

Install all required dependencies
Code:
apt install git gcc make g++ lintian python-sphinx debhelper dh-python dh-exec asciidoc-base bc bison flex libdw-dev libelf-dev libiberty-dev libnuma-dev libpve-common-perl libslang2-dev libssl-dev python-minimal lz4 rsync

Install dependencies from debian testing repository
Code:
apt install -t bullseye dwarves

Clone the proxmox kernel and the pve-firmware repository
Code:
cd /root/proxmox
git clone git://git.proxmox.com/git/pve-kernel.git && git clone git://git.proxmox.com/git/pve-firmware.git

Clone the desired Ubuntu kernel (see - https://wiki.ubuntu.com/Kernel/Dev/KernelGitGuide) as a git submodule (https://git-scm.com/book/en/v2/Git-Tools-Submodules), in this case we clone from the "groovy" release
Code:
cd /root/proxmox/pve-kernel/submodules
git submodule add git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/groovy

Modify the Makefile variables in /root/proxmox/pve-kernel/Makefile to reflect the new Ubuntu kernel values, specifically:
  1. Variable KERNEL_SRC with the name Ubuntu kernel release submodule. (groovy)
  2. Make sure variables KERNEL_MAJ , KERNEL_MIN , KERNEL_PATCHLEVEL are the same as the Ubuntu kernel Makefile. Compare the variable values with the Makefile under /root/proxmox/pve-kernel/submodules/groovy/Makefile
  3. Comment out the following lines in /root/proxmox/pve-kernel/Makefile:
  4. Code:
    #lintian ${DST_DEB}
    #lintian ${HDR_DEB}
    #lintian ${LINUX_TOOLS_DEB}
  5. Code:
    #.PHONY: upload
    #upload: ${DEBS}
    #    tar cf - ${DEBS}|ssh -X repoman@repo.proxmox.com -- upload --product pve,pmg --dist buster --arch ${ARCH}
=== OPTIONAL ===
I also had to remove some patch files not compatible with kernel 5.8, you can modify the code to make them work if you wish. either way, I removed the following files:
rm /root/proxmox/pve-kernel/patches/kernel/0002-*
rm /root/proxmox/pve-kernel/patches/kernel/0006-*
======

Once the above is completed, run:
Code:
cd /root/proxmox/pve-kernel
make

The compilation will take few minutes, depending on your computer performance.

Make may fail with a fwcheck error, if that happens do:

Code:
cp /root/proxmox/pve-kernel/fwlist-{KERNELVERSION}-pve /root/proxmox/pve-firmware
cd /root/proxmox/pve-firmware
make
cp /root/proxmox/pve-firmware/fwlist-{KERNELVERSION}-pve /root/proxmox/pve-kernel/fwlist-previous
cp /root/proxmox/pve-firmware/fwlist-{KERNELVERSION}-pve /root/proxmox/pve-kernel/build/fwlist-previous

Then re-run make inside the pve-kernel directory
Code:
cd /root/proxmox/pve-kernel
make

At the end of this process, you should have a seriers of .deb packages to install in your proxmox system.
The new kernel and firmware package should give you the latest IGC driver which may fix your issue (like it did with mine).
thanks for the detailed instructions. I was able to get proxmox working!
 
Same here limited to 100 Mbps on Proxmox only. I try to installed Debian and Ubuntu and I'm getting good result 1000Mbps.
It's more related to Proxmox and the i225v working together....
I didn't find a solution to this issue yet,
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!