Realtek RTL8111/8168B will nicht richtig mit wheezy amd64

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
whiizy
Beiträge: 683
Registriert: 23.07.2011 22:09:37

Realtek RTL8111/8168B will nicht richtig mit wheezy amd64

Beitrag von whiizy » 14.08.2013 22:20:24

Das Aufsetzen meines neuen PC mit Debian/wheezy amd64 über netboot lief gestern wie am Schnürchen - bis ich das System das erste Mal hochgefahren habe :-(. Da musste ich dann feststellen, daß ethernet nicht lief. Besser gesagt: nicht richtig. Die dhcp-requests von meinem frischen wheezy kamen zwar am dhcp-server an, seine Antworten wurden aber vergeblich an den client zurückgeschickt. Zu sehen auch daran, daß der RX am eth0 des neuen Systems nicht hochzählte (nur der TX).

Das Verrückte war nun, daß die Netzwerkkarte während der gesamten Netinst ja noch tadellos gearbeitet hatte! Ich habe überlegt, was sich gegenüber dieser Anfangssituation geändert hatte: nun, erstens war ein Window$ vor der Inst runtergeschmissen worden und zweitens nicht mehr über PXE und bootkernel, sondern über HD gebootet worden. Und was soll ich sagen, der bloße Vorgang des PXE-boots initialisiert die Realtek NIC offensichtlich so, daß Debian sie anschließend benutzen kann! Sobald ich dann aber wieder von HD boote, ist die Karte auch wieder scheintot.

Damit das System bis zu Behebung dieses Bugs bootfest ist, habe ich mir jetzt erstmal einen notdürftigen Workaround gebastelt: Im BIOS stelle ich die Boot-Reihenfolge auf primär PXE-boot und lasse PXE dann gegen sein time-out laufen, weil es von meinem tftp-server kein bootimage angeboten bekommt. Danach startet dann automatisch das zweite Boot-Medium (Festplatte) und die RTL8111/8168B (rev 0c) arbeitet dann wieder völlig normal.

Interessant finde ich, daß der dhcp-client im PXE ROM normal funktioniert und sich seine dynamische IP vom Server ziehen kann (was dem wheezy bei mir nach einem Standard-Reboot ja nicht gelingt, wie beschrieben).

Die Paketinstallation von firmware-realtek scheint bei diesem Problem übrigens keine Rolle zu spielen, da sie hier nur für den Wifi-Part gebraucht wird. Auch wenn ich es absichtlich wieder deinstalliere, bleibt das maßgebliche Kernel-Modul r8169 erhalten, welches wie gesagt nur dann richtig funktioniert, wenn ich vorher einen PXE-Boot als "Initialisierung" dazwischen geschoben habe. - Kurios, oder hat wer schonmal Ähnliches mitgemacht??

Zu den Umständen: Das Debian ist minimal aufgesetzt (noch kein Desktop und networkmanager) und hat zwei Ethernet controller onboard:
*lspci -v:
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 0c)
05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 0c)
* linux-image-3.2.0-4-amd64, 3.2.46-1
* firmware-realtek, 0.36+wheezy.1
* PXE ROM zeigt: Realtek PCIe GBE Family Controller Series v2.51 (10/08/12)

Bin mal gespannt, ob man über Realtek in der nächsten Zeit noch Vergleichbares zu hören bekommt, wo jetzt so einige auf wheezy umsteigen.

Guten Abend

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Realtek RTL8111/8168B will nicht richtig mit wheezy amd6

Beitrag von rendegast » 15.08.2013 08:09:11

Code: Alles auswählen

$ /sbin/modinfo r8169
filename:       /lib/modules/3.9-0.bpo.1-amd64/kernel/drivers/net/ethernet/realtek/r8169.ko
firmware:       rtl_nic/rtl8168g-1.fw
firmware:       rtl_nic/rtl8106e-1.fw
firmware:       rtl_nic/rtl8411-1.fw
firmware:       rtl_nic/rtl8402-1.fw
firmware:       rtl_nic/rtl8168f-2.fw
firmware:       rtl_nic/rtl8168f-1.fw
firmware:       rtl_nic/rtl8105e-1.fw
firmware:       rtl_nic/rtl8168e-3.fw
firmware:       rtl_nic/rtl8168e-2.fw
firmware:       rtl_nic/rtl8168e-1.fw
firmware:       rtl_nic/rtl8168d-2.fw
firmware:       rtl_nic/rtl8168d-1.fw
version:        2.3LK-NAPI

