Dominique Meeùs
Dernière modification le   
retour à la table des matières — à l’index — à ma page de départ

Broadcom BMC4606 rev 03, adaptateur WiFi PCI

Il y a un certain nombre d’adaptateurs de réseau sans fil Broadcom BMCxxxx répandus. J’en ai un dans un Dell Latitude D610. La commande lspci l’identifie comme "14e4:4324 (rev 03)".

Cet adaptateur a été reconnu à l’installation et complètement installé depuis que j’ai cette machine, en juin 2009, donc avec Ubuntu 9.04 et jusqu’à Ubuntu 10.10. Par contre, en installant Ubuntu 12.04, ça ne fonctionnait plus. L’adaptateur est bien reconnu comme présent, mais il ne fait rien. Tant dans l’applet de gestion de réseau que dans les messages d’erreur au démarrage (dmesg), il est marqué micrologiciel manquant et plus précisément, que manquent les fichiers /lib/firmware/b43/ucode5.fw ou /lib/firmware/b43-open/ucode5.fw, dont le module b43 a besoin. This firmware install doesn’t seem to work for me. I used this script instead. (Depends on the package b43-fwcutter).Un paquet de programme, firmware-b43-install, devrait y mettre bon ordre, mais ça ne marche pas. Ce paquet ne contient en fait pas le ou les fichiers de firmware nécessaire. C’est un paquet qui se réduit essentiellement à une procédure de type postinst, qui devrait télécharger le fichier qui contient le firmware, l’extraire et le placer au bon endroit. La procédure contrôle la concordance entre le noyau, l’adaptateur et les firmwares disponibles, mais considère mon adaptateur comme « legacy » (ce qui n’est en fait pas le cas) et ne fait rien.

J’ai téléchargé une copie du paquet deb de firmware-b43-install. Je l’ai ouvert avec le gestionnaire d’archives. J’ai lu le fichier postinst qu’il contenait. J’en ai tiré la partie procédurale, dite latest_firmware(), sans les contrôles pour en faire un script shell que j’ai appelé b43fw et sauvé dans le répertoire ~/bin où je mets mes scripts personnels. Ce script dépend du paquet b43-fwcutter qu’il faut donc avoir installé avant. Le contenu est le suivant :

#!/bin/sh

set -e

tmp=`mktemp -q -d`

cd $tmp
export FIRMWARE_INSTALL_DIR="/lib/firmware"

if [ ! -d "$FIRMWARE_INSTALL_DIR" ]; then
        mkdir -p $FIRMWARE_INSTALL_DIR
fi

# use apt proxy
APT_PROXIES=$(apt-config shell \
http_proxy Acquire::http::Proxy \
https_proxy Acquire::https::Proxy \
ftp_proxy Acquire::ftp::Proxy \
)

if [ -n "$APT_PROXIES" ]; then
        eval export $APT_PROXIES
fi

wget --timeout=60 http://mirror2.openwrt.org/sources/broadcom-wl-5.10.56.27.3_mipsel.tar.bz2
if [ $? -ne 0 ]; then
	echo "Some problem occurred during the firmware download. Please check your internet connection." 
	exit 0
    else
	if [ -d /lib/firmware/b43 ]; then
	   echo "Deleting old extracted firmware..."
	   rm -rf /lib/firmware/b43
	fi
fi
tar xvjf broadcom-wl-5.10.56.27.3_mipsel.tar.bz2
cd broadcom-wl-5.10.56.27.3/driver/wl_apsta
b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" wl_prebuilt.o
rm -rf $tmp

et dans ma situation, ça marche les doigts dans le nez. On pourrait (avec l’aide de certains forums qui discutent cette question) faire ça à la main : télécharger ce qu’il faut, en extraire ce qu’il faut avec l’aide de b43-fwcutter et copier le résultat où il faut. Comme je suis paresseux, je préfère exécuter mon bin/b43fw et voir tout se faire tout seul.

Dominique Meeùs . Date: 2011… 2016