У меня Lenovo IdeaPad Yoga 13. WLAN не работает из коробки с Fedora 18. Поэтому я погуглил и нашел вот эти две ссылки:
https://askubuntu.com/questions/139632/wireless-card-realtek-rtl8723ae-bt-is-not-recognized https://ask.fedoraproject.org/question/9633/i-can-not-get-my-realtek-8723-chip-to-work/
Итак, я скачал исходный код установки gcc, kernel-header, kernel-devel и патч. Я закомментировал строку 320 в base.c. Но я все равно получаю ошибку.
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
Строка 245 в pci.h выглядит следующим образом:
int __devinit rtl_pci_probe(struct pci_dev *pdev,const struct pci_device_id *id);
И да, я пробовал и как обычный пользователь, и как root.
Мой вопрос в том, как мне это скомпилировать или что нужно исправить.
решение1
Итак, решение действительно простое: возьмите последнюю версию из: https://github.com/lwfinger
сделать и сделать установку
Итак, это хорошо работает для realtek-8723.
И есть небольшая запись в блоге, которую я написал об этом ->http://l33tsource.com/blog/2013/05/08/Йога-с-WLAN.html
решение2
Кажется, __devinit
макросы былиудалено из ядра в 3.8. Я rtl8192ce
скомпилировал и загрузил драйвер (из того же исходного дерева), удалив __devinit
из pci.h
и pci.c
), а также удалив все экземпляры __devinitdata
из каждого sw.c
(по одному на каталог драйвера).
В корневом каталоге исходного кода grep -R __devinit
должны отображаться все файлы, которые необходимо изменить.
решение3
Вы пробовали это?
int __devinit = rtl_pci_probe(struct pci_dev *pdev,const struct pci_device_id *id);
решение4
Fedora имеет довольно новые ядра, часто источники драйверов, которые плавают вокруг, относятся к более старым версиям ядра. Проверьте необходимую версию ядра, покопайтесь в форумах Fedora, проверьте, нет ли соответствующих отчетов об ошибках, поищите еще неофициальные драйверы от хакеров ядра (нетпоставщик; поставщики часто живут в иллюзии, что возможно иметь один источник, работающий для широкого спектра версий ядра, другие просто втискивают исходный блок для Другой Неназываемой Системы во что-то, что имеет поверхностное сходство с родным драйвером Linux, некоторые неисправимые еретики пробуют и то, и другое).