Code: Alles auswählen

$ aptitude versions firmware-realtek | cut -c -70
Paket firmware-realtek:
p   0.36+wheezy.1                                 stable
p   0.39~bpo70+1                                  wheezy-backports
i   0.39                                          testing
p   0.40                                          unstable
Die Inhalte von 0.39~bpo/0.39 und 0.40 sind identisch,
aber 0.36 zu 0.39:

Code: Alles auswählen

$ diff -rq firmware-realtek_0.36+wheezy.1_all/ firmware-realtek_0.39_all/ | sort
Dateien firmware-realtek_0.36+wheezy.1_all/lib/firmware/rtl_nic/rtl8168f-1.fw und firmware-realtek_0.39_all/lib/firmware/rtl_nic/rtl8168f-1.fw sind verschieden.
Dateien firmware-realtek_0.36+wheezy.1_all/lib/firmware/rtlwifi/rtl8192defw.bin und firmware-realtek_0.39_all/lib/firmware/rtlwifi/rtl8192defw.bin sind verschieden.
Dateien firmware-realtek_0.36+wheezy.1_all/lib/firmware/rtlwifi/rtl8192sefw.bin und firmware-realtek_0.39_all/lib/firmware/rtlwifi/rtl8192sefw.bin sind verschieden.
Nur in firmware-realtek_0.39_all/lib/firmware/rtl_nic: rtl8106e-1.fw.
Nur in firmware-realtek_0.39_all/lib/firmware/rtl_nic: rtl8106e-2.fw.
Nur in firmware-realtek_0.39_all/lib/firmware/rtl_nic: rtl8168g-1.fw.
Nur in firmware-realtek_0.39_all/lib/firmware/rtl_nic: rtl8168g-2.fw.
Nur in firmware-realtek_0.39_all/lib/firmware/rtl_nic: rtl8168g-3.fw.
Nur in firmware-realtek_0.39_all/lib/firmware/rtl_nic: rtl8402-1.fw.
Nur in firmware-realtek_0.39_all/lib/firmware/rtl_nic: rtl8411-1.fw.
Nur in firmware-realtek_0.39_all/lib/firmware/rtl_nic: rtl8411-2.fw.
Nur in firmware-realtek_0.39_all/lib/firmware/rtlwifi: rtl8188efw.bin.
Nur in firmware-realtek_0.39_all/lib/firmware/rtlwifi: rtl8723fw.bin.
Nur in firmware-realtek_0.39_all/lib/firmware/rtlwifi: rtl8723fw_B.bin.
Eventuell hilft der backports-Kernel?
oder rfkill?
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

whiizy
Beiträge: 683
Registriert: 23.07.2011 22:09:37

Re: Realtek RTL8111/8168B will nicht richtig mit wheezy amd6

Beitrag von whiizy » 15.08.2013 19:34:07

Hallo rendegast,

als Erstes schonmal vielen Dank für Deinen ausführlichen Vergleich der Modul-Versionen!

rfkill ist ein interessanter Gedanke, aber eine Auswirkung dürfte in meinem Fall allenfalls auf Wireless LAN zu erwarten sein (mein Problem ist aber Kupfer eth0):

Code: Alles auswählen

rfkill list all
0: phy0: Wireless LAN
        Soft blocked: no
        Hard blocked: no
Deiner Idee mit dem wheezy-backports kernel bin ich jetzt aber nachgegangen:

Code: Alles auswählen

Ergänzt in sources.list:
deb http://debian.netcologne.de/debian/ wheezy-backports main contrib non-free

