rtl8188ce 无线网不稳定终极解决方案 - 哆啦比猫的技术瞎扯 - Arch Linux · ドラえもん · 实时绘制

rtl8188ce 无线网不稳定终极解决方案

哆啦比猫 posted @ 2014年4月04日 21:02 in Linux with tags linux driver rtl8188ce solution , 22533 阅读

先容我废话

据说 realtek 的无线网卡就这个系列问题多多。以前连接不太稳定,但不会频繁掉线就凑活用了。自从不知哪次升级以来,掉线越来越频繁,最后已经发展到 10秒必掉 了,以至于要上网就得拼命到终端里重连网络。网上也有各种解决方法,装官方驱动,关闭省电功能等等,全部试过,都不成功。(前者网上传言无法编译,后者没有效果,等等)

一翻折腾后,发现手机可以开 usb tethering,然后就可以 手机连 wifi,电脑连手机 上网了。但是毕竟是手机吧,速度不太理想。而且,一想到电脑里无线网卡不能用,真TM不甘心啊。

除了官方驱动,能找到的各种方法都试过了,所以很自然的想到,还是试试官方驱动吧。

AUR里有 8188cu 系列的包,但是没有 8188ce 的,所以只能自力更生了。

于是乎,插上手机开 usb tethering,下载了 rtl8188ce 的驱动。一编译,果然一堆错误(这个驱动似乎好长时间没维护了)。想想自己好歹也是一名 serious c coder,就帮 realtek 修错吧……

于是开始了漫长的调试之旅……

在追溯错误的时候,发现似乎 linux 内核无线网相关的一个 struct 有了大变动,于是打算查一下以便移植到最新的内核,于是发现了一个隐藏在八爪猫深处的仓库:rtl8188ce-linux-driver,而且是前天更新的哦。仓库简介翻译:这是修改版的 realtek 无线网卡官方 Linux 驱动,修复了一些 bug,添加了对内核版本 >= 3.11.x 的支持,同时也修复了 忽略CRPA限制 的一个 bug。

仓库在此:https://github.com/FreedomBen/rtl8188ce-linux-driver

Archlinux 中的解决方案

其它发行版可以参考仓库的说明,其对 Ubuntu 和 Fedora 的说明应该很明确了。

显然先把仓库搞下来,然后 cd 进去

git clone https://github.com/FreedomBen/rtl8188ce-linux-driver.git
cd rtl8188ce-linux-driver

再就是编译咯,编译时会问你要不要切换到 fedora20 的分支,选 yes(y),因为 fedora20 的内核是支持的内核版本里最高的。

make

断网吧

sudo netctl stop-all

在安装前要先把已经加载的驱动关掉。运行

lsmod | grep '^rtl'

会得到所有相关的内核模块(我的是 rtl8192ce, rtlwifi, rtl_pci, rtl8192c_common),全部移除掉:

sudo modprobe -r rtl8192ce
sudo modprobe -r rtlwifi
sudo modprobe -r rtl_pci
sudo modprobe -r rtl8192c_common

然后安装(似乎会删掉旧的驱动)并载入新的内核模块。安装后会问你要不要关闭省电功能,选 yes(y)

sudo make install
sudo modprobe rtl8192ce
sudo modprobe rtlwifi

以下步骤不知道有没有必要,说是要让驱动自动加载。

rtl8192ce

再就可以连网了!而且再也不掉线了!

PS:希望哪位会打包的写个 PKGBUILD 放到 AUR 上


凡未特殊声明(转载/翻译),所有文章均为原创。
by Giumo Xavier Clanjor (哆啦比猫/兰威举), 2010-2019.
知识共享许可协议本作品采用知识共享署名·非商业性使用·相同方式共享 3.0 中国大陆许可协议进行许可。
文中凡未特殊声明且未声明为引用的代码均以 MIT 协议授权。

blog comments powered by Disqus
© 2010-2019 Giumo Xavier Clanjor (哆啦比猫/兰威举).
© 2013, 2014, 2015-2016 and 2017 The Dark Colorscheme Designed by Giumo Xavier Clanjor (哆啦比猫/兰威举).
知识共享署名·非商业性使用·相同方式共享 3.0 中国大陆许可协议
| © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee