Tudo antes de ter qualquer driver instalado manualmente, minha placa wireless não estava funcionando corretamente e eu decidi baixar e instalar os drivers Broadcom BCM43225. Foi um processo difícil para um novato como eu entender o arquivo 'readme' que vem com o download para criar um driver a partir da fonte, mas eu o fiz (uma frase tão longa).
Consegui usar o wireless normalmente por um longo tempo, mas de alguma forma ele não é mais carregado com sucesso (não tenho certeza quando ele parou de funcionar).
Eu construí o mesmo driver a partir da fonte apenas no caso de uma atualização fazer uma mudança no nível do kernel ou algo parecido, mas parece que toda inicialização existe outra compilação limpa necessária para fazer com que o driver funcione :
insmod wl.ko
Unknown symbol in module
Consigo fazê-lo funcionar com este script bash:
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
Aqui está a saída para o caso de você estar interessado em criar mensagens e tal:
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ış
Cada reinicialização faz com que o driver interno anterior não funcione. Eu ainda tenho esse comando modeprobe wl
no arquivo rc.local e novamente ele usou o trabalho como um charme e ainda o driver em si funciona, mas eu não tenho idéia do porquê t fazê-los carregar na inicialização.
Editar:
Aqui está informações sem fio de diagnóstico detalhado criadas com este script .
Alternativamente, esta saída recebida antes de inserir manualmente o módulo wl.