RTL8153 is a popular USB 3.0 to Gigabit ethernet converter chip, used by many prominent hardware manufatures like NVIDIA, Lenovo, TP-Link.
It's well supported by the Linux kernel, but the default r8152 module is rarely used, the generic
cdc_ether driver is loaded instead. There's another problem, sometimes the r8152 module shipped with kernel can't even detect newer varients of the RTL8153 chip.
So, here's how to install the latest driver for RTL8153 based USB Ethernet adapter.
This tutorial uses command line tools to compile and install the drivers, assuming you've some experience with the basic linux commands.
Get the driver source code
The first step is to download the latest rtl8153 linux driver source code from Realtek's website. Here's the link. In case the link is not working, just search the driver.
Note: Always use the latest driver, older drivers may not work with the latest linux kernel, even after successfully compiling.
The driver is a tar.bz2 archive, let's unpack the driver, assuming it's downloaded under the
cd ~/Downloads/ tar xf 0008-r8152.53-2.09.0.tar.bz2 cd r8152-2.09.0/
Here's 0008-r8152.53-2.09.0.tar.bz2 is the driver archives name, your's could be different. In this tutorial, I'm using the driver version is
126.96.36.199 , works fine with linux kernel 4.14.10.
Install necessary compiler tools
As I'm using Ubuntu currently, so the steps below is only for Ubuntu or other Debian based distributions.
First update the software repository and all the packages to avoid any package conflict.
sudo apt-get update && sudo apt-get upgrade
Now install the required packages.
sudo apt-get install libelf-dev build-essential linux-headers-`uname -r`
You can also install DKMS tools to automatically compile and install the driver module after any kernel update, but now I'm not going that way.
Compile the rtl8153 driver
First go to the driver source code directory, and run the
cd ~/Downloads/r8152-2.09.0/ # being sure make -j2
If there's no error message, then the driver compilation is successful. There should be a loadable kernel module r8152.ko, you can check it with
Now install the kernel module and run
sudo make install sudo depmod -a
Add a kernel module rule
To use the r8152 driver, you've to add a proper kernel module rule, which overrides the default wildcard entry in the
So, first you've to find out the ethernet adapters Vendor ID and Product ID, use the
lsusb command for that.
Unfortunately lsusb failed to show the device name I'm using, but I know it's 2357:0601, the vID and pID respectively.
After knowing the proper vendor ID and Product ID, create a file rtl_usb.conf under the
sudo nano /etc/modprobe.d/rtl_usb.conf # create the file
Then add a proper configuration text, something like below.
alias usb:v2357p0601d*dc*dsc*dp*ic*isc*ip*in* r8152
Note: You must change the vID and pID according to your USB NIC, for me it's 2357 and 0601 for this particular adapter, highlighted in blue.
sudo depmod -a command again to update the kernel module dependency file.
That should be enough to use the r8152 driver whenever any RTL8153 based USB to Ethernet device is plugged in.
Most of the RTL8153 chip based adapter are quite good, regardless of their manufacturer. And the best part is they works quite well on Linux, including single board computers like Raspberry Pi.
I've tested two of them, both reaches near the gigabit speed when connected to a USB 3.0 port. I used Iperf and SAMBA share to measure the speed, with Iperf the speed is around 920 to 940 Mbps. While file transfer speed over SAMBA easily gets over 80MB/s to 100MB/s, of course highly dependent on cable length.
So, that's all you need to do, should be pretty quick if you know what you're doing.