Realtek RTL8100E/RTL8101E/RTL8102E-GR NIC
All CentOS versions released after June 2008 include proper drivers for these chipsets so all the below information is obsolete. If run a recent CentOS version and you encounter issues with a Realtek wired network card, please consider installing the driver provided by Realtek and distributed as kmod by the ElRepo 3rd party repository. See https://wiki.centos.org/AdditionalResources/Repositories for details. |
Starting with Centos 5.2 the stock kernel offers support for this chipset via the r8169 driver. If possible please consider using Centos 5.2 instead of any of the methods described below. However apparently the driver only works for some revisions of the network cards. For the problematic cases one of the methods described below must be used. |
<<TableOfContents: execution failed [Argument "maxdepth" must be an integer value, not "[1]"] (see also the log)>>
1. Hardware
Any of the following 10/100M Fast Ethernet PCI Express NICs:
- RTL8100E
- RTL8101E
- RTL8102E-GR
The r8101 driver is known to work on:
- ECS 945GCT-M/133
MSI Wind U100 Note: this notebook is known to not work with the stock kernel driver, even from Centos 5.2
Acer Aspire One Note: this notebook too is known to not work with the stock kernel driver from any Centos version
Realtek PCI-Express NIC Described here: Realtek RTL8100E/8101E/8102E-GR Datasheet
According to the chip manufacturer this driver supports some of the chips which previously required the r1000 driver ( which as of version r1000_v1.06 is only maintained for kernel 2.4 and most important does not always work correctly with the new chipsets. Therefore on the above mentioned hardware please always try to use the newer r8101 driver instead of r1000).
Correct driver is not included with the standard CentOS 4.5, 5.0 and 5.1 distributions.
On an ECS 945GCT-M/133
There are a few ways to get the driver. (1) Download and install the r8101 driver from Realtek's website at: Realtek Driver Download Some direct links (newer versions might be available -- use the above link to check): (2) As an (3) As yet another This method offers the advantage of not requiring the driver to be compiled or rebuilt upon a kernel update and should work seamlessly across kernel updates via the weak-updates mechanism.
This section does not apply to the kmod packaged driver from solution (3) above. Here is the full list of packages which must be installed in order to compile the driver from source. Centos 5 Centos 4 Centos 3 Repository Observation binutils binutils binutils standard (1) gcc gcc gcc standard (1) glibc-devel glibc-devel glibc-devel standard (1) glibc-headers glibc-headers glibc-headers standard (1) kernel-headers glibc-kernheaders glibc-kernheaders standard (1) kernel-devel kernel-devel kernel-source standard (1) (2) make make make standard (1) dkms dkms dkms RPMForge (3) (1) standard = Base + Updates repositories. (2) If you are compiling the driver manually, you can compile the driver for another kernel version than the running one by using the procedure described below under (3) Only needed if installing dkms-r8101. You can check the state of the module any time using the command dkms status. The most interesting states are: added (the module has been successfully registered with the dkms system, but it has not been compiled) and installed (the module has also been successfully compiled).
This section does not apply to the kmod packaged driver from solution (3) above. When a NIC driver isn't included in the kernel, updating the kernel remotely can be a problem. A few extra steps can make this possible. Install the new kernel. Either from RPM or compiling a custom kernel. If installing from RPM, the associated kernel-devel package will also need to be installed. Go to the src directory of the r8101 source. Edit Makefile. This will overwrite any existing r8101.ko driver. If you want to keep the older driver, rename the existing file before compiling the new driver. If you have two copies present, use modinfo to identify the older driver and delete or rename it before rebooting. Update your bootloader configuration (usually /boot/grub/grub.conf) and reboot. reboot 2. Problem
3. Output of `lspci -v`
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E PCI Express Fast Ethernet controller (rev 01)
Subsystem: Elitegroup Computer Systems Unknown device 8136
Flags: bus master, fast devsel, latency 0, IRQ 177
I/O ports at e800 [size=256]
Memory at febff000 (64-bit, non-prefetchable) [size=4K]
Expansion ROM at febc0000 [disabled] [size=128K]
Capabilities: [40] Power Management version 2
Capabilities: [48] Vital Product Data
Capabilities: [50] Message Signalled Interrupts: 64bit+ Queue=0/1 Enable-
Capabilities: [60] Express Endpoint IRQ 0
Capabilities: [84] Vendor Specific Information
4. Solutions
rpm -ivh kmod-r8101*.rpm
5. List of packages needed to install r1000/r8168/r8101
Updating the Kernel. This step is mandatory if you are upgrading the kernel via a remote connection and you are not using dkms. 6. Remotely Updating the Kernel
Do not reboot. The NIC driver hasn't been added to the new kernel yet. Rebooting now means an inactive NIC and a visit to the console. KVER := $(shell uname -r)
to your newly installed kernel version. For example: KVER := 2.6.22.9-MyCustomKernel
make all;
find /lib/modules/2.6.22.9-MyCustomKernel -name r8101.ko
depmod -a 2.6.22.9-MyCustomKernel