做过MTK 安卓的人都知道,如果mtk不写wifi地址,一般情况会报错0x00错误,而且每次开关wifi都会生成一个新的wifi地址。
一些工厂生产的时候为了省事并不写wifi地址。
为了为每个机器生产唯一的地址,可以用以下思路修改
1.首先是唯一地址,这个怎么处理?提供一个方法,软件读某个芯片编号(芯片编号总不变的吧:),一般读mtk cpu的比较好的方法),通过编号自己用一个算法生成一个地址。
2.为系统提供地址,这里有两种方法
方法一,上面说了,在生成新wifi地址的时候,用我们算法生成的地址替换即可,但是要注意哦,0x00错误仍然存在,这个就需要你屏蔽掉0x00出错这段代码了。
方法二, 在系统启动的时候,把生成的wifi 地址写入mtk系统文件("/data/nvram/APCFG/APRDEB/WIFI")
以上两种方法各有利弊
方法一,我目前使用的方法,但是在4.0以前的版本不好实现,原因是mtk把0x00错误处理的代码封装到库里面,并没有开放,需要反编译动态链接库(wlan_6628.ko),工具嘛可以用IDA.
方法二,4.0之前用得方法,这个方法必须在wifi初始化之前处理,判断wifi地址是否是的没有写入的,如果是没写入的,然后就修改 ,记得还得修改权限。
蓝牙地址也可以按照以上的思路来修改,目前发现工厂不写蓝牙地址,所有机器都是一个地址,在同一个地方几台机器一个地址会出问题的。。。
手机IMEI号也可以按照以上来修改,imei号比较复杂一点,mtk对imei号有个加密算法保存,俄罗斯某个大神推算出了这个算法的实现,有兴趣的可以去谷歌搜索研究下,