无法在Ubuntu 13.10上编译RealTek RTL8188CE驱动程序
我想在我的机器上编译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
我怎样才能解决这个问题?
显然,自13.04以来,Linux标头已经发生了足够的变化,以打破这个驱动程序。 经过多天的工作,我终于修复了编译问题并让驱动程序正常工作。 您可以在我的Github回购中找到修复的驱动程序,以及Realtek发布的原始版本中所有更改的详细信息: https : //github.com/FreedomBen/rtl8188ce-linux-driver
对于那些感兴趣的人,最大的变化是删除了create_proc_entry()
以及将调试信息放入/proc
目录的其他相关函数。 我还没有将代码转换为使用替换函数,所以到目前为止还没有报告调试信息。 但这并不会影响驱动程序的性能。
另一个重大变化是struct ieee80211_hw
, struct ieee80211_conf
的重组,以及struct ieee80211_hw
的添加,它取代了曾经是ieee80211_conf
的channel
成员。
还有一个新的辅助函数cfg80211_get_chandef_type()
用于检索通道类型而不是旧的直接方法。
内核3.9及更高版本不再支持rtl8188ce。
我的台式机有相同的WIFI卡。
我现在使用的最好的开源支持卡是Atheros。
-
选项#1使用“Ubuntu 12.04 LTS”,因为它通过rtl8192ce驱动程序支持rtl8188ce。
-
选项#2对支持开源内核的wifi卡进行研究。
-
做研究后的选项#3,使用将使用最新内核3.12及以上的卡。
在我使用Realtek之后,我不会再使用它们,因为rtl8188ce对于Windows和Linux来说是一张糟糕的卡。