W-lan Treiber broadcom-wl lässt sich nicht bauen unter Kernel 3.10.5

Meschi

New Member
Hallo liebe Community!
Ich hab vor kurzem Suse 12.3 installiert und mir den Kernel 3.10.5 aus den Suse Repositories geholt. Das würde auch gut funktionieren allerdings braucht mein Notebook einen Treiber von Broadcom fürs wlan. Da es den aber noch nicht vorkompiliert gibt für den 3.10er Kernel hab ich mir das "broadcom-wl-5.100.82.112-11.38.src.rpm" Packet zum selber bauen von der Packmanseite geholt. Wenn ich das jetzt mit
Code:
rpmbuild --rebuild broadcom-wl-5.100.82.112-11.38.src.rpm
bauen will bricht der ganze Spaß ab mit folgender Meldung:
Code:
rpmbuild --rebuild broadcom-wl-5.100.82.112-11.38.src.rpm 
Installing broadcom-wl-5.100.82.112-11.38.src.rpm
.
.
.
  gcc -Wp,-MD,/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys/.wl_linux.o.d  -nostdinc -isystem /usr/lib64/gcc/x86_64-suse-linux/4.7/include -I/usr/src/linux-3.10.5-1.g4e0ffc2/arch/x86/include -Iarch/x86/include/generated  -I/usr/src/linux-3.10.5-1.g4e0ffc2/include -Iinclude -I/usr/src/linux-3.10.5-1.g4e0ffc2/arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I/usr/src/linux-3.10.5-1.g4e0ffc2/include/uapi -Iinclude/generated/uapi -include /usr/src/linux-3.10.5-1.g4e0ffc2/include/linux/kconfig.h   -I/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m64 -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -fstack-protector -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -pipe -Wno-sign-compare -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -Wframe-larger-than=2048 -Wno-unused-but-set-variable -fomit-frame-pointer -fasynchronous-unwind-tables -g -fno-inline-functions-called-once -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO -DUSE_IW   -I/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/include   -I/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys   -I/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/phy  -DMODULE  -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(wl_linux)"  -D"KBUILD_MODNAME=KBUILD_STR(wl)" -c -o /home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys/.tmp_wl_linux.o /home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys/wl_linux.c
