RK3288 添加WiFi&BT模块AP6212
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的更多相关文章
- biweb添加新的模块
1.例如添加一个新闻模块,首先去纯净的项目的根目录复制出一个news文件夹到项目外 2.打开dreamweaver, 编辑 ->查找和替换 例如 新模块 叫 我的新闻,英文名叫mynews,则进 ...
- python添加新的模块
添加新的模块可以把路径放到环境变量中 或者放到site-packages文件夹下
- 给已安装的NGINX添加新的模块
给已安装的NGINX添加新的模块 2018-11-16 14:02:45 Visit 0 使用 nginx -V 查看当前nginx的信息,包括版本号和configure编译配置信息 版本号 : ...
- python基础===monkeytype可以自动添加注释的模块!
monkeytype 一个可以自动添加注释的模块! 先要下载: pip install monkeytype 以官网的sample code为例 #moudle.py def add(a, b): r ...
- 如何手动添加 WIFI 网络步骤
电脑手动添加WiFi网络步骤: 1.右键控制面板 2.进入控制面板 3.进入网络和Internet,点击设置新的连接或网络 4.点击手动连接到无线网络 5.输入网络SSID及秘钥 若需要自动连接请勾选 ...
- Android中添加自己的模块 【转】
本文转载自:http://wallage.blog.163.com/blog/static/17389624201021791333695/ 转:http://blog.csdn.net/yili_x ...
- 全网通4G工业路由器模块和串口转网口/4G/有线/WiFi/LTE模块的实现原理
随着现在信息化的高速发展,网络信息的需求量大增,在移动的4G流量的场合比如汽车上实现WiFi网络覆盖,户外wifi网络覆盖需求下,4G流量已经明显不够用,而网线到达的成本比较大,难以管控.在这市场痛点 ...
- 在jekyll模板博客中添加网易云模块
最近使用GitHub Pages + Jekyll 搭建了个人博客,作为一名重度音乐患者,博客里面可以不配图,但是不能不配音乐啊. 遂在博客里面引入了网易云模块,这里要感谢网易云的分享机制,对开发者非 ...
- WiFi无线模块学习1——HLK-M30使用
产品概述 概述: 通过该模块,传统的串口设备在不需要更改任何配置的情况下,即可通过Internet 网络传输自己的数据.为用户的串口设备提供完整快读的解决方案. 技术参数 可查询技术规格表 主要应用领 ...
随机推荐
- 【BZOJ】3389: [Usaco2004 Dec]Cleaning Shifts安排值班(贪心)
http://www.lydsy.com/JudgeOnline/problem.php?id=3389 显然左端点排序后,依次取. 要考虑下一次取的方案: 待选点为a[j].x<=a[now] ...
- Winform 导航菜单的方法
http://blog.163.com/kunkun0921@126/blog/static/169204332201171610619611/ 第一种:使用OutlookBar第三方控件 第二种:使 ...
- JS之BOM和DOM(来源、方法、内容、应用)
1.Javascript组成(此文为转载) JavaScript的实现包括以下3个部分: 1)核心(ECMAScript):描述了JS的语法和基本对象. 2)文档对象模型 (DOM):处理网页内容的方 ...
- JSON数组字典解析
遇到这样的字典数组字符串 priceRange = "[{\"id\":149075584861800,\"price\":9.9,\"nu ...
- volatile关键字解析(一)
引起线程并发问题,可以简单的总结为以下三条: 原子性问题 可见性问题 有序性问题(重排序问题) 原子性问题 什么是原子性? 原子性,即一个操作或者多个操作,要么全部执行并且执行过程中不会被任何因素打断 ...
- Django中通过定时任务触发页面静态化的方式
安装 pip install django-crontab 添加应用 INSTALLED_APPS = [ ... 'django_crontab', # 定时任务 ... ] 设置任务的定时时间 在 ...
- Linux0.11信号处理详解
之前在看操作系统信号这一章的时候,一直是云里雾里的,不知道信号到底是个啥玩意儿..比如在看<Unix环境高级编程>时,就感觉信号是个挺神奇的东西.比如看到下面这段代码: #include& ...
- Git远程操作详解(转)
转自:http://www.ruanyifeng.com/blog/2014/06/git_remote.html Git远程操作详解 Git是目前最流行的版本管理系统,学会Git几乎成了开发者的 ...
- JDBC的步骤
使用jdbc步骤 a.导入数据库厂商提供的驱动程序(导入jar包) b.加载驱动程序 Class.forName("驱动程序类") c.获得连接 Connection conn=D ...
- 解决visual studio2017没有系统类和方法注释的问题
好几次碰到这种情况了,每次都得稍微查一查才能解决这个问题,相信也有不少人遇到这个问题,在对方法还不是很熟练的时候,将鼠标放置到方法上去,就会有信息提示是一件非常方便的事情,本文的解决方法同样适用于只显 ...