MTK9632 Android9.0 方案添加8188ftv驱动模块,记录调试过程中遇到的一些坑
1,因本人之前接触的是mstar方案,mstar方案添加wifi模块只需要在wifi.cfg中添加改wifi模块的
PID.VID,然后在load驱动的中添加驱动加载,看了下此套代码中也有这个脚本和配置文件因此照着改了一下
后,调试发现并没有用,新代码中没有用到这一套逻辑
2,接着调试发现打开wifi时并没有去加载驱动?那他的驱动什么时候加载的?
3。查看代码发现其在init.m7332.rc中开机就加载驱动,随后打开关闭wifi只是操作节点up down 并没有去
判断wifi驱动是否加载
4.接着编译出8188ftv模块所用的8188fu.ko驱动,动态复制进去调试,手动insmod
5,这里遇到一个坑编译驱动时驱动中提供了一个9,0添加文档,随后按照文档改了一通,发现?啥用木有
其中在device/${VENDOR}/${DEVICE}/manifest.xml中添加
<hal format="hidl">
<name>android.hardware.wifi</name>
<transport>hwbinder</transport>
<version>1.2</version>
<interface>
<name>IWifi</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl">
<name>android.hardware.wifi.supplicant</name>
<transport>hwbinder</transport>
<version>1.1</version>
<interface>
<name>ISupplicant</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl">
<name>android.hardware.wifi.hostapd</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IHostapd</name>
<instance>default</instance>
</interface>
</hal>
第一次编译没事?第二次编译不开机??删除这个改动就好了
6.又是一个坑,我将原始加载7668wifi模块的驱动开关关掉,手动加载8188驱动模块,能加载成功,开启wifi失败??让我一度怀疑是不是我驱动编译失败了,检查了好几遍驱动编译
后面我有手动去加载7668驱动突然发现,额,咋又和8188加载一样,驱动加载成功,节点也有为啥wifi开启失败。
7.这时我又打开系统自带7668驱动加载开关,发现他加载可以,难道是我少加了什么,直接卸载单个7668驱动,加载8188驱动
rmmod wlan_mt7668_usb
insmod vendor/lib/modules/8188fu.ko ifname=wlan0 if2name=p2p0
8.发现8188可以打开wifi了,这时我去重新试了一下前面说的驱动的问题,发现只要不在init.rc 中执行,开机后手动执行wifi就开不起来,有毒
insmod /vendor/lib/modules/firmware_class.ko path="/vendor/etc/firmware/"
insmod /vendor/lib/modules/cfg80211.ko
insmod /vendor/lib/modules/mtprealloc.ko
9.接着我直接不改代码测试8188驱动开机时启动,出现没作用??后面直接在代码中添加没问题。难道是直接测试少了啥?
10.突然发现单独用8188竟然打开不了热点??查看代码发现ap 节点被改成了ap0
/**
* Helper function to handle creation of AP iface.
* For devices which do not the support the HAL, this will bypass HalDeviceManager &
* teardown any existing iface.
*/
private String createApIface(@NonNull Iface iface) {
synchronized (mLock) {
if (mWifiVendorHal.isVendorHalSupported()) {
return mWifiVendorHal.createApIface(
new InterfaceDestoyedListenerInternal(iface.id));
} else {
Log.i(TAG, "Vendor Hal not supported, ignoring createApIface.default return ap0");
return "ap0";
//return handleIfaceCreationWhenVendorHalNotSupported(iface);
}
}
}
致此调试完成