/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys/wl_linux.c: In function 'wl_tkip_printstats':
/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys/wl_linux.c:2970:7: warning: passing argument 1 of 'wl->tkipmodops->print_stats' from incompatible pointer type [enabled by default]
/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys/wl_linux.c:2970:7: note: expected 'struct seq_file *' but argument is of type 'char *'
/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys/wl_linux.c:2973:4: warning: passing argument 1 of 'wl->tkipmodops->print_stats' from incompatible pointer type [enabled by default]
/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys/wl_linux.c:2973:4: note: expected 'struct seq_file *' but argument is of type 'char *'
/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys/wl_linux.c: In function 'wl_reg_proc_entry':
/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys/wl_linux.c:3180:2: error: implicit declaration of function 'create_proc_entry' [-Werror=implicit-function-declaration]
/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys/wl_linux.c:3180:22: warning: assignment makes pointer from integer without a cast [enabled by default]
/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys/wl_linux.c:3185:16: error: dereferencing pointer to incomplete type
/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys/wl_linux.c:3186:16: error: dereferencing pointer to incomplete type
/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys/wl_linux.c:3187:16: error: dereferencing pointer to incomplete type
cc1: some warnings being treated as errors
make[3]: *** [/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys/wl_linux.o] Error 1
make[2]: *** [_module_/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default] Error 2
make[1]: *** [sub-make] Error 2
make: *** [all] Error 2
make: Leaving directory `/usr/src/linux-3.10.5-1.g4e0ffc2-obj/x86_64/default'
error: Bad exit status from /var/tmp/rpm-tmp.qS8yeb (%build)


RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.qS8yeb (%build)
(die Punkte hab ich eingefügt weil sonst zu lang)
Hat jemand soviel Ahnung von der Materie dass er mir sagen kann warum die Aufrufe aus der wl_linux.c zu Fehlern führen bzw. wie man diese beheben kann?
Hier noch mein System:
Code:
uname -r
3.10.5-1.g4e0ffc2-desktop
Code:
cat /etc/SuSE-release
openSUSE 12.3 (x86_64)
VERSION = 12.3
CODENAME = Dartmouth
 

Rain_Maker

Administrator
Teammitglied
AW: W-lan Treiber broadcom-wl lässt sich nicht bauen unter Kernel 3.10.5

Meschi schrieb:
.... bricht der ganze Spaß ab mit folgender Meldung:
Code:
/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys/wl_linux.c: In function 'wl_reg_proc_entry':
/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys/wl_linux.c:3180:2: error: implicit declaration of function 'create_proc_entry' [-Werror=implicit-function-declaration]
/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys/wl_linux.c:3180:22: warning: assignment makes pointer from integer without a cast [enabled by default]
/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys/wl_linux.c:3185:16: error: dereferencing pointer to incomplete type
/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys/wl_linux.c:3186:16: error: dereferencing pointer to incomplete type
/home/christoph/rpmbuild/BUILD/broadcom-wl-5.100.82.112/obj/default/src/wl/sys/wl_linux.c:3187:16: error: dereferencing pointer to incomplete type
Hat jemand soviel Ahnung von der Materie dass er mir sagen kann warum die Aufrufe aus der wl_linux.c zu Fehlern führen
Wie bei so vielen externen Kernelmodulen, baut auch dieses aufgrund einiger ziemlich tiefgreifender Änderungen im /proc-Dateisystem des Kernels, die in 3.10 eingeflossen sind, nicht mehr.

Meschi schrieb:
bzw. wie man diese beheben kann?
Drei Möglichkeiten:

1) Man ist Kernelentwickler oder zumindest gut genug in C-Programmierung und schreibt sich selbst einen Patch (den man ggf. auch veröffentlicht)

2) Wenn man nicht gerade Kernelentwickler ist, dann kann man nur hoffen, daß man mittels $SUCHMASCHINE oder direkt bei den üblichen Verdächtigen (= Unstable-/Entwicklungszweige der Distros bzw. Distros mit Rolling Release) einen passenden Patch für 3.10 findet (siehe 1).

3) Ansonsten darf man noch auf den Hersteller hoffen, daß der einen aktualisierten Treiber herausbringt, ggf. kann man ihn ja auch anschreiben.

Besonders bei Letzterem wünsche ich viel Spaß, vielleicht kommt da sogar etwas bei raus, die Hoffnung stirbt bekanntlich zuletzt.

Greetz,

RM
 

tomfa

Member
AW: W-lan Treiber broadcom-wl lässt sich nicht bauen unter Kernel 3.10.5

Rain_Maker schrieb:
[…]
3) Ansonsten darf man noch auf den Hersteller hoffen, daß der einen aktualisierten Treiber herausbringt, ggf. kann man ihn ja auch anschreiben.

Besonders bei Letzterem wünsche ich viel Spaß, vielleicht kommt da sogar etwas bei raus, die Hoffnung stirbt bekanntlich zuletzt.
Das dürfte dann ein sehr langwieriger Tod der Hoffnung werden.

Nur so aus Interesse nebenbei:
Meschi schrieb:
[…]allerdings braucht mein Notebook einen Treiber von Broadcom fürs wlan.
Um welche Karte, welchen Chip handelt es sich genau, könntest du dazu mal die Ausgabe von
Code:
/sbin/lspci -nnk | grep -i -A2 net
hier vorführen?
 

Rain_Maker

Administrator
Teammitglied
AW: W-lan Treiber broadcom-wl lässt sich nicht bauen unter Kernel 3.10.5

tomfa schrieb:
Nur so aus Interesse nebenbei:

Um welche Karte, welchen Chip handelt es sich genau, könntest du dazu mal die Ausgabe von
Code:
/sbin/lspci -nnk | grep -i -A2 net
hier vorführen?
Jepp, mittlerweile gibt es immer mehr Karten, die auch von b43/brcmsmac/bcma unterstützt werden, also zuerst nachsehen, ob es nicht eine freie Alternative gibt.

Sollte es wirklich keinen freien Treiber geben, dann habe ich vielleicht (ich kann noch nichts versprechen, da es wohl ein nettes Stück Arbeit ist, die ich mir nur im absoluten Notfall machen will, vor allem um einen proprietären Treiber zurecht zu flicken) einen weiteren Pfeil im Köcher.

Greetz,

RM
 

Meschi

New Member
AW: W-lan Treiber broadcom-wl lässt sich nicht bauen unter Kernel 3.10.5

Hmm ok, c und c++ kenn ich mich zwar halbwegs vernünftig aus aber mal eben so einen Patch schreiben ... das kann dauern, hab ich noch nie gemacht :)

Hier der Output vom Kommando:
Code:
/sbin/lspci -nnk | grep -i -A2 net
03:00.0 Ethernet controller [0200]: Atheros Communications Inc. AR8131 Gigabit Ethernet [1969:1063] (rev c0)
        Subsystem: Acer Incorporated [ALI] Device [1025:042b]
        Kernel driver in use: atl1c
05:00.0 Network controller [0280]: Broadcom Corporation BCM43225 802.11b/g/n [14e4:4357] (rev 01)
        Subsystem: Foxconn International, Inc. T77H103.00 Wireless Half-size Mini PCIe Card [105b:e021]
ff:00.0 Host bridge [0600]: Intel Corporation Core Processor QuickPath Architecture Generic Non-core Registers [8086:2c62] (rev 02)
Vielleicht ist folgende Anmerkung hilfreich: Ich hatte den Broadcom Treiber unter dem 3.7er Kernel bereits erfolgreich nachinstalliert was super funktioniert hat (Packman Repo). Die W-Lan Module die Suse 12.3 mitgebracht hat gingen bei mir nicht. Ich hab also die Module b43 und brcmsmac nach der Suse-Installation geblacklistet (hätte ich nicht machen brauchen, hab erst später gemerkt dass das bei der Installation vom Broadcom Treiber automatisch geschieht). Also falls jemand Ideen hat für andere Treiber hat, nur zu :) Hatte mir den Broadcom Treiber nur deshalb ausgesucht weil ich da sicher bin dass er zumindest unter Kernel 3.7 läuft.
 

Rain_Maker

Administrator
Teammitglied
AW: W-lan Treiber broadcom-wl lässt sich nicht bauen unter Kernel 3.10.5

Also zumindest behauptet modinfo, daß auch in 3.10.X bcma/brcmsmac für diese Karte zuständig ist.

Code:
 modinfo bcma
filename:       /lib/modules/3.10.5-1.g4e0ffc2-desktop/kernel/drivers/bcma/bcma.ko
license:        GPL
description:    Broadcom's specific AMBA driver
srcversion:     65C8A3FD0888E963203EE25
alias:          pci:v000014E4d00004727sv*sd*bc*sc*i*
alias:          pci:v000014E4d00004359sv*sd*bc*sc*i*
alias:          pci:v000014E4d00004358sv*sd*bc*sc*i*
[b]alias:          pci:v000014E4d00004357sv*sd*bc*sc*i*[/b]
alias:          pci:v000014E4d00004353sv*sd*bc*sc*i*
alias:          pci:v000014E4d00004331sv*sd*bc*sc*i*
alias:          pci:v000014E4d0000A8D8sv*sd*bc*sc*i*
alias:          pci:v000014E4d00000576sv*sd*bc*sc*i*
depends:        
intree:         Y
vermagic:       3.10.5-1.g4e0ffc2-desktop SMP preempt mod_unload modversions 686
modinfo brcmsmac 
filename:       /lib/modules/3.10.5-1.g4e0ffc2-desktop/kernel/drivers/net/wireless/brcm80211/brcmsmac/brcmsmac.ko

[b]firmware:       brcm/bcm43xx_hdr-0.fw
firmware:       brcm/bcm43xx-0.fw[/b]
license:        Dual BSD/GPL
description:    Broadcom 802.11n wireless LAN driver.
author:         Broadcom Corporation
srcversion:     04A591CE11253EC58950CDE
alias:          bcma:m04BFid0812rev18cl*
alias:          bcma:m04BFid0812rev17cl*
alias:          bcma:m04BFid0812rev11cl*
depends:        mac80211,bcma,brcmutil,cfg80211,cordic
intree:         Y
vermagic:       3.10.5-1.g4e0ffc2-desktop SMP preempt mod_unload modversions 686
Das Paket "kernel-firmware" ist installiert und die beiden Dateien

"/lib/firmware/brcm/bcm43xx_hdr-0.fw"

bzw.

"/lib/firmware/brcm/bcm43xx-0.fw"

sind vorhanden?

Wenn ja, dann von Hand die Module bcma bzw. brcmsmac laden und sehen, was sich tut.

Code:
# modprobe brcmsmac -v

dmesg | tail -n 50

iwconfig
Es kann durchaus sein, daß besagter Treiber in 3.10 besser funktioniert, zumindest sollte man es versuchen, bevor man sich diesen Binärklotz von wl.ko ins System klatscht.

Greetz,

RM
 

Meschi

New Member
AW: W-lan Treiber broadcom-wl lässt sich nicht bauen unter Kernel 3.10.5

Super Tipp, danke Rain_maker!
Das Packet "kernel-firmware" und die beiden Dateien waren alle da und modprobe lädt auch das Modul und anschließend geht das W-Lan.
Es gab zwei Probleme bei mir die bewirkt haben, dass das brcmsmac Modul nicht automatisch lädt:

1. Problem
Die Installation des Broadcom-Treibers unter Kernel 3.7. Da hatte ich wie unten beschrieben ja einmal per Hand die
"/etc/modprobe.d/50-blacklist.conf"
editiert und damit das brcmsmac Modul geblacklistet.
Außerdem hatte ich das "broadcom-wl" Paket noch nicht wieder deinstalliert und das erstellt seinerseits das File
"/etc/modprobe.d/50-broadcom-wl-blacklist.conf"
wo das Modul (und noch einige andere W-Lan Module) ebenfalls geblacklistet wird. Ich hatte also das Modul gleich zweimal geblacklistet was mir jetzt im Nachhinein auch völlig klar ist dass das nicht klappen konnte. Ich habe also erst mal das Blacklisting wieder aufgehoben.

2. Problem
Danach wurde das brcmsmac Modul immer noch nicht automatisch geladen beim Neustart. Daher hab ich einfach einen Eintrag bei Yast unter
"System->Editor für etc/sysconfig->System->Kernel->MODULES_LOADED_ON_BOOT"
mit dem Inhalt "brcmsmac" erstellt. Damit geht das W-Lan jetzt auch nach Neustart direkt.

Das Verhalten bei 2.ist das Einzige was mir ein bisschen unklar bleibt: Warum lädt Suse "brcmsmac" nicht automatisch nach dem Entfernen der Blacklisteinträge? Hatte eigentlich erwartet, dass die W-Lan Module zur "Grundausstattung" gehören. Problem ist auf jeden Fall gelöst für mich, wer jedoch auf das broadcom Modul angewiesen ist der muss einen Patch schreiben :D. Danke an alle!
 

Rain_Maker

Administrator
Teammitglied
AW: W-lan Treiber broadcom-wl lässt sich nicht bauen unter Kernel 3.10.5

Schaue sicherheitshalber mal nach, ob irgendwo noch ein blacklist-Eintrag vorhanden ist.

Code:
grep -rE 'bcma|brcmsmac' /etc/modprobe.d/
Falls da nichts vorhanden ist, dann hast Du das Pech, daß in diesem Fall udev die Karte nicht automatisch aktiviert.

Normalerweise ist udev für diese Aufgabe zuständig, aber in wenigen Fällen kann das mal schiefgehen.

Weitere Möglichkeit, es wurde der Karte ein anderes Modul zugeordnet, hier sollte man in /etc/udev/rules.d nachsehen.

Code:
grep -r MODALIAS /etc/udev/rules.d/
Greetz,

RM
 

Rain_Maker

Administrator
Teammitglied
AW: W-lan Treiber broadcom-wl lässt sich nicht bauen unter Kernel 3.10.5

In Anbetracht dieses Threads

http://www.linuxforen.de/forums/showthread.php?t=275551

und der Tatsache, daß auch die entsprechenden Dateien aus /etc/modprobe.d mittlerweile in der initrd landen

Code:
lsinitrd /boot/initrd-$(uname -r)|grep modprobe\.d
dürften die alten Blacklisting-Einträge trotz Entfernens nach der Installation des 3.10er Kernels noch in der initrd vorhanden sein.

Ergo, auch hier die initrd neu bauen (siehe verlinkter Thread), erst dann sind die alten Blacklisting-Einträge auch wirklich weg.

Sollte seit Installation des 3.10.5er-Kernels ein Kernelupdate (oder ein Update des Pakets "udev") erfolgt sein, dann hat sich das erledigt, denn genau bei solchen Updates wird anschließend automatisch "mkinitrd" ausgeführt.

Greetz,

RM
 
Oben