NO-CARRIER network link problem with USB 2.5 Gbit LAN adapter (Realtek RTL8156B) on x86_64

Hi,

I’m not sure whether this is a Manjaro based problem or one with the kernel but please let me first explain.

I’m facing some comparable problems with a 2.5 Gbit USB LAN adapter with Realtek chip (RTL8156B) on a x86_64 system like in the thread by @johntdavis84 :

Related is also the following thread (again for ARM and created by @johntdavis84 ):

In my setup the USB adapter is directly connected to a USB 3 port of the mainboard of a desktop PC. The LAN cable is connected to a 10 Gbit port of an unmanaged NETGEAR switch supporting 2.5 Gbit.

It should be noted that on windows the adapter additionally creates a drive where a driver installer is located.

I faced the connection problems with the recent stable kernel: 5.15.12-1-MANJARO #1 SMP PREEMPT Wed Dec 29 18:08:07 UTC 2021 x86_64 GNU/Linux

dmesg on connecting USB LAN adapter:

[214896.520221] usb 2-4: new SuperSpeed USB device number 2 using xhci_hcd
[214896.548041] usb 2-4: New USB device found, idVendor=0bda, idProduct=8156, bcdDevice=31.00
[214896.548048] usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=6
[214896.548051] usb 2-4: Product: USB 10/100/1G/2.5G LAN
[214896.548052] usb 2-4: Manufacturer: Realtek
[214896.548054] usb 2-4: SerialNumber: 001000001
[214897.152584] usbcore: registered new interface driver cdc_ether
[214897.195646] cdc_ncm 2-4:2.0: MAC-Address:
[214897.195650] cdc_ncm 2-4:2.0: setting rx_max = 16384
[214897.196663] cdc_ncm 2-4:2.0: setting tx_max = 16384
[214897.197636] cdc_ncm 2-4:2.0 eth0: register 'cdc_ncm' at usb-0000:02:00.0-4, CDC NCM,
[214897.197678] usbcore: registered new interface driver cdc_ncm
[214897.202912] usbcore: registered new interface driver cdc_wdm
[214897.206051] usbcore: registered new interface driver cdc_mbim
[214897.212237] cdc_ncm 2-4:2.0 enp2s0f0u4c2: renamed from eth0

The LAN cable is fine but even with connected cable “NO-CARRIER” is reported by “ip addr”. Interestingly, this dongle just works fine (plug and play) with a fully updated Ubuntu Server 21.10. (x86_64) system. Additionally, I tested the DKMS module from AUR with my Manjaro system: r8152-dkms . It actually makes the adapter work but very strange behavior occurs whenever the connected PC is shutdown or sent to standby. It causes the LAN switch to no longer work correctly - all directly connected devices can’t communicate with each other anymore until the adapter is plugged out or the PC is switched on again. I’m not sure why this happens and I did no further investigations since this doesn’t occur with the Ubuntu server system (same type of switch) and thus seems to be some specific problem with this kernel module and USB LAN adapter. Since the used chip of the adapter is supported by newer kernels anyway, this seems also to be no clean solution and should work out of the box like with Ubuntu Server.

I also found a recent public mailing list where obviously a kernel developer seems to be involved:
https://lore.kernel.org/netdev/20211227182124.5cbc0d07@kicinski-fedora-PC1C0HJN.hsd1.ca.comcast.net/#t

In this case the mentioned problem occured on NixOS with kernel 5.15.10.

After reading this, I tried to force the kernel to use a module for the network card. It is not necessary to blacklist the modules for testing so I at first just unload them. With the x86_64 kernel the r8152 driver is already just included in the kernel as module (m). With following commands the USB adapter just works fine using the r8152 module - most importantly for me, my switch is also not starting to behave strange during PC standbys.

sudo -i

rmmod cdc_mbim
rmmod cdc_ncm
rmmod cdc_ether

modprobe r8152

echo 0bda 8156 > /sys/bus/usb/drivers/r8152/new_id

dmesg after executing the commands:

[ 125.173927] usbcore: deregistering interface driver cdc_ether
[ 134.271017] usbcore: registered new interface driver r8152
[ 163.214996] usb 2-2: reset SuperSpeed USB device number 2 using xhci_hcd
[ 163.317506] r8152 2-2:1.0: load rtl8156b-2 v1 04/15/21 successfully
[ 163.443785] r8152 2-2:1.0 (unnamed net_device) (uninitialized): netif_napi_add() called with weight 256
[ 163.444053] r8152 2-2:1.0 eth0: v1.12.11
[ 163.454757] r8152 2-2:1.0 enp9s0f0u2: renamed from eth0
[ 167.402285] IPv6: ADDRCONF(NETDEV_CHANGE): enp9s0f0u2: link becomes ready
[ 167.406052] r8152 2-2:1.0 enp9s0f0u2: carrier on

Since I’m no expert with Linux kernel modules my question now is whether this problem should be directly reported to kernel developers (maybe by answering to the mentioned mailing list) or whether this is some distribution specific problem (might be something with the kernel configuration) as it seems not to occur with recent Ubuntu Server versions.

I hope I could sufficiently explain the problem to you and you can help with it. If you need further information please don’t hesitate to ask me.

I recently encountered a similar problem … I reinstalled my laptop and my Realtek 8153-based USB LAN adapter (classically 1 Gbps) behaved exactly the same way.

After a bit of research, I found an adjustment in my original system (which I had already forgotten :bulb: ) - namely to blacklist the respective adapter from the TLP.

It was enough to create a file /etc/tlp.d/54-blacklist-usbeth.conf with the following content

USB_BLACKLIST=“0bda:8153”

and since then carrier is stable again.

Maybe this will help you too (of course you need change the USB id to your adapter).

EDIT: Just for the record - the source of the solution is https://askubuntu.com/questions/1044127/usb-ethernet-adapter-realtek-r8153-keeps-disconnecting

1 Like

Hi @ivoshm ,

Thank you very much for your very fast answer.
I just tried your solution and it also works with my desktop PC. :+1:

I was unaware that such a problem could be caused by some energy saving service. TLP is probably not installed on the Ubuntu server system.

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