Installer les firmware Realtek sur Debian (Realtek 8125B)
Il y a quelques jours, je me suis fait un tout petit plaisir, et je me suis acheté une carte réseau 2.5GB pour mon serveur maison (celle-ci exactement)
Cette carte utilise le chip Realtek 8125B, certainement le chip le plus courant pour du 2.5G. C'est celui qu'on trouve sur presque toutes les cartes réseau 2.5 à moins de 50€, et sur presque toutes les cartes mères qui ont du 2.5 embarqué.
Mon serveur tourne avec Debian Bullseye (Debian forever!). Je regarde donc sur internet, sur les forums, et tout semble indiquer que Debian Bullseye inclut les firmware requis pour cette carte, j'imagine donc que ca va être tout bon.
Me voilà donc parti, armé d'un tournevis et d'impatience. Je débranche le serveur, je l’amène sur la table, j'éventre le panneau latéral, trouve un slot PCI libre, et j'installe.
Le serveur retourne à sa place, je branche la carte sur le port 2.5GB de mon routeur, et l'ancienne carte réseau sur un port 1GB pour pouvoir continuer à travailler en remote en attendant que je refasse les réglages réseau. J'ouvre une session ssh, tape apt update
, apt install firmware-realtek
, apt me dit qu'il est déjà installé, je prends ça pour un bon signe.
Je vérifie avec ip a
que la carte a bien obtenu une IP, il semble que oui. Tout confiant, je débranche donc l'ancienne carte, bidouille le serveur DHCP pour recycler l'adresse précédente du serveur. Je me sens de plus en plus confiant, jusqu'à ce que je décide de faire un speedtest.
Et là, mes amis, sous me yeux ébahis, je constate que je suis passé d'une vitesse down à peu près répétable de 941MBS à un peu moins, voire beaucoup moins selon les tests. Je suis abattu. Ce qui devait se passer sans encombre va se trouver être un casse-tête, un vrai.
Mais j'ai une lueur d'espoir. Pendant mes recherches, je me souviens avoir vu une site au nom bien connu, Jeff Geerling. Bon, si vous ne connaissez pas Jeff Geerling, et que vous lisez MA page, il y a quelque chose qui a foiré dans votre recherche. Jeff Geerling donc, a écrit un article sur le sujet et grosso modo, il recommande d'utiliser les pilotes fournis par Realtek plutôt que ceux du repo non-free de Debian. Hahaha!! voilà donc ce qu'il me faut!!
Renouvelé d'espoir, je télécharge donc les derniers pilotes disponibles (9.009.02 à ce jour), et je lance l'installation, et tout va bien aller maintenant, non?
Voyez-vous, comme tout bon bidouilleur, je me suis royalement assis sur le README inclus dans l'archive de Realtek. Ce README contenait une petite paragraphe tout en haut, juste quelques lignes:
Requirements
- Kernel source tree (supported Linux kernel 2.6.x and 2.4.x)
- For linux kernel 2.4.x, this driver supports 2.4.20 and latter.
- Compiler/binutils for kernel compilation
Voyez-vous, ce paragraphe ne m'inquiétait pas. J'ai déjà installé les outils de compilation communs. Et je me disais que c'était superflu de cloner le source du kernel. J'avais à moitié tort.
Car dans l'article de Jeff Geerling, j'aurais du faire plus attention à la première commande qu'il execute: sudo apt-get install -y raspberrypi-kernel-headers
. Ce qui a du sens, puisque les kernel headers sont justement là pour fournir ce qu'il faut aux outils de compilation. Donc en effet, pas besoin du source tree complet, juste des headers.
Je n'y avait pas fait très attention car j'étais persuadé que j'avais les avais déjà installés. Ce qui me fut fatal (presque sans exagération). Car si vous exécutez ./autorun.sh
fourni par Realtek, la première chose que ce script fait est de décharger le module kernel en cours d'utilisation pour votre carte réseau:
echo "Check old driver and unload it."
check=`lsmod | grep r8169`
if [ "$check" != "" ]; then
echo "rmmod r8169"
/sbin/rmmod r8169
fi
check=`lsmod | grep r8125`
if [ "$check" != "" ]; then
echo "rmmod r8125"
/sbin/rmmod r8125
fi
Et une fois les modules déchargés, le périphérique ne peut plus communiquer avec l'OS (ou l'inverse). Je me suis donc retrouvé comme un idiot avec un serveur hors ligne, sans moyen de poursuivre l'installation. Plus de réseau = plus de ssh + plus d'internet.
Il m'a donc fallu, sur un autre PC, télécharger les paquets relatifs au linux-header-amd64 (à savoir linux-header-amd64, linux-headers-5.18.0-0.deb11.4-amd64, linux-headers-5.18.0-0.deb11.4-common et linux-kbuild-5.18 - je ne suis pas remonté plus loin dans les dépendances, car je savais que j'avais les paquets nécessaires déjà installés). J'ai mis tout ça sur une clef usb, monté la clef usb sur le serveur (lsblk
pour vérfier le device name, mount /dev/sdk1 /tmp
, cd /tmp
, apt install ./*.deb
), et enfin, j'ai pu faire retourner l'autorun de Realtek.
ENFIN, ENFIN! j'avais les firmwares du constructeur, j'avais la dernière version, j'avais passé beaucoup de trop de temps sur ce problème, et j'avais plein d'espoir, encore renouvelé, renforcé par toutes ces épreuves.
Un dernier reboot, un dernier speedtest, et putain de bordel de merde de carte réseau à la con, chier!! 400MBS???!!???!!?? 400 putain de megabits? seulement!!!?? Putain de fibre mutalisée!! Forcément, le soir, tout le monde est à la maison et utilise internet. Et dans un immeuble de 120 apparts, ca fait du monde.
Bon, finalement, le lendemain, je reteste, avec moins de monde à la maison, j'imagine que ça devrait être mieux. Et là, à peu près 2300Mbps, ce qui correspond à ce que j'attendais. Cool.
En résumé, si vous avez besoin d'installer les firmwares Realtek, pensez à lire le README, à vous connecter localement ou via une seconde carte réseau, et à installer les kernel headers AVANT! (apt install linux-headers-$(uname -r)
)
Ajouter un commentaire