Я не могу скомпилировать исходный код драйвера Realtek 8723

Я не могу скомпилировать исходный код драйвера Realtek 8723

У меня 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, некоторые неисправимые еретики пробуют и то, и другое).

Связанный контент