Por que meu driver sem fio não está carregando na inicialização?

1

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.

    
por NX1337 28.03.2015 / 17:40

1 resposta

0

Primeiro você está usando um driver incorreto para a sua versão do kernel, vamos nos livrar do driver errado e carregar o driver correto para iniciantes.

sudo apt-get purge bcmwl-kernel-source
gksu gedit /etc/modprobe.d/blacklist.conf

remova blacklist brcmsmac e blacklist bcma , depois salve o arquivo e feche-o. Você pode ter que instalar o gksu, ele não vem pré-instalado em 14.04. Reinicie

    
por Wild Man 29.03.2015 / 05:29