Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(8):wifi与蓝牙
wifi与蓝牙放在一起,因为这两者的芯片供应商有2种:
高通(qcom)或博通(brcm)
而且都是成对一起使用某个厂商的芯片,不会出现wifi是高通,蓝牙是博通的情况
一、如何判断wifi芯片供应商
高通wifi芯片:
在system\etc\firmware\wlan\prima\里有WCNSSxxxx类似的文件,这些是固件
在system\lib\modules\prima里有prima_wlan.ko,这是wifi驱动
wifi驱动也有不以模块形式加载,而直接集成在内核里的
博通wifi芯片:
在system\etc\firmware\里有fw_bcmdhdxxx.bin类似的文件,这些是固件
在system\etc\wifi里有bcmdhd.cal配置文件
二、如何判断蓝牙芯片供应商
高通蓝牙:
system\etc\init.qcom.bt.sh有初始化蓝牙的相关脚本
system\bin里有btnvtool蓝牙工具
博通蓝牙:
能找到BCM4334B0_002.001.013.1804.1954.hcd这样的文件
或者有brcm_patchram_plus这个程序
三、在BoardConfig.mk里增加高通wifi项
# Wifi
BOARD_HAS_QCOM_WLAN := true
BOARD_WLAN_DEVICE := qcwcn
WPA_SUPPLICANT_VERSION := VER_0_8_X
BOARD_WPA_SUPPLICANT_DRIVER := NL80211
BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE)
BOARD_HOSTAPD_DRIVER := NL80211
BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE)
WIFI_DRIVER_MODULE_PATH := "/system/lib/modules/wlan.ko"
WIFI_DRIVER_MODULE_NAME := "wlan"
WIFI_DRIVER_FW_PATH_STA := "sta"
WIFI_DRIVER_FW_PATH_AP := "ap"
在本例里,必须从官方rom里提取wlan.ko放到/system/lib/modules/wlan.ko
然后参考官方卡刷包的刷机脚本updater-script
在device/pantech/a870/Android.mk里添加如下语句
# Create wlan firmware links
$(shell mkdir -p $(TARGET_OUT_ETC)/firmware/wlan/prima; \ln -sf /data/misc/wifi/WCNSS_qcom_cfg.ini $(TARGET_OUT_ETC)/firmware/wlan/prima/WCNSS_qcom_cfg.ini; \ln -sf /data/misc/wifi/prima.bin $(TARGET_OUT_ETC)/firmware/wlan/prima/prima.bin)# Create wlan module links
$(shell mkdir -p $(TARGET_OUT)/lib/modules; \
ln -sf /system/lib/modules/prima/prima_wlan.ko $(TARGET_OUT)/lib/modules/wlan.ko)
这些语句用于创建链接
最终编译后会在updater-script里生成如下语句:
symlink("/data/misc/wifi/WCNSS_qcom_cfg.ini", "/system/etc/firmware/wlan/prima/WCNSS_qcom_cfg.ini");
symlink("/data/misc/wifi/prima.bin", "/system/etc/firmware/wlan/prima/prima.bin");
symlink("/system/lib/modules/prima/prima_wlan.ko", "/system/lib/modules/wlan.ko");
另外值得提醒的是,WCNSS_qcom_cfg.ini这个文件,aosp或其它第三方rom必须放在system\etc\wifi才会起作用,但官方ROM却有可能放在system\etc\firmware\wlan\prima里,至于需要放在哪个路径才行,请读者自行试验。
四、在BoardConfig.mk里增加博通wifi项
# Wifi
BOARD_WPA_SUPPLICANT_DRIVER := NL80211
WPA_SUPPLICANT_VERSION := VER_0_8_X
BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_bcmdhd
BOARD_HOSTAPD_DRIVER := NL80211
BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_bcmdhd
BOARD_WLAN_DEVICE := bcmdhd
WIFI_DRIVER_FW_PATH_PARAM := "/sys/module/bcmdhd/parameters/firmware_path"
WIFI_DRIVER_FW_PATH_STA := "/system/etc/firmware/fw_bcmdhd.bin"
WIFI_DRIVER_FW_PATH_AP := "/system/etc/firmware/fw_bcmdhd_apsta.bin"
然后在build.prop还必须有wifi相关的配置项,具体请参考官方rom
例如wifi.interface=wlan0类似这种项必须有,请读者自行尝试
五、在BoardConfig.mk里增加高通蓝牙项
# Bluetooth
BOARD_HAVE_BLUETOOTH := true
BOARD_HAVE_BLUETOOTH_QCOM := true
BLUETOOTH_HCI_USE_MCT := true
BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/pantech/a870/bluetooth
六、在BoardConfig.mk里增加博通蓝牙项
# Bluetooth
BOARD_HAVE_BLUETOOTH := true
BOARD_HAVE_BLUETOOTH_BCM := true
BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/pantech/a870/bluetooth
注意:博通蓝牙的话,可能msm-aosp对其支持较差,总之笔者没有成功适配过博通蓝牙功能-_-
七、修改蓝牙设备默认名称
修改device/pantech/a870/bluetooth/bdroid_buildcfg.h
#define BTM_DEF_LOCAL_NAME "QCOM-BTD"
这个是蓝牙默认名称,可以自己修改,比如泛泰a870可以这样改
#define BTM_DEF_LOCAL_NAME "IM-A870"
八、高通wifi调试
当wifi不能用时,除了看log,还可以对比官方rom来做试验
打开adb shell并取得root权限
接下来介绍几个调试命令
getprop wlan.driver.status
获取wlan驱动状态
未打开wifi时是unloaded
打开wifi后是ok
cat /proc/modules
这个用于获取当前加载的模块
未打开wifi时
texfat 174987 0 - Live 0x00000000 (PO)
mwlan_aarp 3331 0 - Live 0x00000000 (PO)
打开wifi后
wlan 3021860 0 - Live 0x00000000 (O)
texfat 174987 0 - Live 0x00000000 (PO)
mwlan_aarp 3331 0 - Live 0x00000000 (PO)
Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(8):wifi与蓝牙相关推荐
- 鸿蒙系统研究之五:替换 AOSP 预编译库,关闭 SELinux
这是我的鸿蒙系统研究系列文章的第五篇,有兴趣还可以看看前面的文章: 鸿蒙系统研究第一步:从源码构建系统镜像 鸿蒙系统研究之二:内核编译 鸿蒙系统研究之三:迈出平台移植第一步 鸿蒙系统研究之四:根文件系 ...
- linux+4.4+android,Ubuntu 14.04 x64配置Android 4.4 kitkat编译环境的方法
Ubuntu 14.04 x64配置Android 4.4 kitkat编译环境的方法跟Ubuntu 12.04 - 13.10 以及jellybean编译环境配置没多大区别, 顺便记录下而已: 64 ...
- 如何编译各平台使用的库-以编译tolua为例
转载注明出处: https://www.jianshu.com/p/5a35602adef8?appinstall=0 做U3D手机游戏,最热门的技术组合是c#+lua,使用lua是因为可以热更新,而 ...
- 在arm64平台kkfileview和LibreOffice的编译使用
在arm64平台kkfileview和LibreOffice的编译使用 1.手动编译LibreOffice 1.1在arm64的机器上启动一个docker镜像 2.开始编译kkfileview的doc ...
- 树莓派3 Android Pie 编译适配
树莓派3 Android Pie 编译适配 1准备工作 2.下载源代码以及配置依赖项 2.1 配置Git与Repo 2.2 下载源代码 2.3 配置依赖项 3. 编译 3.1 编译内核 3.2 打补丁 ...
- Android Studio 编译适配-NDK issue 解决
旧项目Android Studio 编译适配-NDK issue 问题点记录 旧的项目 在Android Studio新版本编译中遇到以下问题. 流水式总结记录一下 NDK getPlatformVe ...
- Android AOSP 单独编译某一模块
由于AOSP 项目太大,我只修改了一个模块,比如设置. 那么只需要单独编译设置这个模块就可以了. 首先执行Source: source build/envsetup.sh 执行之后,就会有一些额外的命 ...
- 【Android 逆向】Android 逆向通用工具开发 ( Windows 平台静态库程序类型 | 编译逆向工具依赖的 Windows 平台静态库程序 )
文章目录 一.Windows 平台静态库程序类型 二.编译逆向工具依赖的 Windows 平台静态库程序 一.Windows 平台静态库程序类型 在 Android 逆向通用工具 MobileGame ...
- ffmpeg编译gb28181_国标GB28181协议视频推流平台EasyGBD在Linux下编译报“UINT64_C在此作用领域中尚未声明”错误...
上一篇我们讲了国标GB28181协议视频推流平台EasyGBD正在重新编译,在编译中难免遇到不同的报错,比如"UINT64_C在此作用领域中尚未声明"错误就是其中一个. 出现该问题 ...
- 在Linux平台上搭建EasyDarwin,编译代码并简单部署
测试环境: Ubuntu gcc / g++ 从https://github.com/EasyDarwin/EasyDarwin下载代码 1.编译 第一步:进入源代码目录下 cd ./Easy ...
最新文章
- 这味儿上头,前有文言文,又来东北话,中文编程玩得挺得劲!
- ssh中linux 变颜色,linux – 如何通过SSH在Vim中启用颜色?
- JVM-04垃圾收集Garbage Collection(上)【垃圾对象的判定】
- python中numpy.ndarray与list的区别?以及用matplotlab.pyplot绘图时的注意事项。
- linux 神的编辑器,编辑器之神-vim的使用,编辑器神-vim
- Java并发编程实战~ReadWriteLock~
- ELK下es的分词器analyzer
- 几岁孩子可以学python_编程python适合多大孩子学
- linux全局启动tomcat,linux下启动tomcat服务
- Mac上redis下载安装与配置详细版
- 利用Maven构建appfuse。
- 扎拉赞恩 服务器 微信群,魔兽8.0剧透 回归的扎拉赞恩与沃金的骨灰
- ZStack-ZCCE-网络实验-VPC网络创建
- 注册表 关闭打印机服务器,Win7系统添加打印机无Print Spooler服务无注册表解决方法...
- 音乐专业如何利用计算机思维,利用信息技术培养学生音乐创造思维能力
- oracle db、dba和rdba
- 吐槽微软,远离微软!
- 俄被踢出SWIFT,地缘冲突推动区块链金融清算行业发展
- 2007年12月14日
- Matplotlib的子图subplot 显示多图
热门文章
- Shapley算法总结
- 计算机数据链路层教案,4.1数据链路层作用教案(计算机网络技术基础教案).doc...
- RK3288 Android7.1软件开发指南
- easycamera arm linux环境下运行时库文件找不到的解决方案
- 计算机科学导论第五版第二章答案,(计算机科学导论第2章答案.docx
- SQL学习-数据库基础知识(1)
- 空间解析几何 | 向量、数量积、向量积、混合积、距离公式
- 空间解析几何之向量运算
- linux校验密码错误,linux 命令 如何做密码校验
- 简述SSM框架与SSH框架