Ubuntu Realtek-8168
Allgemein
Der Realtek GBIT Netzwerkchip RTL8168 ist relativ verbreitet auf Mainboards diverser Hersteller. Aufgrund eines Fehler im Linux-Kernel 2.6.32 bis hin zu aktuellen 2.6.35 Versionen, wird der Controller fälschlicherweise als RTL8169 angesprochen, der zwar ähnlich, aber nicht voll kompatibel ist. Dadurch können diverse Probleme auftreten. Z.B.:
- Sehr langsame Datentransferraten (nur einige kBit/s im LAN)
- Sporadisch nicht erkannter Netzwerkstatus (Kabel eingesteckt/nicht eingesteckt)
- sporadisch nicht erkannte Netzwerkkarte
- Totale Funktionslosigkeit der Netzwerkschnittstelle.
- In manchen Fällen hilft ein Reboot des Rechners, in anderen muss der PC komplett abgeschaltet werden, um wieder eine voll funktionsfähige Netzwerkschnittstelle zu erlangen.
- Es kann sogar vorkommen, dass selbst Windows im Anschluss an eine Ubunutu-Session den Netzwerkkontroller nicht mehr korrekt ansteuern bzw. erkennen kann.
Bis eine Lösung durch die Kernelentwickler bereitsteht, muss das Kernelmodul von Realtek selbst kompiliert und installiert werden. Dies ist relativ einfach, da ein Script die nötigen Schritte übernimmt. Leider muss das Kernelmodul nach jedem Kernelupdate neu kompiliert und eingespielt werden.
Netzwerkchip ermitteln
Ermitteln, ob ein Realtek Netzwerkcontroller im Rechner verbaut ist, und ob es sich um den betroffenen RTL8168 handelt:
sudo lspci | grep RTL
Sollte die Ausgabe in etwa folgender ähneln, dann ist der betroffene Netzwerkcontroller verbaut.
Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller
Falls kein Realtek Controller verbaut ist, erscheint gar keine Zeile, sondern direkt der Prompt. In diesem Fall, oder falls z.B. ein RTL8169 verbaut sein sollte, dann kann hier abgebrochen werden.
Download und Installation
Für die Installation des Kernelmoduls ist der C-Compiler erforderlich:
apt-get install build-essential
Download Quellcode: Das Archiv mit dem Quellcode von folgender Seite herunterladen (z.B. /home/ubuntu_user/Downloads/r8168-8.019.00.tar.bz2): http://www.realtek.com.tw/DOWNLOADS/DOWNLOADSVIEW.ASPX?LANGID=1&PNID=13&PFID=5&LEVEL=5&CONN=4&DOWNTYPEID=3&GETDOWN=FALSE#2
Vorbereitungen:
sudo mkdir -p /usr/local/src/realtek cd /usr/local/src/realtek sudo mv /home/ubuntu_user/Downloads/r8168-8.019.00.tar.bz2 ./ sudo bzip2 -d r8168-8.019.00.tar.bz2 sudo tar xvf r8168-8.019.00.tar
Kompilieren:
cd r8168-8.019.00 sudo ./autorun.sh
Dieses Script sollte das Kernelmodul fehlerfrei übersetzen (außer evtl. Warnings), das alte Kernelmodul entfernen und das neue installieren. Anschließend sind noch folgende Schritte nötig:
sudo gedit /etc/modprobe.d/blacklist.conf
Folgende Zeilen ans Ende anfügen:
#Blacklist Realtek Netzwerktreiber RTL8169, wenn RTL8168 Chip vorhanden ist blacklist r8169
Init Ramdisk updaten:
update-initramfs -u