CPU:RK3288

系统:Android 5.1

注:系统中自带的模块没有AP6212,相近的只有AP6210,设置为AP6210,直接添加固件也可以正常使用。

此文是手动添加AP6212的例程。

1、在设备树中修改 wifi 芯片为 ap6212,

kernel/arch/arm/boot/dts/rk3288-tb_8846.dts

diff --git a/kernel/arch/arm/boot/dts/rk3288-tb_8846.dts b/kernel/arch/arm/boot/dts/rk3288-tb_8846.dts
index 6a65163..aa5480d
--- a/kernel/arch/arm/boot/dts/rk3288-tb_8846.dts
+++ b/kernel/arch/arm/boot/dts/rk3288-tb_8846.dts
@@ -, +, @@
* rtl8188eu, rtl8723bs, rtl8723bu
* esp8089
*/
- wifi_chip_type = "ap6330";
+ wifi_chip_type = "ap6212"; sdio_vref = <>; //1800mv or 3300mv

2、在 Kconfig 文件中增加 AP6212 选项。

/kernel/drivers/net/wireless/Kconfig

diff --git a/kernel/drivers/net/wireless/Kconfig b/kernel/drivers/net/wireless/Kconfig
index 544aa86..3e1026d
--- a/kernel/drivers/net/wireless/Kconfig
+++ b/kernel/drivers/net/wireless/Kconfig
@@ -, +, @@ choice
config AP6210
bool "AP6210"
depends on RKWIFI
+
+ config AP6212
+ bool "AP6212"
+ depends on RKWIFI config AP6234
bool "AP6234"

3、在配置文件 rockchip_defconfig 中屏蔽旧 wifi 芯片,增加新的 wifi 芯片

kernel/arch/arm/configs/rockchip_defconfig

diff --git a/kernel/arch/arm/configs/rockchip_defconfig b/kernel/arch/arm/configs/rockchip_defconfig
index e7c697a..5199ec0
--- a/kernel/arch/arm/configs/rockchip_defconfig
+++ b/kernel/arch/arm/configs/rockchip_defconfig
@@ -, +, @@ CONFIG_USB_SIERRA_NET=y
CONFIG_RTL8188EU=y
CONFIG_ESP8089=y
CONFIG_RKWIFI=y
-CONFIG_AP6335=y
+# CONFIG_AP6335 is not set
+CONFIG_AP6212=y
# CONFIG_INPUT_MOUSEDEV is not set
CONFIG_INPUT_EVDEV=y
CONFIG_INPUT_KEYRESET=y

4、此时串口打印中会出现打开文件 fw_bcm43438a1.bin 失败,需要更新 wifi 模块固件。

[   18.686420] dhdsdio_download_code_file: Open firmware file failed /system/etc/firmware/fw_bcm43438a1.bin
[ 18.686430] _dhdsdio_download_firmware: dongle image file download failed

WiFI 固件路径:/external/wlan_loader/firmware

将模块供应商提供的固件文件拷贝到此目录下,然后编译烧录。

external/wlan_loader/firmware/fw_bcm43438a1.bin
external/wlan_loader/firmware/fw_bcm43438a1_apsta.bin
external/wlan_loader/firmware/fw_bcm43438a1_p2p.bin
external/wlan_loader/firmware/nvram_ap6212.txt

编译后,系统会将模块固件拷贝到 out/target/product/rk3288/system/etc//firmware/ 目录下

如果只是调试,可以通过 adb 将固件 push 到 /system/etc//firmware/ 目录下,然后重启。

kernel/drivers/net/wireless/rockchip_wlan/rkwifi/rk_wifi_config.c

wifi 驱动路径:kernel/net/rfkill/rfkill-wlan.c

如果器件升级,比如器件为AP6212A,供应商给的文件问 nvram_ap6212a.txt,则需要修改下面文件。(直接用以前的 nvram_ap6212.txt 也可以用,但文件不一样,不清楚)

路径:\kernel\drivers\net\wireless\rockchip_wlan\rkwifi\bcmdhd\dhd_config.c

diff --git a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_config.c b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_config.c
index 39641e1..91d7925
--- a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_config.c
+++ b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_config.c
@@ -, +, @@ dhd_conf_set_fw_name_by_chip(dhd_pub_t *dhd, char *fw_path, char *nv_path)
strcpy(&fw_path[i+], bcm43438a0_fw_name[fw_type]);
else if (chiprev == BCM43430A1_CHIP_REV)
strcpy(&fw_path[i+], bcm43438a1_fw_name[fw_type]);
- strcpy(&nv_path[j+], "nvram_ap6212.txt");
+ strcpy(&nv_path[j+], "nvram_ap6212a.txt");break;
case BCM43340_CHIP_ID:
if (chiprev == BCM43340B0_CHIP_REV)

5、BT 驱动中增添代码,支持 AP6212

BT 驱动路径:kernel/net/rfkill/rfkill-bt.c

