• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[Gelöst] Broadcom BCM4312 unter CentOS einrichten

gehrke

Administrator
Teammitglied
Moin *,

habe eine kleine Odyssee hinter mir. Ich habe centOS 7.2 auf einem älteren Notebook installiert, aber das WLAN lief nicht. Von openSUSE war ich gewohnt, nach der Installation die Firmware separat von Broadcom-Server zu laden und danach wuppte das WLAN. Darauf wurde man in den Logs auch eindeutig hingewiesen, alles war soweit gut.

Bei centOS musste ich erst mal lange suchen, konnte aber nichts anderes finden als eine Anleitung, wie man den Treiber von Broadcom als Source lädt, aufwändig patcht, kompiliert und dann von Hand reinschraubt:
https://wiki.centos.org/HowTos/Laptops/Wireless/Broadcom?action=show
Und das ganze nach jedem Kernel-Update neu!

Wollte ich erst nicht glauben, habe aber tatsächlich nichts anderes gefunden. Also habe ich in den sauren Apfel gebissen und die Anleitung Schritt für Schritt durchgeackert.
Ergebnis beim 2. Patch:
Code:
bash-4.2$ patch -p1 < ../wl-kmod-rhel7_1.patch
patching file src/wl/sys/wl_cfg80211_hybrid.c
Hunk #1 succeeded at 1825 (offset 21 lines).
Hunk #2 succeeded at 1891 (offset 21 lines).
Hunk #3 FAILED at 2074.
Hunk #4 succeeded at 2860 (offset 57 lines).
1 out of 4 hunks FAILED -- saving rejects to file src/wl/sys/wl_cfg80211_hybrid.c.re
Wieder erneute Recherche, die Lösung fand sich hier:
http://www.spinics.net/lists/centos/msg157788.html
Ursache: Mittlerweile ist Release 7.2 raus, das Wiki kennt aber immer noch nur 7.1.
Zum Glück ist vor mir schon ein anderer darüber gestolpert und war so nett, dies auch zu dokumentieren. Bin gespannt, wie lange es dauert, bis das Wiki dort angepasst wird.

Damit ließ sich der Treiber bauen und nun läuft das WLAN hier. Schönes Gefühl, aber offen gestanden frage ich mich, ob das anno 2016 so sein muss. Ich verstehe auch die Ursachen (Lizenzpolitik Broadcom), aber das hat mich jetzt wirklich viele Stunden gekostet.

War bei SUSE doch nicht alles Mist...

cu. gehrke
 

tomm.fa

Administrator
Teammitglied
Nur so aus Interesse, was geben den
Code:
uname -r
und
Code:
lspci -nnk | grep -iA3 net
aus?
 
OP
gehrke

gehrke

Administrator
Teammitglied
Code:
[root@j3 ~]# uname -r
3.10.0-327.3.1.el7.x86_64
Code:
[root@j3 ~]# lspci -nnk | grep -iA3 net
02:00.0 Ethernet controller [0200]: Qualcomm Atheros AR8132 Fast Ethernet [1969:1062] (rev c0)
        Subsystem: Dell Device [1028:0409]
        Kernel driver in use: atl1c
08:00.0 Network controller [0280]: Broadcom Corporation BCM4312 802.11b/g LP-PHY [14e4:4315] (rev 01)
        Subsystem: Dell Wireless 1397 WLAN Mini-Card [1028:000c]
        Kernel driver in use: wl
 
OP
gehrke

gehrke

Administrator
Teammitglied
Ich habe nun das Update auf 7.3 durchgeführt. Ihr dürft raten, was nun nicht mehr funktioniert... Richtig, der WLAN-Treiber ist wieder kaputt. :zensur:

Ein Compile der damals angepassten Sourcen wirft Fehlermeldungen...
 
OP
gehrke

gehrke

Administrator
Teammitglied
Habe ich damals für Release 7 nicht gefunden und jetzt auf die Schnelle ebenfalls nicht.

Es gibt diese etwas entmutigende Aussage hier:
NOTE: Due to an excessively restrictive license accompanying this Broadcom driver, the ELRepo repository developers have refrained from supplying it via an rpm package - hence this manual was created with the purpose of providing a single comprehenssive driver installation manual.
https://wiki.centos.org/HowTos/Laptops/Wireless/Broadcom
 
