GK6780升级oh 6.1 release适配兆通微9612U模组WIFI驱动实践总结
一、先拿到驱动源码
1、咨询模组厂商,让他们提供即可
比如我这里获取到的驱动源码包名称是:ZTOP_ACEV100_Android_wifi_bt_20260326214112.tar.gz,解压后的目录截图如下

2、也可以直接取已经编好的ko文件与bin文件直接和项目一起编译(如此就跳过步骤一、步骤二)
二、编译模组(如果是直接拿的ko文件则跳过这一步)
1、驱动源码放置到项目中
直接将驱动源码放置在项目的根目录即可

2、修改配置文件让驱动源码参与编译
(1)、在驱动的编译脚本新增产品名称、新增编译配置



(2)、编译
变量指令: sudo ./build_linux.sh gk6780v100
编译之后会生成ko与bin文件
三、加载驱动生成的ko继而编译完整镜像
1、获取编译生成的ko
ZTOP_ACEV100_Android_wifi_bt_20260326214112\wifi_driver\build\output\ztop_wifi_driver.ko
2、拿到厂商随驱动提供的固件
ZTOP_ACEV100_Android_wifi_bt_20260326214112\wifi_driver\fw\zt9612_fw.bin
3、打包文件到项目中编译镜像
将上述两个文件(ztop_wifi_driver.ko和zt9612_fw.bin)拷贝到项目目录vendor目录下:在此处新建一个目录wifi_ztop,内容如下

BUILD.gn的内容如下

4、修改drivers\peripheral\wlan\wlan.gni文件:
drivers_peripheral_wlan_feature_vendor = "default"
5、不需要wifi_hal_service,将其去掉

四、镜像编译上板验证
1、静态验证,看ko和bin是否都被打包到了正确的目录下面

2、查看wlan0接口是否自动生成了,有wlan0说明wifi驱动加载成功!

3、如果上一步未自动生成,则手动insmod /vendor/etc/ko/ztop_wifi_driver.ko,再确认是否生成了wlan0接口(这里不需要)
五、解决后续报错
1、wifi无法打开


服务加载失败,该服务的 hostService 是 null,HDF DevmgrServiceLoadDevice 在接收到 LoadDevice("wpa_interface_service") 请求时,会去查找已注册的设备服务(hostService)。返回 hostService is null 说明,系统启动时,wpa_interface_service 对应的 HDF 驱动从未被加载/注册进设备管理器。需要先确认hcs配置是否正确包含了wpa_interface_service。查看device_info.hcs配置文件,对比后发现

问题1:wpa_c_device 挂在 wifi_c_host 下而不是独立的 wpa_host
GK6780V100 的 wpa_interface_service 被放进了 wifi_c_host 这个 host 进程里,与 wlan_hal_c_service 共用同一个进程。wifi_c_host 服务以 uid=root 运行,但未被列入 high_privilege_process_list.json 高权限进程白名单,导致认证失败。当 wifi_c_host 进程本身启动失败或权限问题时,wpa_interface_service 也跟着失败。
问题2:uid = "root" 但缺少 caps 和 initconfig
GK6320 的 wpa_host 配置了:

GK6780V100 的 wifi_c_host 用的是 uid = "root" 但没有 caps 和 initconfig,且 uid=root 的进程在 OH6.1 的新安全模型下需要在 high_privilege_process_list.json 中注册才能通过认证。
修复方案:将 wpa_c_device 从 wifi_c_host 中拆分出来,单独建 wpa_host(对齐 GK6320),这样 wpa 不再受 wifi_c_host 认证失败的牵连

根因总结:wifi_c_host(uid=root)不在高权限白名单 → 进程认证失败 → wpa_interface_service 的 hostService 为 null → WiFi 打不开
全部修复后,问题解决。至此驱动适配完成
更多推荐
所有评论(0)