Portanto, as soluções são realmente simples, pegue a fonte mais recente em: link
make & make install
Então, isso funciona bem para o realtek-8723.
E há uma pequena postagem no blog que escrevi sobre isso - > link
Eu tenho um Lenovo IdeaPad Yoga 13. A WLAN não funciona com o fedora 18. Então eu pesquisei e encontrei esses 2 links:
Então eu baixei o código fonte do gcc, kernel-header, kernel-devel e patch. Eu comento a linha 320 em base.c out. Mas eu ainda recebo um erro.
make -C /lib/modules/3.8.9-200.fc18.x86_64/build M=/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012 modules
make[1]: Entering directory '/usr/src/kernels/3.8.9-200.fc18.x86_64'
CC [M] /home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.o
In file included from /home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:39:0:
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/pci.h:245:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rtl_pci_probe’
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c: In function ‘rtl_action_proc’:
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:870:25: error: ‘RX_FLAG_MACTIME_MPDU’ undeclared (first use in this function)
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:870:25: note: each undeclared identifier is reported only once for each function it appears in
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c: In function ‘rtl_send_smps_action’:
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:1432:16: error: ‘struct <anonymous>’ has no member named ‘sta’
make[2]: *** [/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.o] Error 1
make[1]: *** [_module_/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012] Error 2
make[1]: Leaving directory '/usr/src/kernels/3.8.9-200.fc18.x86_64'
make: *** [all] Error 2
A linha 245 no pci.h é esta:
int __devinit rtl_pci_probe(struct pci_dev *pdev,const struct pci_device_id *id);
E sim, eu tento como usuário normal e como root.
Minha pergunta é como posso compilar isso ou o que deve ser corrigido.
Parece que as macros __devinit
foram removidas do kernel em 3.8 . Eu obtive o driver rtl8192ce
(da mesma árvore de origem) para compilar e carregar removendo __devinit
de pci.h
e pci.c
) e também removendo todas as instâncias de __devinitdata
de cada sw.c
(uma por driver diretório).
Um grep -R __devinit
na raiz de origem deve mostrar todos os arquivos que você precisa modificar.
Você tentou isso?
int __devinit = rtl_pci_probe(struct pci_dev *pdev,const struct pci_device_id *id);
O Fedora tem kernels bastante novos, muitas vezes as fontes do driver flutuantes são para versões mais antigas do kernel. Verifique a versão necessária do kernel, vasculhe os fóruns do Fedora, verifique se há relatos de erros possivelmente relevantes, procure drivers não oficiais pelos hackers do kernel ( não o fornecedor; os fornecedores geralmente vivem sob a ilusão de que é possível ter uma fonte trabalhando para uma ampla gama de versões do kernel, outras apenas montando um blob de origem para o That Other Unnameable System em algo que tem uma semelhança superficial com um driver nativo do Linux, alguns hereges não-corrigíveis tentam ambos).