OP
gehrke

gehrke

Administrator
Teammitglied
gehrke schrieb:
Ich habe nun das Update auf 7.3 durchgeführt. Ihr dürft raten, was nun nicht mehr funktioniert... Richtig, der WLAN-Treiber ist wieder kaputt. :zensur:
Mittlerweile hat ein netter Mensch namens Alan das Wiki um die passenden Patches für 7.3 erweitert:
(last edited 2016-12-20 20:19:38 by AlanBartlett)
https://wiki.centos.org/HowTos/Laptops/Wireless/Broadcom
Ich erinnere mich, dass dies bei 7.2 ebenfalls eine Woche gedauert hat, bis das Wiki aktuell war.

Damit läuft das WLAN nun wieder...
 
OP
gehrke

gehrke

Administrator
Teammitglied
Nun ist 7.4 raus und unvorsichtigerweise wurde das Upgrade mittlerweile eingespielt. Prompt wird der Treiber nicht mehr geladen.

Ich habe die Schritte noch mal durchgeführt, der Build-Prozess wie im Wiki beschrieben läuft auch, aber scheinbar scheitert das Laden:
Code:
[root@localhost hybrid-wl]# uname -a
Linux localhost.localdomain 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Code:
[root@localhost hybrid-wl]# modprobe -v wl
insmod /lib/modules/3.10.0-693.2.2.el7.x86_64/kernel/net/wireless/cfg80211.ko.xz                                                                            
insmod /lib/modules/3.10.0-693.2.2.el7.x86_64/extra/wl.ko
Code:
Sep 30 21:14:39 localhost.localdomain kernel: wl: loading out-of-tree module taints kernel.
Sep 30 21:14:39 localhost.localdomain kernel: wl: module license 'MIXED/Proprietary' taints kernel.
Sep 30 21:14:39 localhost.localdomain kernel: Disabling lock debugging due to kernel taint
Sep 30 21:14:39 localhost.localdomain kernel: wl: module verification failed: signature and/or required key missing - tainting kernel
Das WLAN-Interface wird unter ifconfig auch nicht angezeigt.

Ich habe langsam keinen Bock mehr auf so etwas. Hat jemand zu obiger Fehlermeldung einen Hinweis, wie ich das Modul doch Laden kann?

Wahrscheinlich wäre es sinnvoll, hier eine günstige WLAN-USB-Karte in der Bucht zu schießen, bei der diese Probleme nicht immer wieder neu auftreten?!? Auch wenn dafür ein USB-Port drauf geht. :zensur:

TNX
 

tomm.fa

Administrator
Teammitglied
gehrke schrieb:
Wahrscheinlich wäre es sinnvoll, hier eine günstige WLAN-USB-Karte in der Bucht zu schießen, bei der diese Probleme nicht immer wieder neu auftreten?!? Auch wenn dafür ein USB-Port drauf geht. :zensur:
Ersetze doch die interne Karte.
 
OP
gehrke

gehrke

Administrator
Teammitglied
tomm.fa schrieb:
Ersetze doch die interne Karte.
Öhm ja, guter Hinweis. Allerdings bin ich unsicher, ob ich persönlich dafür ausreichend handwerklich begabt bin. So ein Notebook aufzuschrauben, die Innereien ordentlich zu tauschen und es danach wieder zusammenzusetzen - das ist da drin schon alles sehr klein und eng. Zumal die Hardware nicht mir gehört...

Muss ich noch drüber nachdenken.
TNX
 
gehrke schrieb:
Code:
Sep 30 21:14:39 localhost.localdomain kernel: wl: loading out-of-tree module taints kernel.
Sep 30 21:14:39 localhost.localdomain kernel: wl: module license 'MIXED/Proprietary' taints kernel.
Sep 30 21:14:39 localhost.localdomain kernel: Disabling lock debugging due to kernel taint
Sep 30 21:14:39 localhost.localdomain kernel: wl: module verification failed: signature and/or required key missing - tainting kernel
Das WLAN-Interface wird unter ifconfig auch nicht angezeigt.

driver ist ok, aber das kernel module wurde nicht signiert.
Deshalb weist der kernel den driver zurück.
Lösung:
Code:
# make menuconfig
Kernel
[*] Enable loadable module support  --->
...
	[ ]   Module signature verification
