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与蓝牙相关推荐

  1. 鸿蒙系统研究之五:替换 AOSP 预编译库,关闭 SELinux

    这是我的鸿蒙系统研究系列文章的第五篇,有兴趣还可以看看前面的文章: 鸿蒙系统研究第一步:从源码构建系统镜像 鸿蒙系统研究之二:内核编译 鸿蒙系统研究之三:迈出平台移植第一步 鸿蒙系统研究之四:根文件系 ...

  2. 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 ...

  3. 如何编译各平台使用的库-以编译tolua为例

    转载注明出处: https://www.jianshu.com/p/5a35602adef8?appinstall=0 做U3D手机游戏,最热门的技术组合是c#+lua,使用lua是因为可以热更新,而 ...

  4. 在arm64平台kkfileview和LibreOffice的编译使用

    在arm64平台kkfileview和LibreOffice的编译使用 1.手动编译LibreOffice 1.1在arm64的机器上启动一个docker镜像 2.开始编译kkfileview的doc ...

  5. 树莓派3 Android Pie 编译适配

    树莓派3 Android Pie 编译适配 1准备工作 2.下载源代码以及配置依赖项 2.1 配置Git与Repo 2.2 下载源代码 2.3 配置依赖项 3. 编译 3.1 编译内核 3.2 打补丁 ...

  6. Android Studio 编译适配-NDK issue 解决

    旧项目Android Studio 编译适配-NDK issue 问题点记录 旧的项目 在Android Studio新版本编译中遇到以下问题. 流水式总结记录一下 NDK getPlatformVe ...

  7. Android AOSP 单独编译某一模块

    由于AOSP 项目太大,我只修改了一个模块,比如设置. 那么只需要单独编译设置这个模块就可以了. 首先执行Source: source build/envsetup.sh 执行之后,就会有一些额外的命 ...

  8. 【Android 逆向】Android 逆向通用工具开发 ( Windows 平台静态库程序类型 | 编译逆向工具依赖的 Windows 平台静态库程序 )

    文章目录 一.Windows 平台静态库程序类型 二.编译逆向工具依赖的 Windows 平台静态库程序 一.Windows 平台静态库程序类型 在 Android 逆向通用工具 MobileGame ...

  9. ffmpeg编译gb28181_国标GB28181协议视频推流平台EasyGBD在Linux下编译报“UINT64_C在此作用领域中尚未声明”错误...

    上一篇我们讲了国标GB28181协议视频推流平台EasyGBD正在重新编译,在编译中难免遇到不同的报错,比如"UINT64_C在此作用领域中尚未声明"错误就是其中一个. 出现该问题 ...

  10. 在Linux平台上搭建EasyDarwin,编译代码并简单部署

    测试环境:  Ubuntu  gcc / g++  从https://github.com/EasyDarwin/EasyDarwin下载代码 1.编译 第一步:进入源代码目录下  cd ./Easy ...

最新文章

  1. 这味儿上头,前有文言文,又来东北话,中文编程玩得挺得劲!
  2. ssh中linux 变颜色,linux – 如何通过SSH在Vim中启用颜色?
  3. JVM-04垃圾收集Garbage Collection(上)【垃圾对象的判定】
  4. python中numpy.ndarray与list的区别?以及用matplotlab.pyplot绘图时的注意事项。
  5. linux 神的编辑器,编辑器之神-vim的使用,编辑器神-vim
  6. Java并发编程实战~ReadWriteLock~
  7. ELK下es的分词器analyzer
  8. 几岁孩子可以学python_编程python适合多大孩子学
  9. linux全局启动tomcat,linux下启动tomcat服务
  10. Mac上redis下载安装与配置详细版
  11. 利用Maven构建appfuse。
  12. 扎拉赞恩 服务器 微信群,魔兽8.0剧透 回归的扎拉赞恩与沃金的骨灰
  13. ZStack-ZCCE-网络实验-VPC网络创建
  14. 注册表 关闭打印机服务器,Win7系统添加打印机无Print Spooler服务无注册表解决方法...
  15. 音乐专业如何利用计算机思维,利用信息技术培养学生音乐创造思维能力
  16. oracle db、dba和rdba
  17. 吐槽微软,远离微软!
  18. 俄被踢出SWIFT,地缘冲突推动区块链金融清算行业发展
  19. 2007年12月14日
  20. Matplotlib的子图subplot 显示多图

热门文章

  1. Shapley算法总结
  2. 计算机数据链路层教案,4.1数据链路层作用教案(计算机网络技术基础教案).doc...
  3. RK3288 Android7.1软件开发指南
  4. easycamera arm linux环境下运行时库文件找不到的解决方案
  5. 计算机科学导论第五版第二章答案,(计算机科学导论第2章答案.docx
  6. SQL学习-数据库基础知识(1)
  7. 空间解析几何 | 向量、数量积、向量积、混合积、距离公式
  8. 空间解析几何之向量运算
  9. linux校验密码错误,linux 命令 如何做密码校验
  10. 简述SSM框架与SSH框架