Ubuntu Realtek-8168

Aus Wiki
Zur Navigation springen Zur Suche springen

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


Bulbgraph.png Hinweis:
Diese Schritte sind nach jedem Kernelupdate erforderlich, solange bis ein fehlerfreier Kerneltreiber zur Verfügung steht, der automatisch mit dem Kernel installiert wird. Dies kann daran erkannt werden, wenn nach einem Kernelupdate (Autoupdate) die Netzwerkschnittstelle ohne ein neukompilieren des Kernelmoduls funktionsfähig sein sollte. In diesem Fall sollte vom Selbskompilieren des Kernelmoduls Abstand genommen werden.