Nachteil: Kernel module wird nicht auf seine Herkunft und Authentizität geprüft.
Das sollte aber kein Problem sein, wenn du weißt was du tust

Gruß
Gräfin Klara
 
OP
gehrke

gehrke

Administrator
Teammitglied
Gräfin Klara schrieb:
Lösung:
Code:
# make menuconfig
Kernel
[*] Enable loadable module support  --->
...
	[ ]   Module signature verification
Nachteil: Kernel module wird nicht auf seine Herkunft und Authentizität geprüft.
OK, aber das bedeutet dann, dass nicht nur dieses eine Modul nicht geprüft wird, sondern alle zukünftig ungeprüft bleiben, oder verstehe ich das falsch?
TNX
 
gehrke schrieb:
Gräfin Klara schrieb:
Lösung:
Code:
# make menuconfig
Kernel
[*] Enable loadable module support  --->
...
	[ ]   Module signature verification
Nachteil: Kernel module wird nicht auf seine Herkunft und Authentizität geprüft.
OK, aber das bedeutet dann, dass nicht nur dieses eine Modul nicht geprüft wird, sondern alle zukünftig ungeprüft bleiben, oder verstehe ich das falsch?
TNX

Wenn du es im kernel so löst wie ich es vorgeschlagen habe, dann werden in Zukunft alle modules nicht mehr auf signatur geprüft.
Wo ist das Problem?

Zum Verständnis:
Code:
Sep 30 21:14:39 localhost.localdomain kernel: wl: module verification failed: signature and/or required key missing - tainting kernel
heißt, dass der kernel das kernel_module zurückweist weil entweder
a) das module überhaupt nicht signiert wurde oder
b) wohl signiert ist aber kein public key für die Signatur auf deinem System verfügbar ist.

Warum der kernel also das module zurückweist, geht aus der Meldung nicht hervor, du kannst aber überprüfen, ob signiert wurde oder nicht, mit
# modinfo

Unter Punkt
Code:
	[ ]   Module signature verification
gibt es noch die Möglichkeit einer Restriktion.
Die besagt;
a) module ist nur gültig, wenn signiert und der dir verfügbare publich key die Signatur positiv validiert.
b) module ist nur gültig, wenn gültig signiert oder auch wenn nicht signiert.
Deine Kernelconfig. kenne ich natürlich nicht.

Wie auch immer. Das Prüfen der Signatur wurde eingeführt, damit JEDER Software verteilen kann und deshalb der user
von irgendwelchen Quellen Software herunterladen kann, ohne dass dabei ein Risiko auftritt.
Du beziehst von deinem Provider und von der Originalquelle des Driverherstellers und du prüfst mit z.B. der md5.
Das genügt. Deshalb habe ich oben geschrieben, dass es nun und zukünftig kein Problem auch ohne Signaturprüfung gibt, wenn du weißt was du tust.

Gruß
Gräfin Klara
 
OP
gehrke

gehrke

Administrator
Teammitglied
Ich denke, ich werde versuchen, das Problem mit einem EDIMAX EW-7811UN zu lösen. Gibt es für 9,99€ in der Bucht.

http://www.linux-hardware-guide.com/2012-10-07-edimax-ew-7811un-wireless-usb-150-mbits-802-11n

EDIT: Das Notebook verfügt über 3 USB-Slots, die Besitzerin kommt mit 2 freien Plätzen aus.
 
gehrke schrieb:
Ich denke, ich werde versuchen, das Problem mit einem EDIMAX EW-7811UN zu lösen. Gibt es für 9,99€ in der Bucht.

http://www.linux-hardware-guide.com/2012-10-07-edimax-ew-7811un-wireless-usb-150-mbits-802-11n

EDIT: Das Notebook verfügt über 3 USB-Slots, die Besitzerin kommt mit 2 freien Plätzen aus.

Das ist ja ein tolles Ding!
Ich bitte um Bericht zu Übertragungsgeschwindigkeit/Entfernung
 

josef-wien

Ultimate Guru
Für die Nachwelt denke ich, daß die Erstellung eines eigenen Kernel im vorliegenden Fall nicht als günstige Lösung anzusehen ist. Ist
Code:
grep CONFIG_MODULE_SIG /boot/config*
bei centOS wirklich gesetzt?
 
