Realtek RTL8169 and RTL8110 NIC
1. Hardware
Any of the following NIC chipsets:
- RTL8110SC(L)
- RTL8110S-32
- RTL8110SB(L)
- RTL8169SB(L)
- RTL8169SC(L)
- RTL8169
2. Problem
The r8169 driver included in the installation kernel does not recognize the RTL8110.
Some later update of the kernel's r8169 driver does recognize this NIC. A test using a Fedora 8 Test 1 Live CD (kernel 2.6.23) revealed that it does recognize the RTL8110. However, tests of kernels up to 2.6.22.9 still find the older 2.2LK-NAPI version of the r8169 that doesn't work. See October 2007 update below. The upstream vendor has not backported the newer driver into its kernels.
3. Output of `lspci -v`
On a Biostar I945G-M7 V.2, lspci -v yields:
02:05.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8169SC Gigabit Ethernet (rev 10) Subsystem: Biostar Microtech Int'l Corp: Unknown device 2304 Flags: bus master, 66Mhz, medium devsel, latency 32, IRQ 209 I/O ports at de00 [size=256] Memory at fdeff000 (32-bit, non-prefetchable) [size=256] Capabilities: [dc] Power Management version 2
4. Solution
Download and install the driver from Realtek at http://www.realtek.com.tw/downloads
Note this is the Old Driver -- use the newer r8169 below:
4.1. Update October 2007
The Realtek download page has been updated to point to a new r8169 driver -- version 6.006.00-NAPI. This driver version is not included in the main kernel as of kernel 2.6.22.9. Kernels up to at least this version are still using the older 2.2LK-NAPI version that does not recognize the RTL8110.
A check of CentOS 4 kernel 2.6.9-55.0.9.EL showed it was still using the 2.2LK-NAPI version of the driver.
An exchange with Francois Romieu, one of the kernel developers for the r8169 driver, confirmed that the functionality of Realtek's r8168 and r8169 drivers will be incorporated into the kernel's r8169 driver. The kernel changelog shows a merge with Realtek's drivers in July 2007.
5. Notes
In the case of the Biostar I945G-M7 V.2, lspci -v stated the NIC was an RTL-8169SC, however loading the driver yielded:
eth0: Identified chip type is 'RTL8110SC'. eth0: r10001.05, the Linux device driver for Realtek Ethernet Controllers at 0xde00, 00:e0:4d:xx:xx:xx, IRQ 209 Realtek RTL8169/8110 Family Gigabit Ethernet Network Adapter Driver version:1.05 Released date:2006/10/25
More confusingly, the Biostar documentation and their tech support stated that this motherboard has an RTL8100 10/100 NIC. This is probably a motherboard V.1 to V.2 update problem.
A by-no-means-exhaustive search of a single vendor showed a variety of motherboards using the RTL8110:
- MSI MBOX 945GM3-F
- Biostar iDEQ 330G
- ECS PX1
- DFI RS482 INFINITY
- MSI G965M-F
- MSI G965M-FI
- MSI 945P Neo3-F
- ECS 945P-A
- DFI INFINITY CFX3200-M2/G
- MSI P965 Neo-F
- ECS RC410L/800-MGF(V2.0)
- ECS P965T-A
- ECS 945G-M3 V3.0
- MSI 945GM3-F
- ECS AMD690GM-M2
- Biostar I945G-M7(Ver.2)
- MSI Fuzzy CX700
- MSI Fuzzy LX800
6. Remotely Updating the Kernel
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.
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.
Go to the src directory of the r1000 source. Edit Makefile.
- Change the line
KVER := $(shell uname -r)
to your newly installed kernel version. For example:KVER := 2.6.20.4-MyCustomKernel
- Go back to the top directory of the r1000 source and recompile the driver:
make clean; make; make install;
- Confirm that the driver was copied to the right place. For example:
find /lib/modules/2.6.20.4-MyCustomKernel -name r1000.ko
- Update your bootloader configuration and reboot.
7. CentOS 5 Version
A kernel-module package for the r1000 is available at:
http://wiki.centos.org/HardwareList/CentOS5/RealTek/r1000
8. Realtek RTL8111B
The RTL8111B is supported by a different Realtek driver. Additional info: RTL8111B Page.