关于MIUI在小米手机上WiFi无法使用IPv6的解决方法

小米科技的 MIUI 经过对 android 深度优化后,显得更加中国化 [1] 。但小米手机从 MIUI v4 之后就会出现 WiFi 无法使用 IPv6 的情况 [2] 。经测试,小米 2 和 2S 都无法正常使用 IPv6。

经过确认,是因为 MIUI 封装的 init.qcom.sh 代码中有如下语句,导致高通芯片的手机无法正确配置 IPv6 路由 [2]
#
# Suppress default route installation during RA for IPV6; user space will take
# care of this
#
for file in /proc/sys/net/ipv6/conf/*
do
echo 0 > $file/accept_ra_defrtr
done

临时解决方法就是自己进入 /proc/sys/net/ipv6/conf/ 下,把 default、all 等文件夹下面的 accept_ra_defrtr 的值手动改成1,但 init.qcom.sh 启动后会存于 ramdisk 中,即使手动修改相关的文件,手机重启后就会失效。

彻底解决这跟问题的方法有两个,一是等待 MIUI 开发组更新相关代码,二是自己修改重新打包 boot.img。这些对于没有任何编程经验的用户来说都不是个好方法。事实上,我们可以通过一些脚本执行应用,比如SManager [3] ,设定开机执行特定脚本改动相关文件的取值。具体步骤如下:

1、Root MIUI 系统。开发版可以直接在「授权管理」中打开 Root 权限。稳定版的 MIUI 也可以取得 Root 权限 [4] ,但一切因为 Root 后导致的问题,可能失去小米科技对手机的保修。

2、在 /system/etc/ 目录下查找 sysctl.conf 文件,没有的话新建一个,并编辑添加如下代码:
net.ipv6.conf.default.accept_ra_defrtr = 1

net.ipv6.conf.all.accept_ra_defrtr = 1

一般情况下,小米手机添加这两条就可以,如果最后不行,而且 /proc/sys/net/ipv6/conf/ 目录下还有 wlan0 文件夹的话,可以再添加如下语句:
net.ipv6.conf.wlan0.accept_ra_defrtr = 1

保存关闭 sysctl.conf 文件,并设置其权限为 rw-r--r--;

3、安装 SManager,执行 system/bin/ 中的 sysctl 文件,如果目录下没有该文件,可以安装 busybox 解决 [5] 。具体配置如下图:

关于MIUI在小米手机上WiFi无法使用IPv6的解决方法_第1张图片

4、设置允许 SManager 开机自启动,问题解决。

欢迎讨论,我的微博: @cnfy ,我的Twitter: @cnfeiyang ,我的Facebook: @cnfeiyang

参考资料:

[1] Wikipedia contributors, 'MIUI',  Wikipedia, The Free Encyclopedia,  9 April 2013, 14:17 UTC, < http://en.wikipedia.org/w/index.php?title=MIUI&oldid=549515101 > [accessed 16 April 2013]
[2]  http://www.miui.com/thread-869982-1-1.html
[
3]  https://play.google.com/store/apps/details?id=os.tools.scriptmanager
[4]  http://bbs.xiaomi.cn/thread-7157132-1-1.html
[5]  https://play.google.com/store/apps/details?id=stericson.busybox

你可能感兴趣的:(Android)