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. Hibernate中"二级缓存"配置

    实体类 : package cn.happy.entity; public class Emp { private Integer empNo; private String empName; pub ...

  2. nyoj最少乘法次数——快速幂思想

    最少乘法次数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 给你一个非零整数,让你求这个数的n次方,每次相乘的结果可以在后面使用,求至少需要多少次乘.如24:2*2 ...

  3. 字符串方法之-indexOf、lastIndexOf、等等一些方法

    1.indexOf():方法可返回某个指定的字符串值在字符串中首次出现的位置(从左往右找). 语法:stringObject.indexOf(searchvalue,fromindex) <sc ...

  4. 【Python】测算代码运行时间

    整理自这里和这里 timeit模块 timeit模块定义了接受两个参数的 Timer 类.两个参数都是字符串. 第一个参数是你要计时的语句或者函数. 传递给 Timer 的第二个参数是为第一个参数语句 ...

  5. gitblit-部署

    什么是 Gitblit Gitblit是一个开源的用于管理,查看和提供Git仓库. 它主要设计为希望托管集中存储库的小工作组的工具. Gitblit有什么特点 Gitblit部署示例1 日常维护添加步 ...

  6. 【转】busybox分析——arp设置ARP缓存表中的mac地址

    [转]busybox分析——arp设置ARP缓存表中的mac地址 转自:http://blog.chinaunix.net/uid-26009923-id-5098083.html 1. 将arp缓存 ...

  7. 【WebGL】3. 相机

    相机的种类:WebGL中的相机有两种:正投影相机和透视相机 1. 正投影相机OrthographicCamera:类似于工程图纸中的视角,忽略远近距离,远近的物体比例不变,多用于科学研究,工程图纸的应 ...

  8. iOS二维码、条形码生成(可指定大小、颜色)

    一.前言: iOS7.0之后可以利用系统原生 API 生成二维码, iOS8.0之后可以生成条形码, 系统默认生成的颜色是黑色. 在这里, 利用以下方法可以生成指定大小.指定颜色的二维码和条形码, 还 ...

  9. linkbutton组件

    可独立存在的组件. inkbutton 按钮组件 通过$.fn.linkbutton.defaults重写默认的defaults链接按钮(linkbutton)用于创建一个超链接按钮.它是一个正常的& ...

  10. Windows下安装tomcat

    一.Tomcat下载与安装: 1.直接到官网下载Tomcat安装程序包:http://tomcat.apache.org/ 2.下载下来后是个压缩包,如:apache-tomcat-8.0.26,解压 ...