Configurer une carte Wifi / Bluetooth BCM43142 sur Ubuntu
Ce guide présente quelques éléments de configuration à mettre en place pour pleinement disposer des fonctionnalités de la carte hybride Wifi / Bluetooth Broadcom BCM43142 sur Ubuntu.
Ce guide est testé sur:
- Ubuntu 15.10 Wily Werewolf
Installation
Installation des pilotes WiFi
Installez les pilotes WiFi pour la carte Wifi BCM43142:
sudo apt-get install bcmwl-kernel-source
Mise en place du firmware Bluetooth
Installez les logiciels nécessaires à l'extraction du firmware depuis les pilotes Windows:
sudo apt-get install cabextract bluez
Remarque: le paquet bluez contient le logiciel hex2hcd.
Détectez le modèle de carte Bluetooth (normalement BCM43142A0):
bluetoothModel="$(command lsusb \
| command grep --max-count=1 'BCM' \
| command sed -e 's/^.*\(BCM[^ ]*\) .*$/\1/')"
Détectez l'id matériel de la carte Bluetooth:
bluetoothId="$(command lsusb \
| command grep --max-count=1 "${bluetoothModel}" \
| command cut -c 24-32)"
Déterminez le nom du fichier firmware correspondant au modèle:
firmwareFile="${bluetoothModel}-${bluetoothId//:/-}.hcd"
Détectez le modèle spécifique de la carte Bluetooth:
bluetoothModelSearchString="$(command dmesg \
| command grep -i 'BCM (' \
| command tail -n 1 \
| command sed -e 's/^.*BCM (\([^)]*\)) build \(.*\)$/\1.*.\2/g')"
Téléchargez les pilotes Bluetooth pour Microsoft Windows:
cabFile="/tmp/20662520_6c535fbfa9dca0d07ab069e8918896086e2af0a7.cab"
command wget 'http://download.windowsupdate.com/d/msdownload/update/driver/drvs/2014/07/20662520_6c535fbfa9dca0d07ab069e8918896086e2af0a7.cab' \
--output-document="${cabFile}"
Décompressez le fichier cab:
command mkdir -p '/tmp/cabContents'
command cabextract -d '/tmp/cabContents' "${cabFile}"
Détectez le nom du fichier firmware correspondant au modèle:
bluetoothFirmware="$(command find '/tmp/cabContents' -name "${bluetoothModel}_${bluetoothModelSearchString}.hex")"
Si le fichier firmware a été trouvé, convertissez le au format hcd et mettez le en place:
[[ -e "${bluetoothFirmware}" ]] && command hex2hcd --output "/tmp/${firmwareFile}" "${bluetoothFirmware}"
Si le fichier hcd a été créé avec succès, mettez le en place:
[[ -e "/tmp/${firmwareFile}" ]] && sudo cp "/tmp/${firmwareFile}" "/lib/firmware/brcm/${firmwareFile}"
Créez un lien symbolique vers le fichier BCM.hcd si le module btusb n'arrive pas a détecter correctement le modèle de la carte Bluetooth:
[[ -e "/lib/firmware/brcm/${firmwareFile}" ]] && sudo ln -s "/lib/firmware/brcm/${firmwareFile}" "/lib/firmware/brcm/BCM.hcd"
Rechargez le module btusb pour prendre en compte le firmware:
sudo modprobe -r btusb;
sudo modprobe btusb;
Vérifiez la mise en place du module:
command dmesg | command egrep -i 'usbcore|bluetooth'
Problèmes connus
WiFi inactif en sortie de veille
Sur certains modèles de PC portables (à priori ceux disposant de l'USB 3 et utilisant le pilote xhci_hcd), le WiFi n'est pas disponible en sortie de veille. Une hypothèse sur le sujet est que cela est du à la disparition de la carte USB Bluetooth présente sur la carte Wifi.
Une solution de contournement de ce problème est de configurer l'ordinateur pour hiberner lorsque le capot est fermé au lieu de se mettre en veille, comme décrit par Activer l'hibernation sur Ubuntu.
Remerciements
- Merci à l'auteur de [Ubuntu 15.04] Bluetooth not working out of the box #1 (en).
- Merci à Rafael J. Wysocki pour Debugging hibernation and suspend (en).
- Merci à l'auteur de Debugging Kernel Suspend (en).