瑞芯微RK3128-微信Airkiss2.0配网功能调试及实现
原址
越来越多的智能硬件设备实现了简易的配网功能,微信硬件平台推出了Airkiss技术,详细的关于Airkiss的介绍可以参考微信硬件平台开发者心:微信硬件平台Airkiss
关于AirKiss的实现,基于的WiFi芯片是BroadCom AP6212,基于的CPU还是瑞芯微RK3128,Android系统。
其实很多WiFI厂商都和微信有了合作,实现了其Airkiss、AirSync等功能。比如我拿到的是正基科技(AMPAK)AP6212的
EasySetupTarget.zip,其实现了微信的Airkiss功能,同时也支持几个其它厂商的智能配网功能,具体如下:
Usage: (type setup -h)
# setup -h
-h: show help message
-d: show debug message
-k <v>: set 16-char key for all protocols
-p <v>: bitmask of protocols to enable
0x0001 - bcast
0x0002 - neeze
0x0004 - akiss
0x0010 - changhong
0x0020 - changhong
0x0040 - jd JoyLink
本文中我们只介绍Airkiss的测试过程,Airkiss的实现需要一下几个模块支持:wifi固件、服务端(EasySetupTarget)、
客户端(APP or微信公众号发送ssid和password)。
wifi固件
Airkiss服务实现模块
可以编译为可执行文件或so库,源码在jni文件夹中,可以通过Androi JNI调用。详细的说明在readme文档。
这里主要记录一下我遇到的问题,编译jni目录为可执行文件,push到开发板运行正常,可以获取到ssid和password。
但是为了更加方便操作,我是通过上层APP的JNI调用easysetup接口,开启airkiss,然后走到easy_setup_start()接口,
看日志已经进入该函数,但是在ioctrl操作时失败了,具体日志如下:
[ 01-01 12:45:27.541 7172: 7275 I/ ]Lucien:Easy setup target library v3.7.0
[ 01-01 12:45:27.541 7172: 7275 I/ ]easy setup iovar !
[ 01-01 12:45:27.541 7172: 7275 I/ ]easy setup ioctl(cmd=263) failed: 1(Operation not permitted)
[ 01-01 12:45:27.541 7172: 7275 I/ ]easy setup iovar:easy_setup_ioctl return:-1
[ 01-01 12:45:27.541 7172: 7275 I/ ] easy setup start failed: 1(Operation not permitted)
。。。。。。
/* log if not WLC_SCAN_RESULTS(51) */
if (cmd != 51) {
LOGD("easy setup ioctl(cmd=%d) failed: %d(%s)\n",
cmd, errno, strerror(errno));
}
return -1;
}
}
刚开始百思不得其解,为什么会权限失败,apk是放在/system/app中、设置platform签名凭证、以及设置shareUid,
相应的so权限及用户组也没什么问题,纠结了半天,还是怪自己对Android权限管理了解到不够清楚,刚开始怀疑是selinux权限没加,
但是又没有相应的avc日志。还尝试app中调用可执行文件,也是失败的。看了这位同仁的博客才明白(参考博客),
其实是apk的操作权限没有加够。
原来在函数dev_ioctl中,会检查CAP_NET_ADMIN权限,进入这个函数,发现检查的是进程是否在group AID_NET_ADMIN中:
- if (cap == CAP_NET_ADMIN && in_egroup_p(AID_NET_ADMIN))
- return 0;
com.mydale.iot: type=1400 audit(0.0:4): avc: denied { net_admin } for capability=12 scontext=u:r:platform_app:s0 tcontext=u:r:
platform_app:s0tclass=capability permissive=1
添加权限:
allow platform_app self:capability { net_admin };
但是编译会报错,原来在app.te中声明了net_admin在app domain是不被允许的。
neverallow { appdomain -bluetooth } self:capability *;
这里需要修改下,其它就OK了。以上只是自己理解,可能有不准确的地方,谅解。
补充;
设备获取到wifi ssid和password后,也会同时获取一个随机数,在设备联网后,要发送不少于20次udp广播到端口10000,告诉微信公众号或app端,信息全部被正确接收了。
Java端的udp广播发送代码参考如下:
- private void sendUdpBroadcast(byte[] data){
- Log.i(Tag,"start to sendUdpBroadcast");
- DatagramSocket udpSocket;
- String address = getLocalIPAddress();
- DatagramPacket dataPacket = new DatagramPacket(buffer, MAX_DATA_PACKET_LENGTH);
- InetAddress broadcastAddr;
- if (address != null) {
- Log.i(Tag,"Can not get IP address");
- }
- try {
- udpSocket = new DatagramSocket(DEFAULT_PORT);
- dataPacket.setData(data);
- dataPacket.setLength(data.length);
- dataPacket.setPort(DEFAULT_PORT);
- broadcastAddr = InetAddress.getByName("255.255.255.255");
- dataPacket.setAddress(broadcastAddr);
- for(int i=0; i<30; i++) {
- udpSocket.send(dataPacket);
- sleep(10);
- }
- udpSocket.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
瑞芯微RK3128-微信Airkiss2.0配网功能调试及实现相关推荐
- rk3128屏幕占空比参数设置_瑞芯微RK3128芯片怎么样 性能全面解读
最近,笔者听说一款搭载瑞芯微RK3128芯片方案的盒子问市了,打听了一下才知道还真有其事,这款上市的RK3128盒子叫做开博尔M1,报价229元,这个价位在如今的四核网络机顶盒市场可谓是不多见,但是这 ...
- 瑞芯微RK3128盒子刷机提示测试设备失败的解决方法:MASKROM模式
设备:MSIDIGTAL-RM701 平台:瑞芯微RK3128 工具:AndroidTool_Release_v2.33 在刷入过第三方固件后再刷机,就遇到了测试设备失败的问题: 苦苦寻找了很多方法都 ...
- 记录一次瑞芯微rk3128固件解包打包过程:以添加root权限为例
一.设备和环境 设备 MSIDIGTAL-RM701 平台 瑞芯微RK3128 环境 Windows 11 Subsystem Ubuntu 20.04.5 LTS 二.工具 在打包解包的过程中,我们 ...
- 瑞芯微RK3128芯片手册,RK3128 datasheet技术资料
1 Introduction RK3128是一款用于低端四核平板电脑和TV-Box的高性能应用处理器.特别是对于H.265 1080 p电视机箱来说,它是一个高集成度和高竞争力的Bom成本SOC.集成 ...
- 搭建瑞芯微rk3128本地android代码服务器
从供应商那里拿到的rk3128android 4.4的源码包.解压前压缩包大概5G,通过命令解压后发现只有一个隐藏的.repo 目录大小4096. 然后执行命令 repo sync -l 意思是从本地 ...
- 瑞芯微rockchip PX30触摸屏调试记录
系列文章目录 瑞芯微rockchip PX30 串口调试记录 瑞芯微rockchip PX30 显示屏调试 瑞芯微rockchip PX30触摸屏调试记录 瑞芯微rockchip PX30 QT环境搭 ...
- yolov5-5.0训练模型+瑞芯微rv1126上实现模型部署
yolov5-5.0训练模型+瑞芯微rv1126上实现模型部署 第一次接触模型训练和在开发板部署,过程曲折,从开始的一脸懵到最后模型部署成功,查阅了不少资料和学习了不少大佬的经验,在这里记录一下过 ...
- 瑞芯微RK3566 简单介绍与Android11.0 固件编译
rockchip RK3566 瑞芯微 RK3566 四核 64 位Cortex-A55 处 理 器 , 主 频 最 高1.8GHz,效能有大幅提升:采用22nm先进工艺,具有低功耗高性能的特点. 瑞 ...
- 瑞芯微RK PX30中文详解(带开源资料)简介
瑞芯微RK PX30中文详解(带开源资料)简介 非常感谢您选择九鼎创展PX30开发平台,本文档讲述PX30开发平台的硬件资源,电路原理以及支持的接口等. PX30开发板是基于瑞芯微PX30的一款高端开 ...
最新文章
- 物联网基础知识_联网| 基础知识能力问答 套装1
- 六逻辑层次 职业规划案例_我如何在六个月内改变职业并找到了一名开发人员...
- Vue2.0 + ElementUI 手写权限管理系统后台模板(三)——页面搭建
- 停车场管理系统 java_使用java编写一个停车场管理系统
- vue常用的几个框架
- python-GUI图形界面之Tkinter(常用控件、事件对象、布局管理)
- centos7 分辨率修改_centos系统修改屏幕分辨率问题
- Python微信公众号
- [ISP]AT89S52的ISP功能简介
- 网络最大流和最小费用流
- Linux SWAP 交换分区配置说明
- python怎样安装whl文件
- 各厂家linux面板对比
- 3ds max 结合透视匹配重构高变形的场景
- ubuntu 防火墙端口设置
- 行人检测(Pedestrian Detection)资源与更新
- MFC Tab 控件使用
- Ultimaker简介
- linux find文件,并复制,通过find命令寻找文件并拷贝到一个指定目录方法详解
- 看不懂没关系, 知道厉害就行了! 中科大俩教授11年解了两道数学难题
热门文章
- ZeroMQ接口函数之 :zmq_ipc – ZMQ本地进程间通信传输协议
- CentOS 6.5 Zabbix监.控系统功能及基本使用
- JavaFx系列(二) Thread顯示進度窗的對話框
- 17.和优化相关的hint
- [转载]遗传算法介绍
- jsoup解析百度音乐
- goldengate mysql双向_Oracle使用goldengate分别向Oracle和mysql双路的单向复制
- oracle和mysql数据实时同步_FileYee文件实时同步备份软件,再不怕数据丢失
- ip登陆异常 php,PHP实例:PHP制作登录异常ip检测功能的实例代码
- android http 图片上传,Android okHttp上传图片