Realtek 8723 ドライバソースをコンパイルできません

Realtek 8723 ドライバソースをコンパイルできません

私は Lenovo IdeaPad Yoga 13 を使用しています。WLAN は fedora 18 ではそのままでは動作しません。そこで Google で検索して、次の 2 つのリンクを見つけました:

https://askubuntu.com/questions/139632/wireless-card-realtek-rtl8723ae-bt-が認識されない https://ask.fedoraproject.org/question/9633/i-can-not-get-my-realtek-8723-chip-to-work/

そこで、ソースをダウンロードして、gcc、kernel-header、kernel-devel、およびパッチをインストールしました。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(構造体 pci_dev *pdev、const 構造体 pci_device_id *id);

はい、通常のユーザーとして、また root として試してみます。

私の質問は、これをどうやってコンパイルするか、何を修正する必要があるかということです。

答え1

したがって、解決策は非常に簡単です。次の最新のソースを取得します。 https://github.com/lwfinger

作成とインストール

したがって、これは realtek-8723 ではうまく機能します。

それについて私が書いた小さなブログ記事があります ->http://l33tsource.com/blog/2013/05/08/Yoga-with-WLAN.html

答え2

マクロ__devinit3.8でカーネルから削除されましたとを削除し、それぞれからのすべてのインスタンス(ドライバー ディレクトリごとに 1 つ)rtl8192ceを削除することで、ドライバー (同じソース ツリーから) をコンパイルしてロードできるようになりました。__devinitpci.hpci.c__devinitdatasw.c

ソース ルートのAgrep -R __devinitには、変更する必要があるすべてのファイルが表示されます。

答え3

これ試してみましたか?

int __devinit = rtl_pci_probe(struct pci_dev *pdev,const struct pci_device_id *id);

答え4

Fedora のカーネルは比較的新しいため、出回っているドライバソースは古いカーネルバージョン用であることが多いです。必要なカーネルバージョンを確認し、Fedora フォーラムを調べ、関連するバグレポートを確認し、カーネルハッカーによるまだ公式ではないドライバを探してください (ないベンダー: ベンダーは多くの場合、1 つのソースを幅広いカーネル バージョンで動作させることができるという幻想を抱いていますが、他のベンダーは、ネイティブ Linux ドライバーに表面的に似ているものに、その他の名前のつかないシステム用のソース ブロブを無理やり押し込むだけです。また、矯正不可能な異端者の中には、両方を試みる人もいます。

関連情報