Broadcom Wireless
Dieser Artikel bezieht sich auf die aktuelle Linux-Distribution openSUSE (Version Leap 42.3 und Tumbleweed) und nur auf intern verbaute PCI-Geräte, nicht auf externe USB-Geräte welche einen Chipsatz von Broadcom enthalten. Letzte Überarbeitung und Stand der Dinge (ausgenommen die Listen der PCi-IDs und Zuordnung der Module welche nur noch einen ungefähren Überblick verschaffen sollen) war/ist vom 25.02.2018. |
Inhaltsverzeichnis
Einleitung
In diesem Artikel geht es darum welche WLAN-Karte, bzw. welcher Chip von Broadcom (Wireless/Drahtlos) von welchem Modul („Treiber“) unterstützt wird. Es wird hier auch, falls notwendig, erklärt woher was zu beziehen (Firmware, Treiber) und einzurichten ist. Hauptsächlich geht es hier um die Verwendung unter der aktuellen Version von openSUSE Leap und Tumbleweed, Ergänzungen zu anderen Distributionen sind aber jederzeit willkommen.
Es ist uninteressant welche Bezeichnung der Hartware (Hardware) als Kennung von außen her mitgegeben wurde, z.B. Broadcom BCM4311, wichtig ist was wirklich innerlich verarbeitet wurde.
Welche(r) Karte/Chip genau verwendet wird, erfahrt ihr über die Ausgabe von:
lspci -nnk | grep -i -A3 net
Unter openSUSE als „normaler“ Benutzer mit:
/sbin/lspci -nnk | grep -i -A3 net
Dort sollten dann bestimmte Nummern auftauchen, welche die Hersteller- und Produktnummer anzeigen, zum Beispiel 14E4:4325 (die erste Nummer stellt die Hersteller-ID (14E4) dar, die zweite Nummer die Geräte-/Produkt-ID (4325). Nach diesen Nummern könnt ihr hier dann das passende Modul herausfinden, eventuell wird es sogar gleich bei der Ausgabe mit angezeigt.
Welches Modul benötigt wird, lässt sich aber auch mit der Eingabe von
modprobe -c | grep -i "14E4.*4325"
, über Root/su/sudo in der Konsole eingegeben, herausfinden. Die Nummern müssen dann mit denen ersetzt werden, welche über lspci ermittelt wurden. Das gilt (neuerdings) nicht bei Karten die den proprietären Treiber (broadcom-wl/broadcom-sta) benötigen oder nutzen können, aber dafür gibt es hier ja diese Liste(n).
Übersicht der PCI-IDs und das dazu passende Modul
PCI-ID | Modul (Treiber) | Alternative |
---|---|---|
14E4:0576 | bcma/brcm80211 (brcmsmac) | |
14E4:43A0 | broadcom-wl | |
14E4:4301 | b43 | |
14E4:4306 | b43 | |
14E4:4307 | b43 | |
14E4:4311 | b43 | broadcom-wl |
14E4:4312 | b43 | broadcom-wl |
14E4:4313 | bcma/brcm80211 (brcmsmac) | broadcom-wl |
14E4:4315 | b43 | broadcom-wl |
14E4:4318 | b43 | |
14E4:4319 | b43 | |
14E4:432A | broadcom-wl | |
14E4:432B | b43 | broadcom-wl |
14E4:432C | b43 | broadcom-wl |
14E4:432D | broadcom-wl | |
14E4:4320 | b43 | |
14E4:4321 | b43 | |
14E4:4322 | b43 | |
14E4:4324 | b43 | |
14E4:4325 | b43 | |
14E4:4328 | b43 | broadcom-wl |
14E4:4329 | b43 | broadcom-wl |
14E4:4331 | bcma/brcm80211 (brcmsmac) | broadcom-wl |
14E4:4350 | b43 | |
14E4:4353 | bcma/brcm80211 (brcmsmac) | broadcom-wl |
14E4:4357 | bcma/brcm80211 (brcmsmac) | broadcom-wl |
14E4:4358 | bcma/brcm80211 (brcmsmac) | broadcom-wl |
14E4:4359 | bcma/brcm80211 (brcmsmac) | broadcom-wl |
14E4:4365 | bcma/brcm80211 (brcmsmac) | broadcom-wl |
14E4:43b1 | bcma/brcm80211 (brcmsmac) | broadcom-wl |
14E4:4727 | bcma/brcm80211 (brcmsmac) | broadcom-wl |
14E4:A8D6 | b43 | |
14E4:A8D8 | bcma/brcm80211 (brcmsmac) |
b43 (ssb)
Unterstützte Chipsätze
- b43
14A4:4318 | 14E4:A8D6 | 14E4:4301 | 14E4:4306 | 14E4:4307 |
14E4:4311 | 14E4:4312 | 14E4:4315 | 14E4:4318 | 14E4:4319 |
14E4:4320 | 14E4:4321 | 14E4:4322 | 14E4:4324 | 14E4:4325 |
14E4:4328 | 14E4:4329 | 14E4:432B | 14E4:432C | 14E4:4350 |
Bezugsquellen/Einrichtung
Die Module („Treiber“) sind meistens schon im Kernel enthalten und aktiviert, werden also mitgeliefert. Sofern die passende Karte vorhanden ist und erkannt wurde, sollten die richtigen Module (u.a. b43/b43legacy und ssb) schon geladen sein. Dieses lässt sich mit dem Befehl
lsmod
oder
/usr/sbin/hwinfo --wlan
, bzw.
/usr/sbin/hwinfo --netcard
über die Shell, oder einem Terminalemulator feststellen.
Die Firmware kann mit dem Befehl
install_bcm43xx_firmware
installiert werden. Eine Verbindung zum Internet sollte schon bestehen (z.B. über LAN). Über Root/su in die Shell/einem Terminalemulator einloggen und folgende Befehle ausführen:
zypper in b43-fwcutter
/usr/sbin/install_bcm43xx_firmware
Danach muss eventuell noch das Netzwerk, bzw. der NetworkManager neu gestartet werden. Beispiel (bei Verwendung von systemd und dem NetworkManager):
systemctl restart NetworkManager.service
Wird der NetworkManager nicht verwendet, sondern YaST/ifup, dann ist anstelle diesem der Eintrag network zu nehmen, also:
systemctl restart network.service
Zur Gesamtliste der PCI-IDs und Module.
bcma/brcm80211 (brcmsmac/brcmfmac)
Unterstützte Chipsätze
- bcma/brcmsmac (PCIe):
14E4:A8D8 | 14E4:0576 | 14E4:4313 | 14E4:4331 | 14E4:4353 | |
14E4:4357 | 14E4:4358 | 14E4:4359 | 14E4:4365 | 14E4:43b1 | 14E4:4727 |
Bezugsquellen
Die passende Firmware (bcm43xx-0.fw und bcm43xx_hdr-0.fw), für openSUSE, ist im Paket kernel-firmware enthalten, dieses ist von der DVD oder aus dem OSS-Repo zu installieren.
Einrichtung
Die Module („Treiber“) sind meistens schon im Kernel enthalten und aktiviert, werden also mitgeliefert. Sofern die passende Karte vorhanden ist und erkannt wurde, sollten die richtigen Module (u.a. bcma/brcmsmac) schon geladen sein. Dieses lässt sich mit dem Befehl
lsmod
oder
/usr/sbin/hwinfo --wlan
, bzw.
/usr/sbin/hwinfo --netcard
über die Shell, oder einem Terminalemulator feststellen.
Die Firmware kann mittels RPM, Zypper, oder YaST installiert werden. Wer schon das OSS-Repo eingebunden und eine bestehende Internetverbindung hat, führt einfach als Root/su in der Shell/einem Terminalemulator folgenden Befehl aus:
zypper in kernel-firmware
Dieses funktioniert auch wenn keine Verbindung zum Internet besteht, die DVD eingelegt und als Installationsquelle aktiviert ist.
Danach muss eventuell noch das Netzwerk, bzw. der NetworkManager neu gestartet werden. Beispiel (bei Verwendung von systemd und dem NetworkManager):
systemctl restart NetworkManager.service
Wird der NetworkManager nicht verwendet, sondern YaST/ifup, dann ist anstelle diesem der Eintrag network zu nehmen, also:
systemctl restart network.service
Zur Gesamtliste der PCI-IDs und Module.
broadcom-wl/broadcom-sta
Dieser Treiber sollte nur verwendet werden wenn die Verwendung eines der zuvor genannten Module nicht möglich ist, oder Probleme bereitet.
Unterstützte Chipsätze
(Version: 6.30.223.271)
14E4:43A0 | 14E4:4311 | 14E4:4312 | 14E4:4313 | 14E4:4315 |
14E4:4328 | 14E4:4329 | 14E4:432A | 14E4:432B | 14E4:432C |
14E4:432D | 14E4:4331 | 14E4:4353 | 14E4:4357 | 14E4:4358 |
14E4:4359 | 14E4:4365 | 14E4:43b1 | 14E4:4727 |
(Letzte Aktualisierung der Liste am 25.02.2018. Eine aktuelle Liste ist auch unter https://www.broadcom.com/support/download-search/?pf=Wireless+LAN+Infrastructure im Abschnitt „Release Notes“ zu finden.)
Bezugsquellen
Für openSUSE gibt es fertige Pakete über PackMan.
- Direkter Link zu PackMan (z.B. für "Ein-Klick Installation").
Einrichtung
Es muss das zum Kernel passenden KM-Paket (KMP = Kernel Module Package) installiert werden. Welches das ist, lässt sich mit dem Befehl
uname -r
herausfinden.
Beispiel: Ergibt die Ausgabe 3.1.10-1.9-desktop, dann muss das Paket broadcom-wl-kmp-desktop und zusätzlich, unabhängig vom Kernel, noch das Paket broadcom-wl installiert werden. Wenn das Repo (die/das Paketquelle/-depot) von PackMan eingebunden ist und eine Verbindung zum Internet besteht, dann reicht ein:
zypper in broadcom-wl broadcom-wl-kmp-desktop
(desktop ist eventuell durch default, pae oder xen zu ersetzen, je nachdem was die Ausgabe von uname -r ergibt.)
Bei der Installation wird die Datei 50-broadcom-wl-blacklist.conf unter /etc/modprobe.d/ angelegt, diese sorgt dann dafür das andere "störende" Module (b43, brcm80211, ndiswrapper usw.) nicht mehr geladen werden.
Nach einem Neustart des Rechners sollte das richtige Modul (wl) geladen sein und der Einrichtung des Netzwerkes nichts mehr im Wege stehen. Ohne einem Neustart, um die Module gleich zu verwenden, sind folgende Schritte nötig:
modprobe -v -r b43 brcmsmac
modprobe -v wl
Danach muss eventuell noch das Netzwerk, bzw. der NetworkManager neu gestartet werden. Beispiel (bei Verwendung von systemd und dem NetworkManager):
systemctl restart NetworkManager.service
Wird der NetworkManager nicht verwendet, sondern YaST/ifup, dann ist anstelle diesem der Eintrag network zu nehmen, also:
systemctl restart network.service
Ob das Modul dann wirklich geladen wurde und in Verwendung ist, lässt sich mit lsmod oder
/usr/sbin/hwinfo --wlan
, bzw.
/usr/sbin/hwinfo --netcard
über die Shell, oder einem Terminalemulator feststellen.
Zur Gesamtliste der PCI-IDs und Module.
Offline Installationen/Installationen ohne bestehende Verbindung zum Internetz am zu nutzenden Computer
Hier wird erklärt, wie man die benötigten Pakete ohne eine bestehende Verbindung zum Internetz (Internet) des einzurichtenden Computer installiert. Dazu muss man jedoch einen anderen Computer mit einer bestehenden Verbindung zum Internetz verfügbar haben (z.B.: ein Zweitrechner, bei Freunden/Freundinnen oder Bekannten, Internetcafé, weiteres Betriebssystem auf dem gleichen Gerät mit bestehender Internetverbindung usw.). |
Larry Finger, einer der Hauptbearbeiter von Wlan Treibern des Kernels, hat das openSUSE Installationsscript zur Installation der b43 Firmware angepasst und bietet diese Datei als Download auf seiner Webseite an.
Zur Erklärung warum dies so ist:
Unglücklicherweise erlaubt Broadcom nicht die Firmware für Wlan-Karten, die b43 oder b434-legacy benutzen, innerhalb einer Distribution direkt zu veröffentlichen.
openSUSE beinhaltet nun ein Script welches die benötigten Dateien herunterlädt und die Firmware mittels des Programms b43-fwcutter extrahiert.
Diese extrahierten Dateien dürfen nun wieder veröffentlicht werden, aber aufgrund der Größe von 12 MB sind diese auf dem openSUSE Installationsmedium nicht vorhanden.
Um die Installation der Firmware so leicht wie möglich zu machen, hat Larry Finger nun das bcm43xx Firmware Installationsscript angepasst, um auch ohne bestehende Internetverbindung diese Firmware zu installieren.
Dieses Script sowie die benötigten Dateien sind in einem tar-Archive verpackt, welches auf einem Rechner mit Internetverbindung heruntergeladen werden und per USB-Stick bzw. CD auf den Rechner kopiert werden kann, der den entsprechenden Broadcom WLAN-Adapter beinhaltet.
Bezugsquellen/Installation
Die Schritte im einzelnen:
1. Download http://www.lwfinger.com/b43-firmware/no_net_install_bcm43xx_firmware.tar.bz2 auf einem System mit Netzwerkverbindung. Diese Datei ist für alle openSUSE Versionen in allen Archtekturen installierbar.
2. Kopiere die Datei auf das openSUSE System mit Broadcom Wlan mittels USB-Stick oder CD.
3. In dem Verzeichnis, in dem diese Datei sich befindet, folgendes Kommando ausführen:
tar jxvf no_net_install_bcm43xx_firmware.tar.bz2
Dieses Kommando erstellt ein neues Unterverzeichnis bcm43xx_firmware welches 4 Dateien beinhaltet.
4. Installiere die b43 and b43legacy Firmware indem folgendes Kommando ausgeführt wird:
sudo bcm43xx_firmware/install_bcm43xx_firmware_no_net
Dieses Kommando erstellt die benötigten Firmware Dateien in /lib/firmware/b43/ und /lib/firmware/b43legacy/. Danach den Computer neu starten. Nach dem Neustart sollte die Wlan-Karte funktionieren und kann dann mit Yast/wicked oder Netzwerkmanager wie andere Karten konfiguriert werden.
Links und weitere Hinweise
Passende Module geladen, aber der NetworkManager stellt sich stur? Dann könnte diese [Seite] die Lösung sein.
- Übersicht b43 auf linuxwireless.org
- Übersicht brcm80211 auf linuxwireless.org
- collectNWData - Hilfreiches Analysescript bei Netzwerkprobleme
- collectNWDataGUI - collectNWData mit GUI (Grafische Benutzeroberfläche)
- Liste der Binärdateien und Readme zu brodcom-wl/-sta bei Broadcom.