这是我遇到的错误。我猜是因为驱动程序适用于 Ubuntu 的旧版本,但不幸的是,这是我能找到的最新版本的驱动程序。该驱动程序适用于我的 Realtek WiFi 卡RTL8273AE-BT
。
lewis@luitaco:~/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012$ make
make -C /lib/modules/3.16.0-31-generic/build M=/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012 modules
make[1]: Entering directory '/usr/src/linux-headers-3.16.0-31-generic'
CC [M] /home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.o
In file included from /home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:39:0:
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/pci.h:245:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rtl_pci_probe’
int __devinit rtl_pci_probe(struct pci_dev *pdev,
^
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c: In function ‘_rtl_init_mac80211’:
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:320:6: error: ‘IEEE80211_HW_BEACON_FILTER’ undeclared (first use in this function)
IEEE80211_HW_BEACON_FILTER |
^
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:320:6: note: each undeclared identifier is reported only once for each function it appears in
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:351:4: error: ‘struct ieee80211_hw’ has no member named ‘channel_change_time’
hw->channel_change_time = 100;
^
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c: In function ‘rtl_action_proc’:
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:867:32: error: ‘struct ieee80211_conf’ has no member named ‘channel’
rx_status.freq = hw->conf.channel->center_freq;
^
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:868:32: error: ‘struct ieee80211_conf’ has no member named ‘channel’
rx_status.band = hw->conf.channel->band;
^
/home/lewis/Realtek/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)
rx_status.flag |= RX_FLAG_MACTIME_MPDU;
^
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c: In function ‘rtl_beacon_statistic’:
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:1141:2: error: implicit declaration of function ‘compare_ether_addr’ [-Werror=implicit-function-declaration]
if (compare_ether_addr(hdr->addr3, rtlpriv->mac80211.bssid))
^
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c: In function ‘rtl_send_smps_action’:
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:1432:16: error: ‘struct <anonymous>’ has no member named ‘sta’
info->control.sta = sta;
^
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:1433:24: error: ‘struct ieee80211_conf’ has no member named ‘channel’
info->band = hw->conf.channel->band;
^
cc1: some warnings being treated as errors
scripts/Makefile.build:257: recipe for target '/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.o' failed
make[2]: *** [/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.o] Error 1
Makefile:1345: recipe for target '_module_/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012' failed
make[1]: *** [_module_/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-3.16.0-31-generic'
Makefile:27: recipe for target 'all' failed
make: *** [all] Error 2
lewis@luitaco:~/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012$ sudo su
root@luitaco:/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012# make install
make -C /lib/modules/3.16.0-31-generic/build M=/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012 modules
make[1]: Entering directory '/usr/src/linux-headers-3.16.0-31-generic'
CC [M] /home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.o
In file included from /home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:39:0:
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/pci.h:245:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rtl_pci_probe’
int __devinit rtl_pci_probe(struct pci_dev *pdev,
^
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c: In function ‘_rtl_init_mac80211’:
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:320:6: error: ‘IEEE80211_HW_BEACON_FILTER’ undeclared (first use in this function)
IEEE80211_HW_BEACON_FILTER |
^
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:320:6: note: each undeclared identifier is reported only once for each function it appears in
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:351:4: error: ‘struct ieee80211_hw’ has no member named ‘channel_change_time’
hw->channel_change_time = 100;
^
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c: In function ‘rtl_action_proc’:
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:867:32: error: ‘struct ieee80211_conf’ has no member named ‘channel’
rx_status.freq = hw->conf.channel->center_freq;
^
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:868:32: error: ‘struct ieee80211_conf’ has no member named ‘channel’
rx_status.band = hw->conf.channel->band;
^
/home/lewis/Realtek/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)
rx_status.flag |= RX_FLAG_MACTIME_MPDU;
^
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c: In function ‘rtl_beacon_statistic’:
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:1141:2: error: implicit declaration of function ‘compare_ether_addr’ [-Werror=implicit-function-declaration]
if (compare_ether_addr(hdr->addr3, rtlpriv->mac80211.bssid))
^
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c: In function ‘rtl_send_smps_action’:
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:1432:16: error: ‘struct <anonymous>’ has no member named ‘sta’
info->control.sta = sta;
^
/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:1433:24: error: ‘struct ieee80211_conf’ has no member named ‘channel’
info->band = hw->conf.channel->band;
^
cc1: some warnings being treated as errors
scripts/Makefile.build:257: recipe for target '/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.o' failed
make[2]: *** [/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.o] Error 1
Makefile:1345: recipe for target '_module_/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012' failed
make[1]: *** [_module_/home/lewis/Realtek/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-3.16.0-31-generic'
Makefile:27: recipe for target 'all' failed
make: *** [all] Error 2
答案1
您应该使用最新的(比您的 Ubuntu 版本更新)内核及其附带的驱动程序: http://cateee.net/lkddb/web-lkddb/RTL8723AE.html- 在 Linux 内核中发现:3.8–3.19、4.0-rc+HEAD
例如 -http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.19-vivid/
如果遇到网速慢的情况,请在路由器中禁用 WMM: http://ubuntuforums.org/showthread.php?t=2267816&page=3
答案2
更新至内核 3.19,然后必须使用命令 ~$ sudo nano /etc/modules 将 modprobe 设置为在启动时自动加载,并将 rtl8723ae 添加到列表中。希望这可以帮助其他遇到此 wifi 设备问题的人。