Die Netzwerkkarte

Nachdem das mit der Festplatte schon so eine Sache war, tauchte ein weiteres Problem auf. Die Onboard-Netzwerkkarte funktionierte nicht unter Linux, bei mir ein Debian 4.0 (Etch).

Es handelt sich um eine „NetXtreme BCM5751 Gigabit Ethernet PCI Express“ [14e4:1677] von BroadCom. Eigentlich unterstützt von tg3 Treiber. Wie gesagt, eigentlich.

modprobe tg3 resultierte bei mir immer nur in

tg3.c:v3.92 (May 2, 2008 )
ACPI: PCI Interrupt 0000:02:00.0[A] -> GSI 17 (level, low) -> IRQ 17
PCI: Setting latency timer of device 0000:02:00.0 to 64
tg3: Could not obtain valid ethernet address, aborting.
ACPI: PCI interrupt for device 0000:02:00.0 disabled
tg3: probe of 0000:02:00.0 failed with error -22

nicht ganz das Wahre. Eine kurze Suche bei Google nach der Fehlermeldung führte mich zu einer uralten (2004?) Diskussion darum, dass die Debian-Entwickler die Firmware aus dem Treiber genommen hatten wegen strittiger Lizenzen, die Debianer haben sich da ja immer etwas. Das Fazit damals, man möge doch auf den bcm5700 Treiber ausweichen. Der Treiber ist auch heute noch Bestandteil von Debian, allerdings nur in Sourcen. Diese habe ich heruntergeladen, nur um dann festzustellen, dass das Kernelinterface für Netzwerkkarten-Treiber sich mit 2.6.24 geändert hat, der Treiber also nicht mehr mit aktuellen Kernels übersetzbar ist. Darauf, den Treiber jetzt anzupassen, hatte ich auch nicht wirklich Lust, ich recherchierte also erstmal in Richtung tg3 weiter.

Um den Debian-Querelen aus dem Weg zu gehen bezog ich den aktuellsten der aktuellen Linux-Kernel (jetzt weiß ich übrigens auch, wie git funktioniert). Diese funktionierten aber auch nicht.

Bis hierhin dachte ich, der Treiber findet keine Netzwerkkarte und lädt deshalb nicht. Also hab ich mal den Maintainer von tg3 kontaktiert und mein Problem geschildert.

Unabhängig davon habe ich dann im BIOS entdeckt, dass die MAC-Adresse der Netzwerkkarte dort als 00:00:00:00:00:00 angegeben ist. Eine kurze Recherche zu MAC-Adressen brachte mich dann darauf, dass die Adresse im Prinzip nicht ungültig (wenngleich ungewöhnlich) ist.

Also die MAC ADDRESS Validierung aus dem tg3 Treiber rausgepatcht:

if (!is_valid_ether_addr(&dev->dev_addr[0])) {
#ifdef CONFIG_SPARC
if (!tg3_get_default_macaddr_sparc(tp))
return 0;
#endif
// return -EINVAL;
}

Alles nochmal neu übersetzt (kompiliert).

modprobe tg3

tg3.c:v3.92 (May 2, 2008 )
ACPI: PCI Interrupt 0000:02:00.0[A] -> GSI 17 (level, low) -> IRQ 17
PCI: Setting latency timer of device 0000:02:00.0 to 64
eth1: Tigon3 [partno(none) rev 4200 PHY(5750)] (PCI Express) 10/100/1000Base-T
eth1: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] WireSpeed[1] TSOcap[1]
eth1: dma_rwctrl[76180000] dma_mask[64-bit]

ifconfig -a

eth1 Link encap:Ethernet Hardware Adresse 00:00:00:00:00:00
BROADCAST MULTICAST MTU:1500 Metrik:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:17

ifconfig eth1 hw ether 02:23:23:23:23:23

ifconfig -a

eth1 Link encap:Ethernet Hardware Adresse 02:23:23:23:23:23
BROADCAST MULTICAST MTU:1500 Metrik:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:17

ifconfig eth1 up

tg3: eth1: No firmware running.
ADDRCONF(NETDEV_UP): eth1: link is not ready
tg3: eth1: Link is up at 100 Mbps, full duplex.
tg3: eth1: Flow control is on for TX and on for RX.
ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready

ifconfig eth1

eth1 Link encap:Ethernet Hardware Adresse 02:23:23:23:23:23
inet Adresse:192.168.0.24 Bcast:192.168.0.255 Maske:255.255.255.0
inet6-Adresse: fe80::200:ff:fe00:0/64 Gültigkeitsbereich:Verbindung
UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1
RX packets:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:86 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:1000
RX bytes:2696 (2.6 KiB) TX bytes:15353 (14.9 KiB)
Interrupt:17

Tada! Funktioniert.

Immerhin etwas. Nachdem ich einige Tage zugebracht hatte, war dies schon mal ein wesentlicher Fortschritt. Könnte ich jetzt immer so machen, bei jedem neuen Kernel die Überprüfung rauspatchen und selber übersetzen. Ich hab dem tg3 Maintainer vorgeschlagen, meine Änderungen doch in den offiziellen Treiber mit zu übernehmen, fand er nicht so toll.

So geht’s aber nicht. Ihrer Netzwerkkarte fehlt die Firmware. Ohne Firmware können sonderbare Dinge geschehen.
Stellen Sie sicher, dass Ihr Gerät eine gültige Firmware hat, diese bringt dann auch gleich eine gültige MAC-Adresse mit.
Sie sollten den Hersteller kontaktieren, damit dieser die Firmware wieder in Ordnung bringt.

Hm, also irgendwie auch nicht so der Hit.

Advertisements

Ein Gedanke zu “Die Netzwerkkarte

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s