diff --git a/kernel/net/rfkill/rfkill-bt.c b/kernel/net/rfkill/rfkill-bt.c
index a1a156c..
--- a/kernel/net/rfkill/rfkill-bt.c
+++ b/kernel/net/rfkill/rfkill-bt.c
@@ -, +, @@ static const char bt_name[] =
#else
"ap6210_24M"
#endif
+#elif defined(CONFIG_AP6212)
+ "ap6212"
#elif defined(CONFIG_AP6330)
"ap6330"
#elif defined(CONFIG_AP6476)
@@ -, +, @@ static int rfkill_rk_set_power(void *data, bool blocked)
struct rfkill_rk_data *rfkill = data;
struct rfkill_rk_gpio *poweron = &rfkill->pdata->poweron_gpio;
struct rfkill_rk_gpio *reset = &rfkill->pdata->reset_gpio;
-#if defined(CONFIG_AP6210) || defined(CONFIG_AP6335)
+#if defined(CONFIG_AP6210) || defined(CONFIG_AP6212) || defined(CONFIG_AP6335)
struct rfkill_rk_gpio* rts = &rfkill->pdata->rts_gpio;
struct pinctrl *pinctrl = rfkill->pdata->pinctrl;
#endif
@@ -, +, @@ static int rfkill_rk_set_power(void *data, bool blocked)
msleep();
gpio_direction_output(reset->io, reset->enable);
}
-#if defined(CONFIG_AP6210) || defined(CONFIG_AP6335)
+#if defined(CONFIG_AP6210) || defined(CONFIG_AP6212) || defined(CONFIG_AP6335)
if (pinctrl != NULL && gpio_is_valid(rts->io))
{
pinctrl_select_state(pinctrl, rts->gpio_state);

到此 AP6212 就可以正常使用了,但是不知道供应商提供的 BT 固件应该拷贝到哪里。

BT 固件路径:vendor/rockchip/common/bluetooth/lib/firmware

device/common/bluetooth/libbt/src/hardware.c

RK3288 添加WiFi&BT模块AP6212的更多相关文章

  1. biweb添加新的模块

    1.例如添加一个新闻模块,首先去纯净的项目的根目录复制出一个news文件夹到项目外 2.打开dreamweaver, 编辑 ->查找和替换 例如 新模块 叫 我的新闻,英文名叫mynews,则进 ...

  2. python添加新的模块

    添加新的模块可以把路径放到环境变量中 或者放到site-packages文件夹下

  3. 给已安装的NGINX添加新的模块

    给已安装的NGINX添加新的模块 2018-11-16 14:02:45   Visit  0 使用 nginx -V 查看当前nginx的信息,包括版本号和configure编译配置信息 版本号 : ...

  4. python基础===monkeytype可以自动添加注释的模块!

    monkeytype 一个可以自动添加注释的模块! 先要下载: pip install monkeytype 以官网的sample code为例 #moudle.py def add(a, b): r ...

  5. 如何手动添加 WIFI 网络步骤

    电脑手动添加WiFi网络步骤: 1.右键控制面板 2.进入控制面板 3.进入网络和Internet,点击设置新的连接或网络 4.点击手动连接到无线网络 5.输入网络SSID及秘钥 若需要自动连接请勾选 ...

  6. Android中添加自己的模块 【转】

    本文转载自:http://wallage.blog.163.com/blog/static/17389624201021791333695/ 转:http://blog.csdn.net/yili_x ...

  7. 全网通4G工业路由器模块和串口转网口/4G/有线/WiFi/LTE模块的实现原理

    随着现在信息化的高速发展,网络信息的需求量大增,在移动的4G流量的场合比如汽车上实现WiFi网络覆盖,户外wifi网络覆盖需求下,4G流量已经明显不够用,而网线到达的成本比较大,难以管控.在这市场痛点 ...

  8. 在jekyll模板博客中添加网易云模块

    最近使用GitHub Pages + Jekyll 搭建了个人博客,作为一名重度音乐患者,博客里面可以不配图,但是不能不配音乐啊. 遂在博客里面引入了网易云模块,这里要感谢网易云的分享机制,对开发者非 ...

  9. WiFi无线模块学习1——HLK-M30使用

    产品概述 概述: 通过该模块,传统的串口设备在不需要更改任何配置的情况下,即可通过Internet 网络传输自己的数据.为用户的串口设备提供完整快读的解决方案. 技术参数 可查询技术规格表 主要应用领 ...

随机推荐

  1. Element-UI 实现下拉树

    组件调用 <template> <!-- 行模式 --> <el-form inline> <el-form-item label="inline ...

  2. jquery下跨域请求之代码示例

    场景描述: 在域A下异步获取B域下的接口: 实现方法: $.ajax({ url : (Q.lottery.serverTimeUrl || 'about:blank'), error : funct ...

  3. ZOJ-2972-Hurdles of 110m(线性dp)

    Hurdles of 110m Time Limit: 2 Seconds      Memory Limit: 65536 KB In the year 2008, the 29th Olympic ...

  4. AOP的Advice

    @Before 方法执行之前执行 @AfterReturning 方法正常执行完成后执行 @AfterThrowing 抛出任何异常之后执行 @After  就是相当于finally,它会将你的方法t ...

  5. C++面向对象高级编程(八)模板

    技术在于交流.沟通,转载请注明出处并保持作品的完整性. 这节课主要讲模板的使用,之前我们谈到过函数模板与类模板 (C++面向对象高级编程(四)基础篇)这里不再说明 1.成员模板 成员模板:参数为tem ...

  6. 马士兵_JAVA自学之路(为那些目标模糊的码农们)

    转载自:http://blog.csdn.net/anlidengshiwei/article/details/42264301 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. ...

  7. vue.js 源代码学习笔记 ----- instance inject

    /* @flow */ import { hasSymbol } from 'core/util/env' import { warn } from '../util/index' import { ...

  8. Git远程操作详解(转)

    转自:http://www.ruanyifeng.com/blog/2014/06/git_remote.html Git远程操作详解   Git是目前最流行的版本管理系统,学会Git几乎成了开发者的 ...

  9. 基于Vue的后台选择推荐

    引言: Vue.js目前是业界大名鼎鼎的Web解决方案,具体有点,我这里就不再赘述了,感兴趣的童鞋自行查找阅读,这里罗列一下,这几天自己研究的成果,管理后台. 管理后台 Vue Element Adm ...

  10. webpack 打包图片 能否提高加载速度

    正常加载: 打包图片: 结论:当加载资源 数量很多 时,可以提高加载速度