apt-get update
apt-get -t wheezy-backports install linux-image-3.9-0.bpo.1-amd64 firmware-realtek
Mit dem neuen Kernel funktioniert Ethernet nun so, wie man es erwartet!! Der "Initialisierungsschritt" mit dem eingeschobenen und abgebrochenen PXE-Boot ist nun nicht mehr vonnöten!

Ich habe jetzt noch zusätzlich untersucht, ob die firmware-realtek aus den wheezy-backports für den Erfolg maßgeblich ist oder der neue Kernel. Der Bug liegt offenbar im wheezy-kernel selber, da ich auch diesmal die firmware-realtek wieder removen konnte, und eth und Boot-Festigkeit weiterhin funktionell erhalten blieben. Natürlich habe ich die firmware-realtek jetzt aber wieder installiert, weil ich irgendwann auch mal Wireless betreiben will.

Stellt sich jetzt natürlich die Frage, ob es gerechtfertigt ist, daß ich dafür einen Kernel-bug in Debian aufmache oder ob der jetzt schon als gefixed gelten kann?

Etwas kurios ist es für mich schon, daß ich jetzt endlich wieder ein nagelneues Debian/stable hatte und schon zwei Tage später nichts Geringeres als den Backports-Kernel nachinstalliert habe :-)

Daß es eine Lösung gibt, ist jedenfalls das Wichtigste, deshalb vielen Dank nochmal für den Anstoß, rendegast!

Gruß
whiizy

P.S. Ich habe jetzt nachträglich auch noch 'intel-microcode' aus wheezy nachinstalliert, weil es lt. dmesg vermisst wurde.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Realtek RTL8111/8168B will nicht richtig mit wheezy amd6

Beitrag von rendegast » 16.08.2013 06:25:13

Die Paketinstallation von firmware-realtek scheint bei diesem Problem übrigens keine Rolle zu spielen, da sie hier nur für den Wifi-Part gebraucht wird. Auch wenn ich es absichtlich wieder deinstalliere, bleibt das maßgebliche Kernel-Modul r8169 erhalten,
da ich auch diesmal die firmware-realtek wieder removen konnte, und eth und Boot-Festigkeit weiterhin funktionell erhalten blieben. Natürlich habe ich die firmware-realtek jetzt aber wieder installiert, weil ich irgendwann auch mal Wireless betreiben will.
Ob der r8169 in Deinem Fall auf Firmware zurückgreift,
kann aus dem 'dmesg' bei dessen Laden ersehen werden,
und interessant könnte dann halt das Paket aus backports sein, zBsp.:
Nur in firmware-realtek_0.39_all/lib/firmware/rtl_nic: rtl8168g-1.fw.
Nur in firmware-realtek_0.39_all/lib/firmware/rtl_nic: rtl8168g-2.fw.
Nur in firmware-realtek_0.39_all/lib/firmware/rtl_nic: rtl8168g-3.fw.
Falls das nicht der Fall sein sollte, ist ein entferntes oder installiertes firmware-realtek für die Funktion des Gerätes irrelevant.
Daß das aber gelegentlich der Fall sein könnte, wollte ich mit obigem modinfo zeigen.

Und dann käme es darauf an, ob in den verschiedenen Versionen des Paketes überhaupt unterschiedliche
Versionen der entsprechenden Firmware vorhanden wären, daher der Vergleich der Paketinhalte.
$ diff -rq firmware-realtek_0.39_all firmware-realtek_0.40_all
Dateien firmware-realtek_0.39_all/control und firmware-realtek_0.40_all/control sind verschieden.
Dateien firmware-realtek_0.39_all/md5sums und firmware-realtek_0.40_all/md5sums sind verschieden.
Dateien firmware-realtek_0.39_all/usr/share/doc/firmware-realtek/changelog.gz und firmware-realtek_0.40_all/usr/share/doc/firmware-realtek/changelog.gz sind verschieden.

$ diff firmware-realtek_0.39_all/control firmware-realtek_0.40_all/control
3c3
< Version: 0.39
---
> Version: 0.40

$ zcat changelog.gz | head
firmware-nonfree (0.40) unstable; urgency=low

