How to get ethernet working on install for a motherboard using Realtek 8125 2.5Gbps chip?

The original thread was created back in May 2020 - as a result of a lot of enthusiast grade boards being released with this Realtek 2.5Gbps NIC:
https://forums.opensuse.org/showthread.php/540275-How-to-get-ethernet-working-on-install-for-a-motherboard-using-Realtek-8125-2-5Gbps-chip

At that time the kernel had in theory supported the 8125 chip since kernel5.4, but the kernal firmware for the NIC hadn’t been published, so it did not work.
Partly as a result of that thread - and because of the much appreciated work of Malcom Lewis - it appeared that the kernel firmware was published into the kernel as of 5.9.

I’ve had a bear of a time in the last few months with this computer - but with all broken hardware bits replaced i have no bumped into a repeated BSOD issue with Win10** which won’t be fixed until the BSOD release in May this year.
So, to check this BSOD isn’t linked to a hardware problem I thought i’d try TW again, and it installed great.
It even seemed to succeed in adding repos during the install process.
But once i’m into my newly installed TW system (2021.01.30), I find that I don’t have any internet access.
Firefox loads blank page - and taskbar shows network transfer of 0-20 bytes.
n.b. Network works fine from the Win10 install on this same hardware: “hi!”

Has anyone successfully got the ethernet working on a board with the 8125 NIC?
And if so, did they have to work to get it to work - or did it ‘just work’?

Below is some konsole info that I hope will be informative (no idea really):

localhost:/home/myname # hwinfo --short --netcard
network:                                                        
  enp38s0              Realtek RTL8125 2.5GbE Controller
  wlo1                 Intel Wi-Fi 6 AX200
  
localhost:/home/myname # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp38s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 2c:f1:5d:9f:11:f2 brd ff:ff:ff:ff:ff:ff
    inet6 fe79::df4a:ab29:81df:7a81/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: wlo1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether b7:af:d7:e4:c4:0b brd ff:ff:ff:ff:ff:ff permaddr c9:e2:63:ff:34:ef
    altname wlp40s0

    localhost:/home/myname # ip -s link show enp38s0
2: enp38s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 2c:f1:5d:9f:11:f2 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    149608     1467     0       69      0       176     
    TX: bytes  packets  errors  dropped carrier collsns 
    3802       28       0       0       0       0  
    
localhost:/home/myname # ethtool enp38s0
Settings for enp38s0:
        Supported ports:  TP    MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
                                2500baseT/Full
        Supported pause frame use: Symmetric Receive-only
        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 Receive-only
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                             100baseT/Half 100baseT/Full
                                             1000baseT/Full
        Link partner advertised pause frame use: Symmetric Receive-only
        Link partner advertised auto-negotiation: Yes
        Link partner advertised FEC modes: Not reported
        Speed: 1000Mb/s
        Duplex: Full
        Auto-negotiation: on
        master-slave cfg: preferred slave
        master-slave status: master
        Port: MII
        PHYAD: 0
        Transceiver: external
        Supports Wake-on: pumbg
        Wake-on: d
        Link detected: yes

        localhost:/home/myname # ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp38s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 2c:f1:5d:9f:11:f2 brd ff:ff:ff:ff:ff:ff
3: wlo1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DORMANT group default qlen 1000
    link/ether 51:ba:a0:92:75:15 brd ff:ff:ff:ff:ff:ff permaddr c9:e2:63:ff:34:ef
    altname wlp40s0

    localhost:/home/myname # dmesg | grep eth
    6.551506] systemd[1]: /usr/lib/systemd/system/gpm.service:11: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    6.553817] systemd[1]: /usr/lib/systemd/system/mcelog.service:11: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    6.790681] r8169 0000:26:00.0 eth0: RTL8125B, 2c:f1:5d:9f:11:f2, XID 641, IRQ 94
    6.790683] r8169 0000:26:00.0 eth0: jumbo features [frames: 9194 bytes, tx checksumming: ko]
    7.190784] r8169 0000:26:00.0 enp38s0: renamed from eth0

** https://forum.sircles.net/posts/t1497-The-database-format-feature-version-9180--0x23dc--could-not-be-used-due-to-the-current-database/page2

This is the standard flow I recommend when one is assuming to have problems to connect to the ineternet:

You check from bottom to top:

  1. Is the NIC up with an IP address?
    
ip addr
  1. Can you connect to another system on your LAN?
    
ping -c1 <IP-address of your router>

(I hope you know that address)

  1. Do you have a default route to the Internet?
    
ip route
  1. Can you connect to a system on the internet?
    
ping -c1 195.135.221.161

and/or

ping -c1 2001:67c:2178:8::161
  1. Can you resolve host/domain names?
    
ping -c1 forums.opensuse.org

Take care. As soon a one step fails, that must be resolved first. It is useless to go to the next step before it is resolved.

So start with 1. and do not hesitate to post the output here to get help on the interpretation.

You did already step 1. It shows an UP enp38s0 device, with only an IPv6 IP address.

**Stage #2

localhost:/home/myname #**** **ping -c1 192.168.1.1 
ping: connect: Network is unreachable

I assume these two snippets should in fact be one?

Well, when that is all correct (including the IP address of your router), it seems that your NIC indeed has no IPv4 addtress.

How did you configure it:
Wicked or NetworkManager?
DHCP or not?

Thank you.
Yes, they should be connected, seems to be a futz in the formatting.

I can’t say i really did configure the network cards, any more than i normally do…
…which is to say that i don’t normally do anything, i just roll through the install on defaults and these things normally work.

I believe it is running network manager, and was installed with a network cable.
And i did accept the installer option to configure repositories, which i presume would be a trigger if there were network problems as it would fail to connect up to them.
But the install sailed through that process and took me on to the final software selection bit.

