Android 开机自动加载新wifi模块驱动android手机驱动「Android 开机自动加载新wifi模块驱动」
在android ROM 开发中经常会遇到产品更换wifi模块的情况,一般常见的wifi驱动android内核中自带都有,无需过多调试,要是碰上内核中没有的就需要根据厂商提供的驱动进行移植。
wifi驱动移植过程不多说,根据厂商提供的文档说明进行移植编译出驱动文件xxx.ko即可。
在成功编译出驱动ko文件后,手动inod 加载驱动是可以的,但是开机时不会自动加载,这时可按以下步骤进行调整,让设备开机自动加载新模块的驱动。以U类型模块为例:
1.通过adb shell lsu 命令查看wifi的设备名称。
λ adb shell
Hi3798MV200:/ # lsu
Bus 001 Device 002: ID 1a40:0101
Bus 001 Device 003: ID 1a40:0101
Bus 004 Device 002: ID 1d5c:2000
Bus 001 Device 001: ID 1d6b:0002
Bus 002 Device 001: ID 1d6b:0001
Bus 003 Device 001: ID 1d6b:0002
Bus 004 Device 001: ID 1d6b:0003
Bus 001 Device 004: ID 1a40:0101
Bus 001 Device 005: ID 1a86:7523
Bus 001 Device 006: ID 046d:c534
Bus 001 Device 007: ID 248a:8367
Bus 001 Device 008: ID 174c:55aa
Bus 001 Device 009: ID 0bda:8152
可通过拔插排除无关u设备或查看u设备的具体信息来判断是哪一个,比如我目前用的rtl8188fu模块的设备名称为:0bda:f179
2.添加该设备名称到系统支持的wifi设备列表中:hardwarelibhardware_legacywifiwifi.c
每个模块名称与设备名称一一对应{WIFI_REALTEK_RTL8188FU, "0bda:f179"},
WIFI_REALTEK_RTL8188FU是我们自定义的名称,需要先在头文件的模块名称列表中声明:
hardwarelibhardware_legacyincludehardware_legacywifi.h
3.声明wifi新模块要加载的驱动名称rtl8188fu.ko和位置:wifi.c中
4.将声明的新驱动模块DRIVER_MODULE_RTL8188FU添加到系统对应的驱动列表中:wifi.c
注意sta_drivers[] 中的名称位置顺序需要跟步骤2中的devices[]一一对应。
5.编译hardwarelibhardware_legacy得到libhardware_legacy.so,adb push 到 system/lib/,至此开机后就会自动加载、system/lib/modules/rtl8188fu.ko 新WiFi模块的驱动了。
最后,梳理一下wifi驱动自动加载流程:
1.libhardware_legacy会遍历所有的u设备名称,与devices[]中的wifi模块名称进行对比,有匹配到的话,就会记住该名称的索引位置
2.寻找sta_drivers[]中对应步骤1记住的索引位置指向的驱动名称
黔西版权声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com