Mots-Clés ‘Broadcom BCM4322’

Configuration de l’adaptateur Wifi Broadcom BCM4322 sous Linux/Slackware/Salix OS

Samedi 4 janvier 2014

J’ai récemment acquis l’ordinateur portable Dell Precision M4400, sur lequel j’ai installé une distribution Linux. J’évoquerai en détail cette installation dans un prochain article, mais je souhaitais d’abord m’attarder sur un des seuls (pour ne pas dire le seul) points qui n’a pas été pris en charge par défaut : l’adaptateur Wifi Broadcom BCM4322.

C’est malheureusement un problème récurrent lorsqu’on installe Linux sur un ordinateur pourvu d’un adaptateur Wifi. Ce n’est d’ailleurs pas un hasard si mes articles précédents sur le même thème (un premier consacré à la clé Hercules Wireless N USB mini, et un deuxième consacré à la clé Amarina 54Mbps Wireless USB Adapter) font partie des articles les plus lus de mon blog.

L’ordinateur portable Dell Precision M4400 présente donc l’adaptateur Wifi Broadcom BCM4322, comme j’ai pu le constater clairement avec l’outil en ligne de commandes lspci :

# lspci -nn
…
0c:00.0 Network controller [0280]: Broadcom Corporation BCM4322 802.11a/b/g/n Wireless LAN Controller [14e4:432b] (rev 01)

Avec ma distribution Linux courante, Salix OS 13.37 (fondée sur Slacware Linux 13.37), l’adaptateur Wifi était par défaut détecté par le module b43, inclus dans le noyau Linux. Malheureusement, l’interface réseau n’était pas créée, et un outil comme iwconfig n’affichait aucune interface Wifi.

Par ailleurs, j’ai observé les messages suivants dans dmesg:

[   11.473082] b43-phy0: Broadcom 4322 WLAN found (core revision 16)
[   11.488189] b43-phy0 ERROR: FOUND UNSUPPORTED PHY (Analog 8, Type 4, Revision 4)
[   11.488733] b43: probe of ssb0:0 failed with error -95
[   11.489014] Broadcom 43xx driver loaded [ Features: PMLS, Firmware-ID: FW13 ]

La documentation officielle du pilote b43 est assez claire. Elle donne l’état des lieux de la prise en charge des puces Broadcom.

Pour le contrôleur avec l’identifiant 14e4:432b, la documentation indique que le module b43 a une prise en charge partielle à partir du noyau Linux 2.6.39. Salix OS 13.37 présentant le noyau Linux en version 2.6.37, j’ai dû me retourner vers l’alternative (malheureusement propriétaire) indiquée par la documentation : le module wl, fourni indépendamment du noyau par Broadcom dans un paquet nommé « 802.11 Linux STA driver ».

Ce module est disponible dans le paquet broadcom-sta, mis à disposition par le dépôt SlackBuilds.org :

# slapt-src --search broadcom
broadcom-sta:5.100.82.112 - broadcom-sta (Broadcom wireless drivers)

Malheureusement, l’installation de ce paquet avec slapt-src échoue, le paquet source ne pouvant être téléchargé :

# slapt-src -i broadcom-sta
The following packages will be installés:
broadcom-sta
Voulez-vous continuer ? [y (oui) / N (non)] y
Récupération de README...Réalisé
Récupération de broadcom-sta.SlackBuild...Réalisé
Récupération de broadcom-sta.info...Réalisé
Récupération de doinst.sh...Réalisé
Récupération de slack-desc...Réalisé
Récupération de http://www.broadcom.com/docs/linux_sta/hybrid-portsrc_x86_32-v5_100_82_112.tar.gz...Raté

Un article du blog « rog notes » donne les instructions à suivre pour contourner ce problème. Je les reprends ici en les adaptant à Slackware 13.37 et en les complétant :
1) Télécharger le paquet source (hybrid-portsrc_x86_…tar.gz) correspondant au système requis (32 ou 64 bits), ainsi que le paquet slackbuild (broadcom-sta.tar.gz), sur la page SlackBuilds.org.
2) Se déplacer dans le répertoire où ont été sauvés les fichiers téléchargés, puis extraire le paquet slackbuild.

# tar xvfz broadcom-sta.tar.gz

3) Se déplacer dans le répertoire broadcom-sta créé puis y copier le paquet source.

# cd broadcom-sta
# cp -a ../hybrid-portsrc_x86_…tar.gz

4) Se connecter en tant qu’administrateur (root) puis générer le paquet Slacware. Attention : ceci nécessite que des outils de développement (compilateurs, bibliothèques, …) soient installés sur le système.

$ su
$ ./broadcom-sta.SlackBuild

5) Copier le paquet Slackware généré dans /tmp et nommé broadcom-sta…_Sb0.tgz (mieux vaut garder ce paquet quelque part en cas de besoin).

$ cp -a /tmp/broadcom-sta…_Sb0.tgz ./

6) Installer le paquet Slackware.

$ installpkg broadcom-sta..._Sb0.tgz

7) Décharger le module b43 (ainsi que le module ssb lié) puis charger le module wl (fraîchement installé).

$ modprobe -r b43 ssb
$ modprobe wl

8) Utiliser l’utilitaire de son choix (iwconfig, wicd, NetworkManager) afin de configurer l’interface réseau qui devrait normalement avoir été créée. Attention : dans mon cas, cette interface réseau porte l’identifiant eth1, et non le classique wlan0.

9) Ajouter les modules b43 et ssb dans la liste noire des modules afin de s’assurer que c’est bien le module wl qui sera pris en compte lors du redémarrage du système.

$ echo "blacklist ssb" >> /etc/modprobe.d/blacklist
$ echo "blacklist b43" >> /etc/modprobe.d/blacklist

Merci à Roger du blog « rog notes » pour l’astuce. J’espère que cet article sera utile à toute personne confrontée à l’installation d’un pilote pour un adaptateur Wifi Broadcom.