[TUTORIAL] Realtek 8125 NIC not working on Proxmox with X870E motherboard (no network)

If the kernel does not load the driver, this actually means that the driver for the device does not feel addressed.
Unfortunately I can't tell you why this is the case and I have a different motherboard so I can't reproduce it.
I would recommend that you stick with the older kernel for the time being and try the latest kernel as soon as new kernels are released by us.
 
So Proxmox VE9 just released, which uses Kernel 6.14.8 as default.
I will try this update later today to check if the Realtek 8125 is working without any additional installation of drivers.

VE 9.0
 
So Proxmox VE9 just released, which uses Kernel 6.14.8 as default.
I will try this update later today to check if the Realtek 8125 is working without any additional installation of drivers.

VE 9.0
I have a similar configuration and am really excited. It would be great if you could share the result!
:)
 
So I got it working, but it wasn't exactly a walk in the park. This is mainly because the way I got it working in the past was a bit more convoluted than the way described in the topic here (see end of post).

What I got after I updated to PVE9 was no working NIC. Possibly a naming problem? So when i input lspci -nnv i got:

01:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller [10ec:8125] (rev 0c)
Subsystem: ASUSTeK Computer Inc. Device [1043:88e8]
...
Capabilities: [208] L1 PM Substates
Capabilities: [218] Vendor Specific Information: ID=0002 Rev=4 Len=100 <?>
Kernel modules: r8169

Note here: no "Kernel driver in use: r8169 or r8125"

After this, I first remove the dpkg packages I installed to get the nic working previously:

dkms status
dkms remove -m [modulename] -v [version] (9.15.00) --all
(without -all i got an error describing ignored because incompatible kernel).
Then still no nic. Reading back on my past install process, I noticed i blacklisted the original driver package (r8169). Once I remove the blacklist file and rebooted (rm /etc/modprobe.d/blacklist-r8169.conf), the NIC was visible when I input "ip a"

> lspci -nnv
01:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller [10ec:8125] (rev 0c)
Subsystem: ASUSTeK Computer Inc. Device [1043:88e8]
.....
Capabilities: [218] Vendor Specific Information: ID=0002 Rev=4 Len=100 <?>
[B] Kernel driver in use: r8169[/B]
Kernel modules: r8169

> ip a
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master vmbr0 state UP group default qlen 1000
link/ether 48:21:0b:dd:ee:ff brd ff:ff:ff:ff:ff:ff

and the whole thing was working again. I'm not sure whether it's possible to do all this without KVM access, physical or otherwise. one little slip-up will leave you shut out.

Hope this helps you.




What I did to get it working in PVE8 some months ago (link):
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list && \
sed -i "s/^deb/#deb/g" /etc/apt/sources.list.d/{pve-enterprise.list,ceph.list} && \
apt update && apt full-upgrade -y && \
echo 'grub-efi-amd64 grub2/force_efi_extra_removable boolean true' | debconf-set-selections && \
apt install --reinstall -y grub-efi-amd64 && \
reboot now


