我有一個 Lenovo IdeaPad Yoga 13。
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 和 patch。我將base.c中的第320行註解掉。但我仍然收到錯誤。
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
pci.h 上的第 245 行是這樣的:
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/Yoga-with-WLAN.html
答案2
看來__devinit
宏是在 3.8 中從核心中刪除。我透過刪除和來rtl8192ce
編譯和載入驅動程式(來自同一來源樹),並從每個實例中刪除所有實例(每個驅動程式目錄一個)。__devinit
pci.h
pci.c
__devinitdata
sw.c
來源根目錄中的Agrep -R __devinit
應顯示您必須修改的所有檔案。
答案3
你試過這個嗎?
int __devinit = rtl_pci_probe(struct pci_dev *pdev,const struct pci_device_id *id);
答案4
Fedora 有相當新的內核,通常浮動的驅動程式來源是針對舊內核版本的。檢查必要的核心版本,翻閱 Fedora 論壇,檢查可能相關的錯誤報告,尋找內核駭客提供的尚未官方的驅動程式(不是供應商;供應商經常生活在一種幻想中,認為一個原始程式碼可以適用於各種核心版本,其他供應商只是將另一個無法命名的系統的原始碼區塊硬塞到與本機Linux 驅動程式表面上相似的東西中,這是一些無可救藥的異端。