上一期介绍了一下tinkerboard2 Android11下面增加触摸和旋转的方式(https://blog.csdn.net/chenchen00000000/article/details/125699675 ),这一期来介绍一下如何支持4G模组拨号上网功能。4G模组拨号上网功能同样是Android设备上面的标配功能。

硬件准备

深圳风火轮作为华硕tinkerboard官方合作伙伴,推出了一款tinkerboard2的扩展板,上面有一个4G模组的MINI PCIE插槽,还有CH9344 USB转四串口芯片,这款扩展板如下图所示。

扩展板上有两个USB口,一个是连接到MINI PCIE插槽上的,另外一个是接CH9344的。

除了扩展板之外,还需要一个MINI PCIE封装的4G通讯模组,这个可选的有很多,笔者这里使用的是移远EC20模组。其他的模组调试方式是类似的。

接线比较简单,将EC20模组安装天线,然后装到扩展板上,装上SIM卡

然后用一根USB线连接扩展板和tinkerboard2即可。

EC20模组调试

官方默认的固件没有对4G模组支持,因此必须在SDK基础上添加功能并编译。SDK可以从华硕AIOT中国论坛下载到,比从GIT上直接拉取速度快,地址是

www.tinkerboard.cn/thread-202-1-1.html

Android里面对modem的支持,是通过RIL(Radio Interface Layer)服务来实现的,其框架如下

RIL属于hardware的一部分,它分为两个部分,对上,它提供了一系列接口,比如开关移动网络,拨号,获取IP地址,设置APN,获取ICCID,获取IMEI等,这一部分属于Android的标准接口。对下,它会调用各个厂家的libreferece-ril.so动态库的接口,这些接口是各个厂家自行实现的。因此各个厂家的libreferece-ril.so不一样,这个动态库一般由modem制造商提供。

然后更底层,就是各个厂家的libreferece-ril.so要和Linux的驱动进行交互,这些驱动包含在内核中,源码由modem制造商提供。这一部分不是Android的标准。

具体到EC20模组,需要修改内核源码和Android系统层的配置。其中内核驱动部分,EC20通过USB和RK3399连接。EC20端作为usb device,RK3399端作为USB host。EC20的USB是一个复合设备,interface 0-3采用USB虚拟串口驱动,interface 4用于网络数据包传输

interface 0-3需要启用options驱动,源码位于kernel/drivers/usb/serial,在RK的SDK里面,已经默认支持EC20模组,不需要修改,只需要确保内核config的CONFIG_USB_SERIAL_OPTION和CONFIG_USB_SERIAL_WWAN选项打开即可。

然后interface 4需要采用QMI_WWAN驱动或者GobiNet驱动,二者只能选择其一。这里以 QMI_WWAN驱动为例介绍。移远通信会提供QMI_WWAN源码,文件名为qmi_wwan_q.c,将这个源码放到kernel/drivers/net/usb里面,然后修改Makefile

这个qmi_wwan.c是内核原本就有的qmi_wwan驱动。内核自带的qmi_wwan驱动和EC20并不能完全匹配,会出现能拨号成功,但是上不了网的问题。因此这里qmi_wwan_q.o在Makefile中必须放在qmi_wwan.o前面,这样编译的时候,qmi_wwan_q.o就会靠前,当识别到EC20模组的interface 4设备时,就会先于qmi_wwan与设备匹配。然后内核打开CONFIG_USB_NET_QMI_WWAN的选项。

内核部分配置好option驱动和qmi_wwan驱动后,就可以编译内核,然后将得到的boot.img烧录到板上。将装有EC20模组的扩展板与tinkerboard2连接,可以看到如下信息,说明内核部分配置完成。注意红框部分必须是qmi_wwan_q。

内核驱动适配之后,还需要对Android系统层进行修改。RK在其SDK里面已经带了一个适配4G模组的demo,不过适配的是他们自家的RM310模组,这里可以直接在其基础上进行修改。

找到对应product文件夹(如果如果编译的时候选择的板型是WW_Tinker_Board_2,则是asus/tinker_board_2/Tinker_Board_2,自定义的product类似)下面的BoardConfig.mk,将

BOARD_HAS_RK_4G_MODEM := false

改为

BOARD_HAS_RK_4G_MODEM :=true

这个设置在device/rockchip/common/device.mk中生效

然后把移远提供的64位ril库libreference-ril.so放到device/rockchip/common/4g_modem/lib64/ 下面,重命名为libquectel-ril.so,并且在

PRODUCT_PROPERTY_OVERRIDES += \

vendor.rild.libpath=/vendor/lib64/librk-ril.so

修改为

PRODUCT_PROPERTY_OVERRIDES += \

vendor.rild.libpath=/vendor/lib64/libquectel-ril.so

在PRODUCT_COPY_FILE下面加入

$(LOCAL_PATH)/4g_modem/lib64/libquectel-ril.so:$(TARGET_COPY_OUT_VENDOR)/lib64/libquectel-ril.so

如下图

修改vendor.rild.libpath 的目的是Android 11的rild会从此property获取ril库路径,其代码如下图所示

这段代码的意思是,rild启动时,优先从-l的参数取ril库的路径,如果取不到,就从vendor.rild.libpath取。取到这个ril库的路径之后,通过dlopen打开,并通过dlsym调用里面的函数。

此外,移远的ril库使用qmi方式拨号时,需要有/dev/cdc-wdm0节点。 Android11加强了权限管理,部分设备节点不会被自动创建,需要修改system/core/ init/devices.cpp。

另外还要给这个设备节点权限,在device/rockchip/common/ueventd.rockchip.rc增加一行

/dev/cdc-wdm0              0666   radio               radio

上述修改完成之后,执行make -j8,编译出super.img,烧录到板上。开机之后,使用getprop | grep gsm可以看到modem和sim卡的相关信息

如果这里读取不到baseband的信息,说明没有识别到EC20模组,需要检查EC20是不是没插好。如果读取不到运营商信息,说明是卡没插好。上述信息正常后,使用ifconfig命令,可以看到wwan0网卡状态

这里如果有网卡而没有ip地址,那有可能是卡没流量了。

在系统界面上,选择设置 - 关于平板电脑 - SIM卡信息,可以看到信号强度等具体信息

此时可以通过移动网络访问网站。如下图所示,右上角有个4G图标,意思是此时使用的是4G网络(即LTE),如果当地只有3G或者2G网络,则不会有这个4G标志。将移动数据关闭后,这个4G标志也会消失。

整机外接扩展板和4G模组上网的整体效果如下图

总结

本文以深圳风火轮科技出品的tinker扩展板+EC20模组为例,介绍了如何在tinkerboard2s的Android 11系统上实现移动网络连接。依靠移动网络,可以将tinkerboard2s应用到车载等领域。略有遗憾的是,目前这款扩展板还无法直接叠加安装到tinkerboard2s上面,希望风火轮后续能够设计一款外壳,将tinkerboard2s+触摸屏+扩展板装在一起。

tinkerboard2 Android11系列-4G模组调试相关推荐

  1. 4G:SIM7600CE-CNSE 4G模组调试

    一.内核配置 打开内核以下配置 CONFIG_USB_SERIAL=y CONFIG_USB_SERIAL_WWAN=y CONFIG_USB_SERIAL_OPTION=y CONFIG_USBNE ...

  2. 一个NB-IoT/4G模组的AT拨号联网流程

      在各类物联网应用中,NB或者4G网络是常见的通信介质,其最大的优势是可以借助现有的移动基站,无需额外建立基站,所以广泛应用在三表(水表.电能表.天然气表)无线抄表中.通常情况下,对于这类小流量的数 ...

  3. AliOS Things基于USB通道外接4G模组的方案

    1.概述 本文介绍AliOS Things关于USB外接广域网芯片连接入云的方案.物联网设备联网方案,可分为OpenCPU的方式与外接通信芯片的方式.OpenCPU的应用层与网络层运行在同一芯片上,该 ...

  4. DTU网关开发方案——芯讯通4G模组C二次开发

    前言 物联网现在越来越热,去年给客户定制了一款低成本DTU网关,采用MCU(STM32)+4G模组的方案,支持协议定制.远程配置.断缓续传,成本不到同行一半,价钱便宜量又足 o( ̄︶ ̄)o 同时有些应 ...

  5. 如何使用 ESP-PROG 板的 Program 接口为 ESP32-S3-WROOM-1 系列的模组烧录固件?

    ESP-PROG 是一款乐鑫推出的开发调试工具,具有自动下载固件.串口通信.JTAG 在线调试等功能.具体使用说明参见:ESP-Prog 下载与调试板介绍 . ESP-Prog 采用 FTDI 公司的 ...

  6. 安信可PB系列蓝牙模组 APP Ble Mesh组网教程

    文章目录 一.前言 二.硬件准备 三.软件准备 四.AT指令集 五.APP组网示例 六.数据通信 一.前言 本文以PB-02开发板为例,介绍PB系列蓝牙模组通过安卓"PHY Mesh&quo ...

  7. 安信可分享 | 分享一个基于airkiss协议的配网小程序,实现小程序一键配网安信可ESP32C3\ESP8266\ESP32\ESP32S2系列的模组。(附带源码)

    文章目录 一.关于 WeChatAirkiss 1.1 应用场景 二.airkiss 简介 三.开始使用 四.API说明 五.FAQ 六.开源微信物联网控制一览表 联系我们 一.关于 WeChatAi ...

  8. OneNET Studio云平台STM32物联网开发(2)- STM32+Air724UG(4G模组)数据采集显示上报

    实现效果视频 STM32 Air724UG 4G OneNET数据传输 本章教学视频(1) OneNET StudioSTM32+Air724UG -1 本章教学视频(2) OneNET Studio ...

  9. 实测|飞凌嵌入式OK3588-C开发板4G模组的使用与测试

    本篇试用报告由发烧友  ouxiaolong提供,感谢ouxiaolong的支持.飞凌嵌入式会持续开展开发板有奖试用活动,更有京东E卡等着你!欢迎大家的持续关注. 飞凌嵌入式OK3588-C开发板是一 ...

最新文章

  1. PHP实现将任意尺寸的图片裁剪后等比缩放到任意尺寸的透明图片上,并实现图片翻转...
  2. 机器学习中的数学-线性判别分析(LDA), 主成分分析(PCA)
  3. ZLComboBox自定义控件开发详解
  4. mysql服务启动出错:mysql: unrecognized service
  5. 近世代数--群同构--第一同构定理
  6. mysql5.7配置_MySQL5.7详细配置教程
  7. when will ifm open?
  8. 【深度3】相机选择-精度和曝光需求计算 - 输入:1 被测试物体的最小体积 2 被测物体的移动相对速度
  9. Vue系列之搭建环境
  10. TensorFlow神经网络(九)VGG net论文阅读笔记
  11. cpu高 rust腐蚀_电脑频繁死机,原来是需要涂抹电脑cpu散热硅胶
  12. 关键词工具(seo常用关键词工具有哪些?)
  13. Android 消息通知滚动
  14. 软件开发测试男友花束,观察这四束花束凭直觉选一束花?测一测别人都在羡慕你的什么?...
  15. 涨知识--地球自转会影响飞机飞行时间吗?
  16. PPT基础(一)怎么把图片设置为背景
  17. idea 流程图出现 Condition \n
  18. 2023测绘资质申请条件
  19. TiFlink: 使用 TiKV 和 Flink 实现强一致的物化视图
  20. 锚点链接点击锚点后不改变url的方法

热门文章

  1. mlr3实战 | 基于临床参数的肝病患者分类(7种常用的机器学习方法)
  2. 什么是事务?事务的基本操作、事务的隔离性问题、事务的ACID特性
  3. 【高等数学】张量积、楔积、叉积和外积的区别
  4. 华为云函数调用百度ai sdk实现语音合成
  5. eCPRI payload 解析
  6. 使用css使div居中显示
  7. PHY(Physical Layer,PHY)通俗理解
  8. html5游戏论文参考文献,html5 消息推送参考文献
  9. 移动互联网商业发展前景广阔-CNNIC 高级分析师 喻重光
  10. 最新kav激活授权文件(附使用方法)