OP
gehrke

gehrke

Administrator
Teammitglied
Code:
[root@localhost ~]# grep CONFIG_MODULE_SIG /boot/config*
/boot/config-3.10.0-514.10.2.el7.x86_64:CONFIG_MODULE_SIG=y
/boot/config-3.10.0-514.10.2.el7.x86_64:# CONFIG_MODULE_SIG_FORCE is not set
/boot/config-3.10.0-514.10.2.el7.x86_64:CONFIG_MODULE_SIG_ALL=y
/boot/config-3.10.0-514.10.2.el7.x86_64:CONFIG_MODULE_SIG_UEFI=y
/boot/config-3.10.0-514.10.2.el7.x86_64:# CONFIG_MODULE_SIG_SHA1 is not set
/boot/config-3.10.0-514.10.2.el7.x86_64:# CONFIG_MODULE_SIG_SHA224 is not set
/boot/config-3.10.0-514.10.2.el7.x86_64:CONFIG_MODULE_SIG_SHA256=y
/boot/config-3.10.0-514.10.2.el7.x86_64:# CONFIG_MODULE_SIG_SHA384 is not set
/boot/config-3.10.0-514.10.2.el7.x86_64:# CONFIG_MODULE_SIG_SHA512 is not set
/boot/config-3.10.0-514.10.2.el7.x86_64:CONFIG_MODULE_SIG_HASH="sha256"
/boot/config-3.10.0-514.16.1.el7.x86_64:CONFIG_MODULE_SIG=y
/boot/config-3.10.0-514.16.1.el7.x86_64:# CONFIG_MODULE_SIG_FORCE is not set
/boot/config-3.10.0-514.16.1.el7.x86_64:CONFIG_MODULE_SIG_ALL=y
/boot/config-3.10.0-514.16.1.el7.x86_64:CONFIG_MODULE_SIG_UEFI=y
/boot/config-3.10.0-514.16.1.el7.x86_64:# CONFIG_MODULE_SIG_SHA1 is not set
/boot/config-3.10.0-514.16.1.el7.x86_64:# CONFIG_MODULE_SIG_SHA224 is not set
/boot/config-3.10.0-514.16.1.el7.x86_64:CONFIG_MODULE_SIG_SHA256=y
/boot/config-3.10.0-514.16.1.el7.x86_64:# CONFIG_MODULE_SIG_SHA384 is not set
/boot/config-3.10.0-514.16.1.el7.x86_64:# CONFIG_MODULE_SIG_SHA512 is not set
/boot/config-3.10.0-514.16.1.el7.x86_64:CONFIG_MODULE_SIG_HASH="sha256"
/boot/config-3.10.0-514.26.1.el7.x86_64:CONFIG_MODULE_SIG=y
/boot/config-3.10.0-514.26.1.el7.x86_64:# CONFIG_MODULE_SIG_FORCE is not set
/boot/config-3.10.0-514.26.1.el7.x86_64:CONFIG_MODULE_SIG_ALL=y
/boot/config-3.10.0-514.26.1.el7.x86_64:CONFIG_MODULE_SIG_UEFI=y
/boot/config-3.10.0-514.26.1.el7.x86_64:# CONFIG_MODULE_SIG_SHA1 is not set
/boot/config-3.10.0-514.26.1.el7.x86_64:# CONFIG_MODULE_SIG_SHA224 is not set
/boot/config-3.10.0-514.26.1.el7.x86_64:CONFIG_MODULE_SIG_SHA256=y
/boot/config-3.10.0-514.26.1.el7.x86_64:# CONFIG_MODULE_SIG_SHA384 is not set
/boot/config-3.10.0-514.26.1.el7.x86_64:# CONFIG_MODULE_SIG_SHA512 is not set
/boot/config-3.10.0-514.26.1.el7.x86_64:CONFIG_MODULE_SIG_HASH="sha256"
/boot/config-3.10.0-514.26.2.el7.x86_64:CONFIG_MODULE_SIG=y
/boot/config-3.10.0-514.26.2.el7.x86_64:# CONFIG_MODULE_SIG_FORCE is not set
/boot/config-3.10.0-514.26.2.el7.x86_64:CONFIG_MODULE_SIG_ALL=y
/boot/config-3.10.0-514.26.2.el7.x86_64:CONFIG_MODULE_SIG_UEFI=y
/boot/config-3.10.0-514.26.2.el7.x86_64:# CONFIG_MODULE_SIG_SHA1 is not set
/boot/config-3.10.0-514.26.2.el7.x86_64:# CONFIG_MODULE_SIG_SHA224 is not set
/boot/config-3.10.0-514.26.2.el7.x86_64:CONFIG_MODULE_SIG_SHA256=y
/boot/config-3.10.0-514.26.2.el7.x86_64:# CONFIG_MODULE_SIG_SHA384 is not set
/boot/config-3.10.0-514.26.2.el7.x86_64:# CONFIG_MODULE_SIG_SHA512 is not set
/boot/config-3.10.0-514.26.2.el7.x86_64:CONFIG_MODULE_SIG_HASH="sha256"
/boot/config-3.10.0-693.2.2.el7.x86_64:CONFIG_MODULE_SIG=y
/boot/config-3.10.0-693.2.2.el7.x86_64:# CONFIG_MODULE_SIG_FORCE is not set
/boot/config-3.10.0-693.2.2.el7.x86_64:CONFIG_MODULE_SIG_ALL=y
/boot/config-3.10.0-693.2.2.el7.x86_64:CONFIG_MODULE_SIG_UEFI=y
/boot/config-3.10.0-693.2.2.el7.x86_64:# CONFIG_MODULE_SIG_SHA1 is not set
/boot/config-3.10.0-693.2.2.el7.x86_64:# CONFIG_MODULE_SIG_SHA224 is not set
/boot/config-3.10.0-693.2.2.el7.x86_64:CONFIG_MODULE_SIG_SHA256=y
/boot/config-3.10.0-693.2.2.el7.x86_64:# CONFIG_MODULE_SIG_SHA384 is not set
/boot/config-3.10.0-693.2.2.el7.x86_64:# CONFIG_MODULE_SIG_SHA512 is not set
/boot/config-3.10.0-693.2.2.el7.x86_64:CONFIG_MODULE_SIG_HASH="sha256"
Der Kontext für den verwendeten Kernel:
Code:
[root@localhost ~]# less /boot/config-3.10.0-693.2.2.el7.x86_64 
[...]
#
# GCOV-based kernel profiling
#
# CONFIG_GCOV_KERNEL is not set
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_SYSTEM_TRUSTED_KEYRING=y
CONFIG_SYSTEM_BLACKLIST_KEYRING=y
CONFIG_MODULES=y
CONFIG_MODULE_FORCE_LOAD=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
CONFIG_MODVERSIONS=y
CONFIG_MODULE_SRCVERSION_ALL=y
CONFIG_MODULE_SIG=y
# CONFIG_MODULE_SIG_FORCE is not set
CONFIG_MODULE_SIG_ALL=y
CONFIG_MODULE_SIG_UEFI=y
# CONFIG_MODULE_SIG_SHA1 is not set
# CONFIG_MODULE_SIG_SHA224 is not set
CONFIG_MODULE_SIG_SHA256=y
# CONFIG_MODULE_SIG_SHA384 is not set
# CONFIG_MODULE_SIG_SHA512 is not set
CONFIG_MODULE_SIG_HASH="sha256"
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
CONFIG_BLK_DEV_BSG=y
CONFIG_BLK_DEV_BSGLIB=y
CONFIG_BLK_DEV_INTEGRITY=y
CONFIG_BLK_DEV_THROTTLING=y
[...]
 

josef-wien

Ultimate Guru
Die Konfiguration der 5 Kernel ist also gleich. Da für die 3 in der Anleitung genannten 3.10.0-*-Kernel beim Treiber jeweils unterschiedliche Änderungsmengen anfallen, steht zu befürchten, daß es für den neuen Kernel eine weitere Änderungsvariante gibt (die vielleicht irgendwann ein netter Mensch im Wiki ergänzen wird).
 
OP
gehrke

gehrke

Administrator
Teammitglied
Ich denke, Du hast Recht. Darauf habe ich keinen Bock mehr und hoffe, mir für 10€ eine Alternative kaufen zu können, die diesem Desaster endgültig ein Ende bereitet.
 
Oben