All before having any manually installed drivers, my wireless card was not working properly and I decided to download and install Broadcom BCM43225 drivers. It was a hard process for such a newbie like me to understand that 'readme' file that comes with download to build a driver from source but I did it (woah such a long sentence).
I was able to use wireless as normal for a long time but somehow it's not successfully loaded on boot anymore (not sure when it stopped working).
I built the same driver from source just in case an update made a kernel-level change or something but it seems like every boot there is another clean-build required to get that driver working because trying to insert previously built module result with:
insmod wl.ko
Unknown symbol in module
I'm able to get it working with this bash script:
lspci -n | grep 14e4
cd /home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248
make clean
make
lsmod | grep "brcmsmac\|b43\|ssb\|bcma\|wl"
rmmod b43
rmmod brcmsmac
rmmod ssb
rmmod bcma
rmmod wl
modprobe lib80211
modprobe cfg80211
insmod wl.ko
for i in `find /lib /var -name wl\.ko`; do mv $i ${i}.orig; done
cp wl.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless
Here is the output just in case you're interested in build messages and such:
user@pc:~$ sudo -i
[sudo] password for user:
root@pc:~# lspci -n | grep 14e4
02:00.0 0280: 14e4:4357 (rev 01)
root@pc:~# cd /home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248
root@pc:/home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248# make clean
KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd` clean
make[1]:`/usr/src/linux-headers-3.13.0-48-generic' dizinine giriliyor
CFG80211 API is prefered for this kernel version
/home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248/Makefile:85: Neither CFG80211 nor Wireless Extension is enabled in kernel
CLEAN /home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248/.tmp_versions
CLEAN /home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248/Module.symvers
make[1]: `/usr/src/linux-headers-3.13.0-48-generic' dizininden çıkılıyor
root@pc:/home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248# make CONFIG_DEBUG_SECTION_MISMATCH=y
KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
make[1]:`/usr/src/linux-headers-3.13.0-48-generic' dizinine giriliyor
CFG80211 API is prefered for this kernel version
Using CFG80211 API
LD /home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248/built-in.o
CC [M] /home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248/src/shared/linux_osl.o
CC [M] /home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248/src/wl/sys/wl_linux.o
CC [M] /home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248/src/wl/sys/wl_iw.o
CC [M] /home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248/src/wl/sys/wl_cfg80211_hybrid.o
LD [M] /home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248/wl.o
WARNING: modpost: missing MODULE_LICENSE() in /home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248/wl.o
see include/linux/module.h for more information
WARNING: /home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248/wl.o(.data+0x150f40): Section mismatch in reference from the variable wl_pci_driver to the function .init.text:wl_pci_probe()
The variable wl_pci_driver references
the function __init wl_pci_probe()
If the reference is valid then annotate the
variable with __init* or __refdata (see linux/init.h) or name the variable:
*_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console
Building modules, stage 2.
CFG80211 API is prefered for this kernel version
Using CFG80211 API
MODPOST 1 modules
WARNING: modpost: missing MODULE_LICENSE() in /home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248/wl.o
see include/linux/module.h for more information
WARNING: /home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248/wl.o(.data+0x150f40): Section mismatch in reference from the variable wl_pci_driver to the function .init.text:wl_pci_probe()
The variable wl_pci_driver references
the function __init wl_pci_probe()
If the reference is valid then annotate the
variable with __init* or __refdata (see linux/init.h) or name the variable:
*_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console
CC /home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248/wl.mod.o
LD [M] /home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248/wl.ko
make[1]: `/usr/src/linux-headers-3.13.0-48-generic' dizininden çıkılıyor
root@pc:/home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248# lsmod | grep "brcmsmac\|b43\|ssb\|bcma\|wl"
root@pc:/home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248# rmmod b43
rmmod: ERROR: Module b43 is not currently loaded
root@pc:/home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248# rmmod brcmsmac
rmmod: ERROR: Module brcmsmac is not currently loaded
root@pc:/home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248# rmmod ssb
rmmod: ERROR: Module ssb is not currently loaded
root@pc:/home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248# rmmod bcma
rmmod: ERROR: Module bcma is not currently loaded
root@pc:/home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248# rmmod wl
rmmod: ERROR: Module wl is not currently loaded
root@pc:/home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248# modprobe lib80211
root@pc:/home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248# modprobe cfg80211
root@pc:/home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248# insmod wl.ko
root@pc:/home/user/Belgeler/hybrid-v35_64-nodebug-pcoem-6_30_223_248# exit
çıkış
Every reboot makes previous built driver to not work. I still have that modeprobe wl
command in rc.local file and again it used work like a charm and still the driver itself works but I have no idea why I can't make them load on boot.
Edit:
Here is super-detailed-diagnostic wireless info created with this script. Alternatively, this output received before manually inserting wl module.