Realtek RTL810xE Ethernet not working after Kernel 5.4.31

Dear all,

I have updated my kernel from 5.4.28 to 5.4.31 and my ethernet adapter stopped working (I use it to share my connection with a desktop in these home office days. If I go back to 4.19 it works normally, but I would really like to stay on 5.4. As you guys can see bellow, network device 2 shows no driver.

System:    Host: jaircf-manjaro Kernel: 5.4.31-1-MANJARO x86_64 bits: 64 compiler: gcc v: 9.3.0 Desktop: KDE Plasma 5.18.4 
           Distro: Manjaro Linux 
Machine:   Type: Laptop System: Dell product: Inspiron 5557 v: N/A serial: <root required> 
           Mobo: Dell model: 0WT51R v: A00 serial: <root required> UEFI [Legacy]: Dell v: 1.5.0 date: 11/26/2018 
Battery:   ID-1: BAT0 charge: 26.7 Wh condition: 31.2/43.8 Wh (71%) model: LGC-LGC3.95 DELL 9JF9364 status: Discharging 
CPU:       Topology: Dual Core model: Intel Core i7-6500U bits: 64 type: MT MCP arch: Skylake rev: 3 L2 cache: 4096 KiB 
           flags: avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx bogomips: 20810 
           Speed: 800 MHz min/max: 400/3100 MHz Core speeds (MHz): 1: 801 2: 800 3: 800 4: 801 
Graphics:  Device-1: Intel Skylake GT2 [HD Graphics 520] vendor: Dell driver: i915 v: kernel bus ID: 00:02.0 
           Device-2: NVIDIA GM108M [GeForce 930M] vendor: Dell driver: nvidia v: 430.64 bus ID: 01:00.0 
           Display: x11 server: X.Org 1.20.8 driver: modesetting resolution: 1920x1080~60Hz 
           OpenGL: renderer: Mesa Intel HD Graphics 520 (SKL GT2) v: 4.6 Mesa 20.0.4 direct render: Yes 
Audio:     Device-1: Intel Sunrise Point-LP HD Audio vendor: Dell driver: snd_hda_intel v: kernel bus ID: 00:1f.3 
           Sound Server: ALSA v: k5.4.31-1-MANJARO 
Network:   Device-1: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter vendor: Dell driver: ath10k_pci v: kernel 
           port: e000 bus ID: 02:00.0 
           IF: wlp2s0 state: up mac: 94:53:30:fe:e2:f7 
           Device-2: Realtek RTL810xE PCI Express Fast Ethernet vendor: Dell driver: N/A port: d000 bus ID: 03:00.0 
           Device-3: Qualcomm Atheros type: USB driver: btusb bus ID: 1-8:4 
Drives:    Local Storage: total: 931.51 GiB used: 345.35 GiB (37.1%) 
           ID-1: /dev/sda vendor: Samsung model: SSD 860 EVO 1TB size: 931.51 GiB 
Partition: ID-1: / size: 195.86 GiB used: 43.44 GiB (22.2%) fs: ext4 dev: /dev/sda7 
           ID-2: swap-1 size: 976.0 MiB used: 0 KiB (0.0%) fs: swap dev: /dev/sda5 
Sensors:   System Temperatures: cpu: 49.0 C mobo: 40.0 C sodimm: 40.0 C 
           Fan Speeds (RPM): cpu: 0 
Info:      Processes: 213 Uptime: 32m Memory: 15.35 GiB used: 2.03 GiB (13.2%) Init: systemd Compilers: gcc: 9.3.0 Shell: bash 
           v: 5.0.16 inxi: 3.0.37 

I have already tried:

  • Countless times sudo modprobe r8169
  • Blacklist r8169 and install r8168
  • Remove and reinstal kernel 5.4.31
  • Verify if it was blacklisted (it's not)
[$ grep -r "blacklist\|install\|options"  /etc/modprobe.d/ /etc/modules-load.d/ /usr/lib/modprobe.d/ 
/etc/modprobe.d/mhwd-nvidia.conf:blacklist nouveau
/etc/modprobe.d/mhwd-nvidia.conf:blacklist nvidia
/etc/modprobe.d/mhwd-nvidia.conf:blacklist nvidia-modeset
/etc/modprobe.d/mhwd-nvidia.conf:blacklist nvidia-uvm
/etc/modprobe.d/mhwd-nvidia.conf:blacklist ttm
/etc/modprobe.d/mhwd-nvidia.conf:blacklist drm_kms_helper
/etc/modprobe.d/mhwd-nvidia.conf:blacklist drm
/etc/modprobe.d/mhwd-bbswitch.conf:options bbswitch load_state=0 unload_state=0
/usr/lib/modprobe.d/nvdimm-security.conf:install libnvdimm /usr/bin/ndctl load-keys ; /sbin/modprobe --ignore-install libnvdimm $CMDLINE_OPTS
/usr/lib/modprobe.d/systemd.conf:options bonding max_bonds=0
/usr/lib/modprobe.d/systemd.conf:options dummy numdummies=0
/usr/lib/modprobe.d/optimus-manager.conf:blacklist nouveau
/usr/lib/modprobe.d/optimus-manager.conf:blacklist nvidia_drm
/usr/lib/modprobe.d/optimus-manager.conf:blacklist nvidia_uvm
/usr/lib/modprobe.d/optimus-manager.conf:blacklist nvidia_modeset
/usr/lib/modprobe.d/optimus-manager.conf:blacklist nvidia
/usr/lib/modprobe.d/uvesafb.conf:# options uvesafb mode=<xres>x<yres>[-<bpp>][@<refresh>] scroll=<ywrap|ypan|redraw> ...
/usr/lib/modprobe.d/uvesafb.conf:options uvesafb mode_option=1024x768-32 scroll=ywrap
/usr/lib/modprobe.d/bluetooth-usb.conf:options btusb reset=1
/usr/lib/modprobe.d/bumblebee.conf:blacklist nvidia
/usr/lib/modprobe.d/bumblebee.conf:blacklist nvidia-drm
/usr/lib/modprobe.d/bumblebee.conf:blacklist nvidia-modeset
/usr/lib/modprobe.d/bumblebee.conf:blacklist nvidia-uvm
/usr/lib/modprobe.d/bumblebee.conf:blacklist nouveau

Ideas?

Seems like there is a recent bug with some hardware revisions of the r8168 adapter. My versions seem unaffected, it seems to only be a small subset of hardware that is affected.

Pardon my newbie-ness (is this a word?), as I'm still getting used to Manjaro. I see that it is solved, I see the code, but I fail to understand exactly what I should do. :sweat_smile:

CONFIRMED ISSUE

I installed Manjaro XFCE yesterday and have same issue after update.

lspci -v

03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL810xE PCI Express Fast Ethernet controller (rev 05)
Subsystem: Lenovo RTL810xE PCI Express Fast Ethernet controller
Flags: fast devsel, IRQ 17
I/O ports at 2000 [size=256]
Memory at e0404000 (64-bit, prefetchable) [size=4K]
Memory at e0400000 (64-bit, prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [70] Express Endpoint, MSI 01
Capabilities: [b0] MSI-X: Enable- Count=4 Masked-
Capabilities: [d0] Vital Product Data
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Virtual Channel
Capabilities: [160] Device Serial Number db-01-00-00-36-4c-e0-00
Kernel modules: r8169

uname -r
5.4.31-1-MANJARO

OK, the RTL810xE is not even the same things as the RTL8168 chip.

Yes, there is a know regression with the latest r8169 driver in the 5.4.xx kernel series. A commit was introduced that causes the realtek driver to fail if there is no dedicated phy driver available. Unfortunatly the r8169 driver requires the realtek driver to be loaded first.

Here is the commit that is causing the issue:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/diff/drivers/net/phy/realtek.c?id=v5.4.32&id2=v5.4.31

For now, it is advisable to downgrade the kernel to 4.19.x..

NOTE: You could also possibly try using the realtek third party dkms driver from the AUR:
https://aur.archlinux.org/packages/r8101-dkms/
However, I have not tried this, and thus can not verify it will work. As with anything from the AUR, it is use at your own risk.

1 Like

The referenced commit is the fix. Having said that 5.4.32 should be fine again on chip versions like RTL8105e with an integrated RTL8208 PHY.

My bad, I posted the wrong commit I meant to post this one:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=2e8c339b4946490a922a21aa8cd869c6cfad2023

With that said, waiting for the 5.4.32 kernel is not a solution, especially when you need Ethernet working now, because lets face it, wifi is just too darn slow. That and the fact that not all RTL810xE chips have a dedicated phy driver.

I have the same problem.

The solution, as you indicated, is to use the 4.19 kernel.

1 Like

I'm working quite hard to get the problem gone, work-a-round is to make refresh networking target and service like:

/usr/local/bin/refresh-network.sh

#!/bin/sh

command() {
        st=$1
        shift
        echo "$* .................."
        eval $*
        echo "$* ...... RV: $?"
        sleep $st
}

command 0 nmcli networking off
command 3 sudo systemctl stop NetworkManager
command 0 sudo ip link set enp3s0 down
command 0 sudo modprobe -r r8169
command 0 sudo modprobe r8169
command 0 sudo ip link set enp3s0 mode DEFAULT
command 0 sudo ip link set enp3s0 up
command 3 sudo systemctl start NetworkManager
command 0 nmcli networking on

refresh-network.service

#  SPDX-License-Identifier: LGPL-2.1+
#
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
[Unit]
Description=Refresh network
After=refresh-network.target
Before=multi-user.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/refresh-network.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

refresh-network.target

#  SPDX-License-Identifier: LGPL-2.1+
#
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Refresh network
After=network.target refresh-network.service
Before=multi-user.target
Requires=network.target

[Install]
WantedBy=refresh-network.service multi-user.target

Well, it appears that it is working on 5.4.33.

1 Like

Try my fix: R8168 - kernel 5.6.3 driver broken

update to Linux kernel 54 5.4.33-3, which had fixed the problem.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.

Forum kindly sponsored by