# [WLAN] BCM4313 802.11bgn

## hitachi

Hallo,

ich bekomme mein WLAN nicht zum Laufen. Ich denke, ich habe die einschlägigen Anleitungen gelesen. Ich glaube auch eine Idee zu haben, was das Problem ist. Zuerst aber mal einige Infos:

```
lspci | grep -i network
```

 *Quote:*   

> 04:00.0 Network controller: Broadcom Corporation BCM4313 802.11bgn Wireless Network Adapter (rev 01)

 

```
wpa_supplicant -i wlp4s0 -D wext -c /etc/wpa_supplicant/wpa_supplicant.conf -d
```

 *Quote:*   

> wpa_supplicant v2.0
> 
> random: Trying to read entropy from /dev/random
> 
> Successfully initialized wpa_supplicant
> ...

 

 *dmesg wrote:*   

> [10325.533927] bcma0:0: Missing Free firmware
> 
> [10325.535298] ieee80211 phy0: brcmsmac: fail to load firmware /*(DEBLOBBED)*/

 

Ich denke mal, die letzte Zeile nennt das Problem. Ist das mein Problem? Unten noch ein paar zusätzliche Infos.

 * /etc/make.conf wrote:*   

> ACCEPT_LICENSE="-* @FREE"

 

 *emerge -av gentoo-sources wrote:*   

> [ebuild   R    ] sys-kernel/gentoo-sources-3.12.13:3.12.13  USE="deblob -build -experimental -symlink" 0 kB

 

 */etc/portage/package.license wrote:*   

> sys-kernel/linux-firmware freedist

 

Ich will die Einstellung in der make.conf nicht ändern. Bei einzelnen Programmen bin ich bereit über die package.license individuell Lizenzvereinbarungen zu akzeptieren. Wenn das Problem also an der deblob-Use-Flagg liegt folgende Fragen:

Kann ich den Kernel selber patchen, um die brcmsmac- brcmfmac- Treiber zu bekommen?

Wenn ja, wie mache ich das?

Die Firmware müsste ich ja im gentoo-sources Paket finden können, oder?

Wo finde ich die Lizenzbedingungen, auf die ich mich dann einlasse?

Hat jemand einen griffigeren Vorschlag für die Betreffzeile?

Schon mal jetzt Danke für die Hilfe.

----------

## Fijoldar

Hallo,

da ich in meinem Notebook ebenfalls ein Broadcom WLAN Gerät BCM4313 habe, kann ich nur den Rat geben: Finger weg von dem freien Treiber! Der taugt hier leider gar nichts. Es sei denn, man entfernt sich nicht mehr als 1m vom Router dann. Dann hat man eine einigermaßen stabile Verbindung. Hier ist wohl der proprietäre Treiber broadcom-sta

```
net-wireless/broadcom-sta

     Available versions:  ~5.100.82.112-r3^m ~6.30.223.30-r2^m ~6.30.223.141^m {KERNEL="linux"}

     Homepage:            http://www.broadcom.com/support/802.11/linux_sta.php

     Description:         Broadcom's IEEE 802.11a/b/g/n hybrid Linux device driver
```

nötig. 

Was das obige Problem angeht, könnte das Paket

```
sys-firmware/b43-firmware
```

  weiterhelfen. Das sollte die entsprechende Firmware beinhalten um die Karte zum Laufen zu bekommen.

Ein anderer Weg wäre, sich die Firmware manuell zu holen. http://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/log/?qt=grep&q=BCM4313

----------

## forrestfunk81

 *Fijoldar wrote:*   

> da ich in meinem Notebook ebenfalls ein Broadcom WLAN Gerät BCM4313 habe, kann ich nur den Rat geben: Finger weg von dem freien Treiber! Der taugt hier leider gar nichts. Es sei denn, man entfernt sich nicht mehr als 1m vom Router dann.

 

Das kann ich so nicht bestätigen. Seit über 2 Jahren läuft bei mir der BCM4313 Chip mit dem brcmsmac Treiber aus dem Kernel. Anfangs war das ziemlich instabil, aber seit der Treiber nicht mehr unter den Staging Kernel Drivers ist, sondern im normalen Entwicklungszweig bin ich recht zufrieden damit.

Zurück zum Thema: Wie Fijoldar schon schrieb, kannst du die Firmware durch emergen von sys-firmware/b43-firmware oder sys-kernel/linux-firmware installieren. Die Firmware ist als BLOB in beiden Packages enthalten, der Kernel enthält den Treiber. Patchen muss man nichts.

----------

## hitachi

Ich habe sys-kernel/linux-firmware-20130728 bereits installiert. Wenn ich das richtig verstehe, wird der Treiber im Kernel als unfreie Software gesehen und darum entfernt.

 *http://linux-libre.fsfla.org/pub/linux-libre/releases/3.10.25-gnu/deblob-3.10 wrote:*   

