Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(8):wifi与蓝牙
2015-02-22 20:17
489 查看
wifi与蓝牙放在一起,因为这两者的芯片供应商有2种:
高通(qcom)或博通(brcm)
而且都是成对一起使用某个厂商的芯片,不会出现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这个程序
在本例里,必须从官方rom里提取wlan.ko放到/system/lib/modules/wlan.ko
然后参考官方卡刷包的刷机脚本updater-script
在device/pantech/a870/Android.mk里添加如下语句
这些语句用于创建链接
最终编译后会在updater-script里生成如下语句:
另外值得提醒的是,WCNSS_qcom_cfg.ini这个文件,aosp或其它第三方rom必须放在system\etc\wifi才会起作用,但官方ROM却有可能放在system\etc\firmware\wlan\prima里,至于需要放在哪个路径才行,请读者自行试验。
然后在build.prop还必须有wifi相关的配置项,具体请参考官方rom
例如wifi.interface=wlan0类似这种项必须有,请读者自行尝试
注意:博通蓝牙的话,可能msm-aosp对其支持较差,总之笔者没有成功适配过博通蓝牙功能-_-
这个是蓝牙默认名称,可以自己修改,比如泛泰a870可以这样改
打开adb shell并取得root权限
接下来介绍几个调试命令
未打开wifi时是unloaded
打开wifi后是ok
未打开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)
高通(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编译适配(3):寻找正确的代码版本
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(5):显示、NFC、overlay
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(1):基础知识
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(6):音频
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(11):一些图片
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(4):验证代码并编写自己的device
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(10):其它
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(9):摄像头GPS传感器
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(2):开发环境及相关的使用技巧
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(7):信号通讯
- 在Mac平台使用Docker搭建AOSP(Android源代码)编译环境
- MSM-AOSP_LED呼吸灯适配(泛泰IM-A910)
- MSM-AOSP相机适配进阶教程(以泛泰A910为例)
- Windows平台上编译安装ACE
- 在eclispe平台中不能够编译CDT源代码的问题
- Windows Embedded CE 6.0开发初体验(七)编译和调试平台
- 蓝牙休闲娱乐平台(毕业设计)第三部份
- 蓝牙的协议栈编译通过了
- Windows Embedded CE 6.0开发初体验(七)编译和调试平台
- Linux平台下编译运行wxWidgets简单窗口程序