Aussi longtemps que je me souvienne, la connexion Ethernet de ma carte mère a mal fonctionné. Elle est censée atteindre 1 Gb/s, mais quel que soit l'appareil auquel je l'ai connectée, c'est à 100 Mb/s. J'ai aussi essayé divers câbles Cat 5e et Cat 6, sans succès. En fait, si je débranche le câble de ma carte mère et le branche à un autre appareil, alors cet autre appareil établit une connexion à 1 Gb/s. Le problème ne réside donc ni dans le câble ni dans le switch en face.
La commande dmidecode -t baseboard (ou dmidecode -t 2)
affiche le modèle de ma carte mère (sous Arch Linux) :
# dmidecode 3.4 Getting SMBIOS data from sysfs. SMBIOS 2.4 present. Handle 0x0002, DMI type 2, 8 bytes Base Board Information Manufacturer: Gigabyte Technology Co., Ltd. Product Name: P55-UD3R Version: x.x Serial Number:
La documentation du constructeur indique que La carte mère Gigabyte P55-UD3R est équipée d'une puce RTL8111D de Realtek. Cela semble à peu près compatible avec les messages de log du démarrage :
[ 8.014252] r8169 0000:03:00.0: can't disable ASPM; OS doesn't have ASPM control [ 8.036186] r8169 0000:03:00.0 eth0: RTL8168d/8111d, 00:24:1d:d3:70:8b, XID 283, IRQ 31 [ 8.036192] r8169 0000:03:00.0 eth0: jumbo features [frames: 9194 bytes, tx checksumming: ko] [ 8.263601] r8169 0000:03:00.0 enp3s0: renamed from eth0 [ 8.778105] RTL8211B Gigabit Ethernet r8169-0-300:00: attached PHY driver (mii_bus:phy_addr=r8169-0-300:00, irq=MAC) [ 8.957806] r8169 0000:03:00.0 enp3s0: Link is Down [ 21.764722] r8169 0000:03:00.0 enp3s0: Link is Up - 100Mbps/Full - flow control rx/tx
On voit que la connexion Ethernet met un temps considérable à s'établir (Link is up). En fait, la connexion s'établit quand le PC est allumé (déjà à 100 Mb/s d'après les leds), puis elle est réinitialisée par Linux. C'est très ennuyeux car c'est si lent que ça fait fréquemment échouer des scripts de démarrage, notamment DHCP.
La commande lshw -c network donne aussi des indications
proches concernant le matériel réseau :
*-network
description: Ethernet interface
product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
vendor: Realtek Semiconductor Co., Ltd.
physical id: 0
bus info: pci@0000:03:00.0
logical name: enp3s0
version: 03
serial: 00:24:1d:d3:70:8b
size: 100Mbit/s
capacity: 1Gbit/s
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress msix vpd bus_master cap_list rom ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=5.15.91-4-lts duplex=full firmware=rtl_nic/rtl8168d-2.fw latency=0 link=yes multicast=yes port=twisted pair speed=100Mbit/s
resources: irq:17 ioport:ce00(size=256) memory:fbdff000-fbdfffff memory:fbdf8000-fbdfbfff memory:fbe00000-fbe1ffff
Dans la ligne configuration on voit le pilote (driver=r8169)
et le firmware (firmware=rtl_nic/rtl8168d-2.fw) qui sont chargés.
Le firmware se trouve dans /usr/lib/firmware/rtl_nic/rtl8168d-2.fw.xz
fournit par le paquet linux-firmware. À noter que La ligne
configuration contiendrait aussi l'adresse IP si elle
était configurée au moment de la commande.
Le pilote de l'interface Ethernet (r8169) et le firmware chargé
(rtl_nic/rtl8168d-2.fw) peuvent aussi être retrouvés avec la commande
ethtool -i enp3s0 qui affiche :
driver: r8169 version: 5.15.91-4-lts firmware-version: rtl_nic/rtl8168d-2.fw expansion-rom-version: bus-info: 0000:03:00.0 supports-statistics: yes supports-test: no supports-eeprom-access: no supports-register-dump: yes supports-priv-flags: no
La configuration courante de l'Ethernet, elle est affichée par la commande
ethtool enp3s0 :
Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Supported pause frame use: Symmetric Receive-only Supports auto-negotiation: Yes Supported FEC modes: Not reported Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Advertised pause frame use: Symmetric Receive-only Advertised auto-negotiation: Yes Advertised FEC modes: Not reported Link partner advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Link partner advertised pause frame use: Symmetric Link partner advertised auto-negotiation: Yes Link partner advertised FEC modes: Not reported Speed: 100Mb/s Duplex: Full Auto-negotiation: on master-slave cfg: preferred slave master-slave status: slave Port: Twisted Pair PHYAD: 0 Transceiver: external MDI-X: Unknown Supports Wake-on: pumbg Wake-on: d Link detected: yes
Je suis étonné de voir les Link partner advertised link modes culminer à 100baseT/Half 100baseT/Full. C'est un peu le nœud du problème ; la carte mère ne détecterait pas correctement les vitesses proposées par le partenaire.
r8168J'ai également essayé le pilote 8168 de Realtek,
disponible à https://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-pci-express-software
mais plus simplement fourni par le paquet Arch Linux r8168-lts.
Pas mieux. Voici le log de démarrage :
[ 8.143714] r8168: loading out-of-tree module taints kernel.
[ 8.143838] r8168: module verification failed: signature and/or required key missing - tainting kernel
[ 8.185713] r8168 Gigabit Ethernet driver 8.051.02-NAPI loaded
[ 8.201920] r8168: This product is covered by one or more of the following patents: US6,570,884, US6,115,776, and US6,327,625.
[ 8.203359] r8168 Copyright (C) 2022 Realtek NIC software team <nicfae@realtek.com>
This program comes with ABSOLUTELY NO WARRANTY; for details, please see <http://www.gnu.org/licenses/>.
This is free software, and you are welcome to redistribute it under certain conditions; see <http://www.gnu.org/licenses/>.
[ 8.492918] r8168 0000:03:00.0 enp3s0: renamed from eth0
[ 9.205282] enp3s0: 0xffff9bb0c0241000, 00:24:1d:d3:70:8b, IRQ 31
[ 23.846574] r8168: enp3s0: link up
La connexion Ethernet met toujours beaucoup trop de temps à s'établir.
La commande ethtool -i enp3s0 affiche :
driver: r8168 version: 8.051.02-NAPI firmware-version: rtl_nic/rtl8168d-2.fw expansion-rom-version: bus-info: 0000:03:00.0 supports-statistics: yes supports-test: no supports-eeprom-access: no supports-register-dump: yes supports-priv-flags: no
La commande ethtool enp3s0 affiche :
Settings for enp3s0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Link partner advertised pause frame use: Symmetric
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 100Mb/s
Duplex: Full
Auto-negotiation: on
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
MDI-X: Unknown
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000033 (51)
drv probe ifdown ifup
Link detected: yes
Toujours 100 Mb/s, ça revient au même.
J'ai également essayé sur Windows 10, et la connexion est aussi à 100 Mb/s. Et dès l'allumage du PC, avant le chargement du système, je vois aux leds que la vitesse est 100 Mb/s.
© 2023 Marc Mongenet
Ce document est disponible selon les termes de la
Creative Commons Attribution 2.5 License.
Dernière mise à jour et
validation le 12 février 2023.