Realtek Netzwerkkarte und USB 2.0 funktioniert
nach Installation von debian wheezy nicht
 

Problem: Nach Installation von debian wheezy mit Kernel 3.2.0-4-amd64 gibt es zwar ein Netzwerk-Device eth0, welches auch eingerichtet ist, aber keinerlei Verbindung ins Netzwerk bietet. Sämtliche Versuche einen fremden Rechner anzupingen enden mit Destination Host Unreachable. Auch eine Installation der Firmware-Treiber hilft nicht. Außerdem funktionieren die USB 2.0 Ports nicht, während USB 3.0 Ports funktionieren. Das gleiche Problem kann auch unter Debian jessie mit einem neuerem Kernel auftreten. Beim Mainboard handelt es sich um ein Gigabyte der 900er Serie, z.B. das GA-970A-UD3P.

Lösung: Das Problem liegt an einer fehlerhaften Hardware des Gigabyte Mainboards und fehlendem IOMMU. Die IOMMU (Input Output Memory Managment Unit) kann man entweder Hardware mäßig im BIOS aktivieren, oder Software mäßig als Kernel-Option. Die Debian Kernel Module benötigen IOMMU um korrekt zu funktionieren. Falls man die IOMMU Unterstützung nicht aktivieren will, kann man die Netzwerkkarte durch Installation des Original Realtek-Treibers zum funktionieren bringen. Dazu muß man den korrekten Treiber von der Realtek-Seite herunterladen und installieren. Wie das geht, wird weiter unten beschrieben.

Die weitaus bessere Lösung ist aber IOMMU zu aktivieren. Leider führt eine Hardware mäßige Aktivierung im BIOS in dem man die BIOS-Option IOMMU auf Enabled setzt dazu, daß Linux mit einer Orgie von Fehlermeldungen und dadurch verzögert startet. Außerdem funktioniert zwar die Netzwerkkarte und USB 2.0 aber dafür USB 3.0 nicht mehr, was vermutlich an besagter fehlerhafter Hardware seitens Gigabyte liegt. Besser ist es daher IOMMU Software mäßig über den Kernel zu aktivieren, indem man dem Kernel beim Booten die Option iommu=soft mitgibt. Dazu öffnet man die Datei /etc/default/grub und ändert die Zeile

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

in

GRUB_CMDLINE_LINUX_DEFAULT="quiet iommu=soft"

Ein anschließendes update-grub und IOMMU ist ab dem nächsten Neustart Software mäßig aktiviert und alle USB Ports und die Netzwerk-Hardware funktionieren.


Installation des Original Realtek-Treibers von der Realtek-Homepage

Dazu muß man sich erst einmal mit Hilfe eines Internet-fähigen Fremd-PCs den korrekten Treiber unter http://www.realtek.com.tw/downloads/ besorgen, z.B. r8168-8.039.00. Anschließend benötigt man noch die Kernel-Headers von der Debian-Homepage, welche zum bauen des Kernel-Moduls benötigt werden. Für einen Kernel mit der Versions-Nummer 3.2.0-4-amd64 benötigt man folgende Dateien:

- linux-headers-3.2.0-4-amd64
- binutils
- cpp-4.6
- gcc-4.6
- gcc-4.6-base
- libgmp10
- libgomp1
- libmpc2
- libmpfr4
- libquadmath0
- linux-headers-3.2.0-4-common
- linux-kbuild-3.2
- make

Für eine leichtere Installation später empfiehlt es sich ein kleines Debian-Archiv zu basteln, welches man in die sources.list eintragen kann um alle Pakete mit allen Abhängigkeiten in einem Rutsch zu installieren. Wie das geht, erklärt dieser Beitrag. Nehmen wir als Beispiel-Archiv folgende Ordner-Aufteilung:
debian/dists/wheezy/main/binary-amd64
Hat man die benötigten Treiber und das kleine Debian-Archiv auf einem USB-Stick gespeichert, kann man selbigen nach dem Einstecken z.B. unter /mnt einbinden.
# mount -t vfat /dev/sde1 /mnt/
Der korrekte Eintrag in der sources.list lautet dann
deb file:/mnt/debian/ wheezy main
Nach einem
#apt-get update
kann man mittels
# apt-get install linux-headers-3.2.0-4-amd64 make
die Kernel-Headers und alle benötigten Pakete installieren. Anschließend wechselt man in das Verzeichnis des Treibers, z.B.
cd /mnt/r8168-8.039.00/
und führt die Datei autorun.sh mittels
# ./autorun.sh
aus. Das alte Treibermodul wird entladen und ein neues Modul (hoffentlich) gebaut.

WICHTIG! Das Kernel-Modul, welches mit der wheezy Installation mitkommt, heißt r8169. Mit dem Original Realtek Treiber wird das Modul r8168 gebaut. Daher sollte sichergestellt werden, daß dieses Modul geladen wird!