* Update to linux-support-3.10-2
* linux-nonfree: Add Radeon SMC microcode (Closes: #717848)
* linux-nonfree: Correct descriptions of Radeon chips using some
microcode files
* linux-nonfree: Add Radeon HD 7790/8770/8950 and 8100/8200/8300/8400
series microcode

-- Ben Hutchings <ben@decadent.org.uk> Fri, 09 Aug 2013 00:28:02 +0200
0.39 -> 0.40 ist für firmware-realtek eine "Mogelpackung".
Bei radeon hat sich da schon mehr getan:

Code: Alles auswählen

$ diff -rq firmware-linux-nonfree_0.39_all/ firmware-linux-nonfree_0.40_all/ | sort
Dateien firmware-linux-nonfree_0.39_all/control und firmware-linux-nonfree_0.40_all/control sind verschieden.
Dateien firmware-linux-nonfree_0.39_all/md5sums und firmware-linux-nonfree_0.40_all/md5sums sind verschieden.
Dateien firmware-linux-nonfree_0.39_all/usr/share/doc/firmware-linux-nonfree/changelog.gz und firmware-linux-nonfree_0.40_all/usr/share/doc/firmware-linux-nonfree/changelog.gz sind verschieden.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: BARTS_smc.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: BONAIRE_ce.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: BONAIRE_mc.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: BONAIRE_me.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: BONAIRE_mec.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: BONAIRE_pfp.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: BONAIRE_rlc.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: BONAIRE_sdma.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: BONAIRE_uvd.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: CAICOS_smc.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: CAYMAN_smc.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: CEDAR_smc.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: CYPRESS_smc.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: HAINAN_smc.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: JUNIPER_smc.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: KABINI_ce.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: KABINI_me.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: KABINI_mec.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: KABINI_pfp.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: KABINI_rlc.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: KABINI_sdma.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: OLAND_smc.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: PITCAIRN_smc.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: REDWOOD_smc.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: RV710_smc.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: RV730_smc.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: RV740_smc.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: RV770_smc.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: TAHITI_smc.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: TURKS_smc.bin.
Nur in firmware-linux-nonfree_0.40_all/lib/firmware/radeon: VERDE_smc.bin.
Und das ist für das Funktionieren neuerer Hardware dann wiederum relevant.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

whiizy
Beiträge: 683
Registriert: 23.07.2011 22:09:37

Re: Realtek RTL8111/8168B will nicht richtig mit wheezy amd6

Beitrag von whiizy » 16.08.2013 19:22:21

Hi,

das Paket firmware-realtek ist für die generelle Funktion meiner eth0 und eth1 unter linux-image-3.9-0.bpo.1-amd64 nicht notwendig.

Zur Verdeutlichung habe ich firmware-realtek jetzt nochmals komplett entfernt (purge) und anschließend wieder nachinstalliert. Die resultierenden Unterschiede im Bootlog dmesg sind im folgenden zu sehen:

Code: Alles auswählen

apt-get  purge firmware-realtek

dmesg:

[    1.920012] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
[...]
[    1.940427] r8169 0000:03:00.0: irq 42 for MSI/MSI-X
[    1.940790] r8169 0000:03:00.0 eth0: RTL8168g/8111g at 0xffffc90000626000, 80:ee:73:73:3e:01, XID 0c000800 IRQ 42
[    1.940796] r8169 0000:03:00.0 eth0: jumbo features [frames: 9200 bytes, tx checksumming: ko]
[    1.940828] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
[    1.949661] r8169 0000:05:00.0: irq 43 for MSI/MSI-X
[    1.950009] r8169 0000:05:00.0 eth1: RTL8168g/8111g at 0xffffc90000666000, 80:ee:73:73:3e:00, XID 0c000800 IRQ 43
[    1.950015] r8169 0000:05:00.0 eth1: jumbo features [frames: 9200 bytes, tx checksumming: ko]
[...]
[    2.953788] rtl8192ce: Using firmware rtlwifi/rtl8192cfwU_B.bin
[...]
[    3.077823] rtl8192ce 0000:02:00.0: firmware: agent aborted loading rtlwifi/rtl8192cfwU_B.bin (not found?)
[...]
[    6.192367] r8169 0000:03:00.0: firmware: agent aborted loading rtl_nic/rtl8168g-1.fw (not found?)
[    6.192639] r8169 0000:03:00.0 eth0: unable to load firmware patch rtl_nic/rtl8168g-1.fw (-2)
[    6.202030] r8169 0000:03:00.0 eth0: link down
[    6.202065] r8169 0000:03:00.0 eth0: link down
[    6.202090] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[...]
[    7.905892] r8169 0000:03:00.0 eth0: link up
[    7.905915] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

Code: Alles auswählen

apt-get -s -t wheezy-backports install firmware-realtek
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  firmware-realtek
0 upgraded, 1 newly installed, 0 to remove and 15 not upgraded.
Inst firmware-realtek (0.39~bpo70+1 Debian Backports:/wheezy-backports [all])
Conf firmware-realtek (0.39~bpo70+1 Debian Backports:/wheezy-backports [all])

dmesg:
[...]
[    3.078895] rtl8192ce: Using firmware rtlwifi/rtl8192cfwU_B.bin
[    3.080265] rtl8192ce 0000:02:00.0: firmware: agent loaded rtlwifi/rtl8192cfwU_B.bin into memory
[...]
[    3.191855] ieee80211 phy0: Selected rate control algorithm 'rtl_rc'
[    3.192216] rtlwifi: wireless switch is on
[...]
[    6.353526] r8169 0000:03:00.0: firmware: agent loaded rtl_nic/rtl8168g-1.fw into memory
[    6.390015] r8169 0000:03:00.0 eth0: link down
[    6.390053] r8169 0000:03:00.0 eth0: link down
[    6.390077] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[...]
[    7.999417] r8169 0000:03:00.0 eth0: link up
[    7.999432] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
Solange die firmware-realtek zur Verfügung steht, wird neben dem Haupttreiber r8169 eben noch zusätzlich die wireless-firmware rtl8192cfwU_B.bin nachgeladen und desweiteren auch noch ein firmware patch rtl8168g-1.fw. Letzterer Patch war Dir ja bereits bereits in Deinen changelogs aufgefallen.

Für mich sieht mein ursprüngliches eth-Problem also nach einem kernel-bug in linux-image-3.2.0-4-amd 3.2.46-1 aus (und nicht in der firmware-realtek, 0.36+wheezy.1).

Gruß,
whiizy

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Realtek RTL8111/8168B will nicht richtig mit wheezy amd6

Beitrag von rendegast » 16.08.2013 19:55:06

[ 6.353526] r8169 0000:03:00.0: firmware: agent loaded rtl_nic/rtl8168g-1.fw into memory
Die ist dann wohl für die weitere Funktion relevant,
vielleicht nicht für grundsätzliches Funktionieren.
Könnte suspend o.ä. sein, was auch immer.
Doku für sowas ist meist dürftig bis nicht vorhanden. Vielleicht von realtek.

Code: Alles auswählen

$ strings rtl8168g-1.fw
rtl8168g-1_0.0.3 10/23/12
RL6223A_ram_code_patch_120822_misc 14:46:51
naja

Hat wohl nichts mit dem Problem hier zu tun.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

whiizy
Beiträge: 683
Registriert: 23.07.2011 22:09:37

Re: Realtek RTL8111/8168B will nicht richtig mit wheezy amd6

Beitrag von whiizy » 16.08.2013 20:54:02

rendegast hat geschrieben:
[ 6.353526] r8169 0000:03:00.0: firmware: agent loaded rtl_nic/rtl8168g-1.fw into memory
Die ist dann wohl für die weitere Funktion relevant,
vielleicht nicht für grundsätzliches Funktionieren.
Könnte suspend o.ä. sein, was auch immer.
... oder ein Stabilitäts- und Performance-Patch, wer weiß ...

Gruß

P.S. Der Ethernet-Controller soll laut Hersteller meines Boards ein Realtek 8111G sein. Nur zur Klarstellung, weil die Kernel-Meldungen in den Logs ja nicht eindeutig sind und mit den Patchleveln variieren.

Antworten