So, you do not really know how it is configured.

Please check YaST > System > Network Settings. Then the Global Options tab. The first item is something like "Network setup method. What does it say?

Network Manager.
Name “RTL8125 2,5Gbe Controller” / IP Address “NONE” / Device “enp38s0” / Note “enslaved in br0”

Ok, that is something. I am not a NM user, thus I hope others will jump in here.

What can you do with the NM applet in the desktop of the end-user?

Also, I am unsure about that Note “enslaved in br0”. Looks like Virtualization or so?

Post as User:

LANG=C nmcli g
LANG=C nmcli d
LANG=C nmcli c
LANG=C nmcli n

thank you both:

myname@localhost:~> LANG=C nmcli g
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN    
connected  full          enabled  enabled  enabled  enabled 

myname@localhost:~> LANG=C nmcli d
DEVICE        TYPE      STATE         CONNECTION 
enp38s0       ethernet  connected     enp38s0    
wlo1          wifi      disconnected  --         
p2p-dev-wlo1  wifi-p2p  disconnected  --         
lo            loopback  unmanaged     --      

myname@localhost:~> LANG=C nmcli c
NAME        UUID                                  TYPE      DEVICE  
enp38s0     80e5fbd2-32fe-3162-b192-44f4ad16f922  ethernet  enp38s0 
dlink-22JU  17e42832-befd-4ae2-90d2-657aecee612e  wifi      --      

myname@localhost:~> LANG=C nmcli n
enabled

i do have wifi - as above - but the connection is poor, hence the desire for ethernet.

Can you try this rpm:
https://download.opensuse.org/repositories/home:/Sauerland:/hardware/openSUSE_Tumbleweed/x86_64/r8125-kmp-default-9.004.01_k5.10.9_1-5.2.x86_64.rpm

Its an rpm build from the official Realtek driver.

Yes, but, there’s a little bit missing –

  • There’s an Intel Wi-Fi interface on your system – if you enable a WLAN connection, can you access the Internet?
  • Also, can you please confirm that, the Kernel driver for the Realtek RTL8125 interface has been loaded and, that it’s not in the Kernel’s black-list?

Some commands to help you discover this information:

Find out if the driver has been blacklisted:

 > grep '8125' /etc/modprobe.d/*

Find out if the driver has been loaded:

 > lsmod | grep '8125'

Check the PCI view of the Ethernet interface – use either “sudo” or, login as the user “root”:
– first, determine the PCI address of the card –

 # lspci | grep -i 'ethernet'

– The PCI address is the left-most field of the output line – something like the string “03:00.0
– Then, take a look at the detailed information:

 # lspci -s «*PCI address*» -v

– Take particular notice of “Kernel driver in use:” and “Kernel modules:” – “Subsystem:” should indicate the Mainboard’s view of the device.

[HR][/HR]The “lsmod” output may mention a “realtek” module – “ lsmod | grep -iE ‘r8125|realtek’ ” will indicate if the Realtek SND HDA Codec has been loaded or, not …

Discover tried and dailed with a rather cryptic “Internal Error”.

So I tried with YAST and got this:

Error: INVALID:r8125-kmp-default-9.004.01_k5.10.9_1-5.2.x86_64 (file-37688e6e): Signature verification failed [4-Signatures public key is not available]

     Header V3 RSA/SHA256 Signature, key ID e45195d5: NOKEY

     Header SHA256 digest: OK

     Header SHA1 digest: OK
     Payload SHA256 digest: OK
     V3 RSA/SHA256 Signature, key ID e45195d5: NOKEY

     MD5 digest: OK


but i ignored the error, the package installed fine. and the network port works.

thank you both!

The error is because zypper can not solve the key.
Thats normal by an package downloaded and installed.

You can enable the Repo and get every time an update, if there is a new Tumbleweed Version.

A zypper command to do so:

zypper ar -f https://download.opensuse.org/repositories/home:/Sauerland:/hardware/openSUSE_Tumbleweed/ Sauerland-tumbleweed

Understood, thank you.
It did install once i skipped the warning.

Should YaST have properly loaded the driver during the OS install process?
Just wondering if a bug report could/should be filed…

I have have had the experience, that some Realtek Cards work with the driver shipped by the kernel and some not.

But they work with the drivers from Realtek.

As of the last kernel update a new file has appeared on the download page for the r8125 r8168 network drivers:

r8125-ueficert-9.006.04-5.3.x86_64.rpm (9.74 KB)
r8168-ueficert-8.049.02-66.3.x86_64.rpm (10.2 KB)

What is it? i.e. I can see its eufi related, but why does boot protocol care about network drivers…
Do i need to care about it? i.e. I have a fresh TW install with no network, do i have to use this too to get network access…
Is there any sequence to when it should be installed? i.e. before or after what i assume is the main driver rpm…

https://build.opensuse.org/package/binaries/home:Sauerland:hardware/r8125/openSUSE_Tumbleweed
https://build.opensuse.org/package/binaries/home:Sauerland:hardware/r8168/openSUSE_Tumbleweed

Cheers

I have changed my builds to get working with secure boot in UEFI, that are the files with the cert for UEFI.
They have both (and others also) the same cert because the cert is depending on my Repo.

You have to enroll them in UEFI when using secure boot.

Thanks for the swift reply.

From the perspective of a brand new install, do I simply:

  1. first - install r8125-kmp-default-9.006.04_k5.14.5_1-5.3.x86_64.rpm (665 KB)
  2. then - install r8125-ueficert-9.006.04-5.3.x86_64.rpm (9.74 KB)

Et, voila! Working network.
And is this only necessary if I want EUFI [with] secureboot?

But nowadays RTL8125 works OK with TW and Leap 15.3 without installing additional drivers?