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);
            }
        }
    }

 

 

致此调试完成