> announce BRCMSMAC - "Broadcom IEEE802.11n PCIe SoftMAC WLAN driver"
> 
> reject_firmware drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
> 
> clean_blob drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
> ...

 

Damit das ganze dann läuft, müsste ich doch den Treiber wieder in den Kernel "einschleusen", oder? Wenn ich mich dazu entscheiden würde, den  proprietäre Treiber broadcom-sta zu verwenden, wäre ich dann vom Kernel komplett unabhängig?

----------

## Fijoldar

Der Treiber ist schon frei, nur die Firmware nicht. Darum wurde diese durch linux-firmware nicht mitinstalliert (da deine Einstellung das so verlangt).

Du könntest also

1. wie schon erwähnt, sys-firmware/b43-firmware installieren und schauen ob der freie Treiber zufriedenstellend läuft

oder 

2. den proprietären Treiber broadcom sta verwenden. Dieser ist nicht ganz unabhängig vom Kernel. Ältere Treiber funktionieren nicht mit neueren Kerneln und der Treiber muss ja auch gegen den Kernel kompiliert werden. Aber im Kernel selbst muss nichts extra aktiviert werden.

Wichtig wäre noch, dass die beiden Treiber nicht kompatibel sind. D.h. wenn du dich für einen entscheidest, darfst du den anderen nicht installiert haben (bzw. die entsprechenden Module müssen geblacklistet werden).

-------

Zum Thema brcsmac vs broadcom-sta: Das ist nur ein nett gemeinter Hinweis von mir, dass der freie Treiber hier bei mir ziemliche Probleme macht und ich auf den proprietären Treiber ausweichen muss. Es kann natürlich sein, dass er trotzdem läuft. Macht er im Prinzip bei mir auch, nur nimmt die Leistung stark ab, wenn man sich auch nur etwas vom Router entfernt. Davor wollte ich warnen. Wenn du ihn aber sowieso schon im Kernel hast, probiere ihn zunächst einfach mal aus. Den proprietären Treiber kann man immer noch installieren.

----------

## hitachi

Dann stehe ich aber jetzt echt auf dem Schlauch. Denn über /etc/portage/package.license habe ich die freedist-Lizenz akzeptiert und es ist ja auch etwas installiert worden:

 *ls /lib/firmware/brcm/ wrote:*   

> bcm4329-fullmac-4.bin  bcm43xx-0.fw  bcm43xx_hdr-0.fw  brcmfmac43236b.bin  brcmfmac4329.bin  brcmfmac4330.bin  brcmfmac4334.bin

 

Bis jetzt dachte ich, dass sowohl b43-firmware als auch linux-firmware die gleichen Dateien in /lib/firmware/brcm/ anlegen, die ich ja auch manuell anlegen könnte. Beim Installieren des Kernels werden aber die Broadcom - Binaries aus dem Kernel entfernt und stehen nicht zur Verfügung.

Es scheint so zu sein, dass das Thema brcsmac vs broadcom-sta beim 4313 nicht nur von persönlichen Vorlieben geprägt ist sondern auch durch Unterschiede in der Hardware, die vom Nutzer nicht zu erkennen sind. Siehe:

----------

## schmidicom

Also wenn dein Kernel den Treiber wirklich wegen der zusätzlichen Firmware ablehnt dann wäre es vermutlich sinnvoller auf das USE-Flag "deblob" zu verzichten als den Kernel mit einem Patch so verbiegen zu wollen das er bei diesem einen Treiber eine Ausnahme macht.

Sicherheit ist ja schön und gut doch sie darf/sollte nicht der eigenen Produktivität im Weg stehen.

----------

## hitachi

jetzt bin ich lange nicht mehr dazu gekommen zu antworten. Die USE-Flag will ich nicht ändern. Das würde auch sehr viele andere Dinge wieder in den Kernel schreiben, die ich nicht haben will. Ich werde aber mal versuchen mit dem b-sta weiter zu kommen und schauen, was damit passiert.

----------

## firefly

 *hitachi wrote:*   

> jetzt bin ich lange nicht mehr dazu gekommen zu antworten. Die USE-Flag will ich nicht ändern. Das würde auch sehr viele andere Dinge wieder in den Kernel schreiben, die ich nicht haben will. Ich werde aber mal versuchen mit dem b-sta weiter zu kommen und schauen, was damit passiert.

 

Welche anderen sachen würden dann in den Kernel geschrieben? Und was meinst du mit Kernel, das übersetzte Binary oder die Quellen?

Und irgendwelche Firmware für einen Treiber sollten egal sein, solange du diesen Treiber in der Konfiguration nicht aktiviert hast.

----------

