
我嘗試在我的電腦上編譯 Realtek 驅動程序,但收到以下錯誤:
make -C /lib/modules/3.11.0-12-generic/build M=/home/david/Downloads/rtl8188ce-linux-driver modules
make[1]: Entering directory `/usr/src/linux-headers-3.11.0-12-generic'
CC [M] /home/david/Downloads/rtl8188ce-linux-driver/base.o
/home/david/Downloads/rtl8188ce-linux-driver/base.c: In function ‘rtl_action_proc’:
/home/david/Downloads/rtl8188ce-linux-driver/base.c:885:32: error: ‘struct ieee80211_conf’ has no member named ‘channel’
rx_status.freq = hw->conf.channel->center_freq;
^
/home/david/Downloads/rtl8188ce-linux-driver/base.c:886:32: error: ‘struct ieee80211_conf’ has no member named ‘channel’
rx_status.band = hw->conf.channel->band;
^
/home/david/Downloads/rtl8188ce-linux-driver/base.c: In function ‘rtl_send_smps_action’:
/home/david/Downloads/rtl8188ce-linux-driver/base.c:1451:24: error: ‘struct ieee80211_conf’ has no member named ‘channel’
info->band = hw->conf.channel->band;
^
make[2]: *** [/home/david/Downloads/rtl8188ce-linux-driver/base.o] Error 1
make[1]: *** [_module_/home/david/Downloads/rtl8188ce-linux-driver] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.11.0-12-generic'
make: *** [all] Error 2
我怎樣才能解決這個問題?
答案1
顯然,自 13.04 以來,Linux 頭檔已經發生了足夠的變化,足以破壞這個驅動程式。經過多天的工作,我終於解決了編譯問題並使驅動程式正常運作。您可以在我的 Github 儲存庫中找到修復後的驅動程序,以及對 Realtek 發布的原始版本所做的所有更改的詳細資訊: https://github.com/FreedomBen/rtl8188ce-linux-driver
對於有興趣的人來說,最大的變化是刪除了create_proc_entry()
將偵錯資訊放入目錄的其他相關功能/proc
。我尚未將程式碼轉換為使用替換函數,因此目前不會報告偵錯資訊。但這不會以任何方式影響驅動程式的效能。
另一個重大變化是重組struct ieee80211_hw
,struct ieee80211_conf
,並添加struct cfg80211_chan_def
它取代了以前的channel
成員ieee80211_conf
。
還有一個新的輔助功能cfg80211_get_chandef_type()
用於檢索通道類型而不是舊的直接方法。
答案2
核心 3.9 及更高版本不再支援 rtl8188ce。
我的桌上型電腦也有同樣的 WIFI 卡。
我現在使用的最好的開源支援卡是 Atheros。
選項 #1 使用“Ubuntu 12.04 LTS”,因為它透過 rtl8192ce 驅動程式支援 rtl8188ce。
選項#2 研究支援開源核心的 wifi 卡。
選項 #3 經過研究後,使用適用於最新核心 3.12 及更高版本的卡片。
在我使用 Realtek 的經驗之後,我不會再使用它們,因為 rtl8188ce 對於 Windows 和 Linux 來說是一張糟糕的卡片。