apt install -y dkms build-essential pve-headers-$(uname -r) && \
wget -qO realtek-r8125.deb $(wget -qO- https://api.github.com/repos/awesometic/realtek-r8125-dkms/releases/latest | grep -oP '(?<="browser_download_url": ")[^"]*amd64.deb') && \
dpkg -i realtek-r8125.deb && \
echo "blacklist r8169" > /etc/modprobe.d/blacklist-r8169.conf && \
update-initramfs -u && \
reboot now
 
Last edited:
  • Like
Reactions: hd-- and donhwyo
Hi @mauzer

Thank you for sharing your experience!

Do you know if the driver realtek-r8125.deb was successfully compiled with the new kernel?

If not, then what happened makes sense:
New kernel, realtek-r8125 driver was not compiled, you had blocked the r8169 driver. So no more driver at all.
Then you uninstalled the realtek-r8125 driver and allowed the r8169 driver to be loaded and it now addresses the network card.

How does the r8169 driver work with the card? Which chipset do you have exactly?

I read the update instructions and the part about naming the network cards worries me. I have a firewall installed and then I may have to reassign all the network cards/reinstall the firewall. That would take a lot of time and nerves. I don't have either at the moment... :-(
 
Picked up a 4 port nic recently with Realtek 8125 and it's been a bit of a headache trying to get it to work or do anything these past few days. When setting up linux-bridges with vm's it successfully creates a bridge and the vm can use it but any vm i load the network connection just keeps failing to connect. Had a chat with chatgpt and got a sort of working guide created to get the card in Proxmox VE 8.4-1 but i still can't get vm's to get a connection.

The guide i have is below if it's of use for anyone using the 8125 chipset

1 - Wget the following repository key

wget -O- http://download.proxmox.com/debian/proxmox-release-bookworm.gpg | gpg --dearmor > /usr/share/keyrings/proxmox-archive-keyring.gpg

2 - Echo the following to add the repository

echo "deb [signed-by=/usr/share/keyrings/proxmox-archive-keyring.gpg] http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list

3 - Update system to see new repository

apt update

4 - Install earlier kernal

apt install pve-kernel-6.2 pve-headers-6.2

5 - System reboot

reboot

6 - Change grub kernal

when booting up under grub change to 6.2.16-20-pve

7 - Verify kernal version is 6.2.16-20

uname -r

8 - Install dkms build

apt install -y dkms build-essential pve-headers-$(uname -r) wget

9 - Wget the .deb driver

wget https://github.com/awesometic/realt....01-1/realtek-r8125-dkms_9.014.01-1_amd64.deb

10 - Install the .deb driver

dpkg -i realtek-r8125-dkms_9.014.01-1_amd64.deb

11 - Load the new driver

modprobe r8125

12 - Verify the driver is loaded

lsmod | grep r8125

12 - Reboot system

reboot

13 - You can now check if nics are up and running

ip link

I did also blacklist r8169 after doing the steps above but due to Proxmox using the onboard lan (which is also realtek) of the motherboard (i want to reserve the 4 ports for vm's) the Proxmox web gui is no longer accessable so i'm at a dead end of how to proceed.
 
Last edited:
Late reply to this thread but I finally got this working with the new 6.14 kernel

secret recipie was.
# Remove any existing DKMS installations
dkms remove realtek-r8125/9.016.01 --all

# Clean up any conflicting modules
rm -f /lib/modules/$(uname -r)/updates/dkms/r8125.ko
rm -f /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/r8125.ko

echo "blacklist r8169" > /etc/modprobe.d/blacklist-r8169.conf


# Rebuild module dependencies
depmod -a

# Now reinstall the DKMS package because the opensource driver is still better than the kernel module.

wget https://github.com/awesometic/realt....01-1/realtek-r8125-dkms_9.016.01-1_amd64.deb
dpkg -i realtek-r8125-dkms_9.016.01-1_amd64.deb

root@pve:~# ethtool enp6s0
Settings for enp6s0:
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
2500baseT/Full

Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
2500baseT/Full
Link partner advertised link modes: 100baseT/Half 100baseT/Full
1000baseT/Full
2500baseT/Full

Speed: 2500Mb/s
Duplex: Full
Auto-negotiation: on
Port: Twisted Pair
 
Thanks for your work on this. This is over my head so please excuse the dumb questions.

I upgraded my pve to 9. I passed threw the 8125 to an openvpn vm. It worked fine before and after after. I see your claim that "opensource driver is still better than the kernel module.".

I assume pve is using the 8169 driver.
Code:
root@pve:~# lsmod |grep r81
r8169                 118784  0
It works but I am hoping openvpn might run a bit better with the r8125 module. Maybe it is just openvpn's age. lol

On the openwrt has 2 modules available. I am using the one with "receive side scalling" (RSS).
Code:
root@OpenWrt:~# lsmod |grep r81
r8125                 266240  0

Do you know if the improved performance is due to RSS?

I tried to test the 8169 driver with this.
Code:
Testing Receive Side Scaling (RSS) on Linux involves verifying its functionality in distributing network traffic across multiple CPU cores 
to improve network performance. This process typically involves:

    Verifying RSS Configuration:
        Confirming that RSS is enabled in the network adapter driver and that the hardware supports multi-queue functionality.
        Checking the number of configured receive queues (RX queues) for the network interface using tools like
        ethtool -l <interface_name>.
My r8125 does not have a <interface_name> that I can find. Probably because it is passed through? Anybody have a couple of minutes to try this?

Thanks
 
Last edited:
@l0cut15 - Why do you think the r8125 driver works better than the r8169? Do you have any experience?
I have an older install and I couldnt get the e8169 driver to modprobe, If it works that great. The latest r8125 driver is stable supporting 2.5ghz for me so its an option at the very least. This is for a home lab and my platform is an old gaming motherboard not a proper server. ROG Crosshair VIII Dark Hero.

─$ iperf3 -p 1099 -c 10.10.22.10
Connecting to host 10.10.22.10, port 1099
[ 5] local 10.10.22.209 port 54698 connected to 10.10.22.10 port 1099
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.01 sec 283 MBytes 2.36 Gbits/sec
[ 5] 1.01-2.00 sec 278 MBytes 2.34 Gbits/sec
[ 5] 2.00-3.00 sec 280 MBytes 2.34 Gbits/sec
[ 5] 3.00-4.01 sec 280 MBytes 2.34 Gbits/sec
[ 5] 4.01-5.00 sec 279 MBytes 2.34 Gbits/sec
 
@ donhyyo, the github diver is dkms so it is more flexible when it comes to kernel versions vs the official driver. I'm not sure if that helps in your use case.
 
@ l0cut15 I tried your instructions But even tho r8169 is black listed it still loads it.
Code:
root@pve:~# lsmod |grep r81
r8169                 122880  0

Thank
 
I managed to get it running. I can not see any measurable difference.
Your mileage may very.