rk3568 LTE(N720)
rk3566/rk3568 Android11 移植4G n720
Android11 使用 wwan 驱动正常移植 n720, 本篇为您简述 n720 移植过程。
提示:此文章为 rk3568 移植 n720,下一篇 rk3568 移植 m750。
文章目录
- rk3566/rk3568 Android11 移植4G n720
- 准备
- 1. kernel n720 usb 驱动
- 1.1 内核驱动
- 1.2 增加上电时序控制
- 1.3 内核驱动验证
- 1.4 添加权限
- 2 开启 rild 服务
- 2.1 平台信息修改
- 2.2 更替 ppp拨号工具
- 2.3 网络配置
- Tips
- 结语
准备
- 下载 rild 驱动
1. kernel n720 usb 驱动
1.1 内核驱动
内核默认支持 n720,内核仅需要处理是上电时序。
1.2 增加上电时序控制
查看原理图中 n720 模组上电时序控制。此模组与 EC20 兼容,如果已移植ec20,请忽略此步骤 — dts 配置上电次数
n720 disable 由gpio1_B5控制,设备树中使用 power 控制信号;
n720 reset 由于gpio1_A2控制,设备树中使用 reset 控制信号;
n720 供电由于gpio3_A6控制,设备树中使用 vbat 控制信号;
# 新增设备描述节点要 在根节点上添加/ {+ rk_modem: rk-modem {+ compatible="4g-modem-platdata";
+ pinctrl-names = "default";
+ pinctrl-0 = <<e_vbat <e_power_en <e_reset>;
+ 4G,vbat-gpio = <&gpio3 RK_PA6 GPIO_ACTIVE_HIGH>; #n720 vbat控制pin
+ 4G,power-gpio = <&gpio1 RK_PB5 GPIO_ACTIVE_HIGH>; #n720 power控制 pin
+ 4G,reset-gpio = <&gpio1 RK_PA2 GPIO_ACTIVE_LOW>; #n720 复位pin
+ };# 增加pinctrl 设定
&pinctrl {+ rk-modem {+ lte_vbat: lte-vbat {+ rockchip,pins = <3 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+
+ lte_power_en: lte-power-en {+ rockchip,pins = <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+
+ lte_reset: lte-reset {+ rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };
+
1.3 内核驱动验证
编译内核完成后,刷机验证可正常识别到 n720, 并生成 /dev/ttyUSBx节点,则证明驱动移植完成。如果所有组 所有者不是radio,则需要添加权限。如果未生成 /dev/cdc-wdm0 节点,请继续 system/core 移植驱动。
$ ls /dev/ttyUSB[0-3] -lh
crw-rw---- 1 radio radio 188, 0 2022-06-22 19:44 /dev/ttyUSB0
crw-rw---- 1 radio radio 188, 1 2022-06-22 19:44 /dev/ttyUSB1
crw-rw---- 1 radio radio 188, 2 2022-06-22 20:05 /dev/ttyUSB2
crw-rw---- 1 radio radio 188, 3 2022-06-22 19:44 /dev/ttyUSB3
$ ls /dev/cdc-wdm* -lh
crw-rw---- 1 radio radio 180, 176 2022-06-23 10:26 /dev/cdc-wdm0
system/core/init/devices.cpp
--- a/init/devices.cpp
+++ b/init/devices.cpp
@@ -492,6 +492,11 @@ void DeviceHandler::HandleUevent(const Uevent& uevent) {int device_id = uevent.minor % 128 + 1;devpath = StringPrintf("/dev/bus/usb/%03d/%03d", bus_id, device_id);}
+#if 1 //add by quectel for mknod /dev/cdc-wdm0
+ } else if (uevent.subsystem == "usbmisc" && !uevent.device_name.empty()) {+ devpath = "/dev/" + uevent.device_name;
+#endif
+} else if (StartsWith(uevent.subsystem, "usb")) {
1.4 添加权限
rk3566 rk3568 在 device/rockchip/common/ueventd.rockchip.rc 怎加权限
+/dev/ttyUSB* 0660 radio radio
/dev/ttyACM* 0660 radio radio
2 开启 rild 服务
n720 相关库以及拨号脚本需要找模组供应商索要包含 rild 拨号文件和相关依赖库的资料;部分厂家资料比较齐全,已经写好 seLinux 文件,可按图索骥一并移植。
特别注意:模组厂家的rild服务因权限不同导致 rild服务缺少 seLinux权限无法正常启动,建议先关闭 seLinux 调试 ;待上网成功后再处理 seLinux 权限
关闭 seLinux 方法 请参照rk3568 LTE(EC20 ) 移植文档 2.1章节。
2.1 平台信息修改
k3568 为 64bit CPU, 选用下载 rild 驱动包中 libquectel-ril\arm64-v8a\ 中 libreference-ril.so 拷贝到 device/rockchip/common/4g_modem/lib64/ 并重命名为 libreference-ril.n720.so;
增加 n720 拨号库拷贝命令和依赖库引用信息 device/rockchip/common/device.mk
diff --git a/device.mk b/device.mk
index 406f19b..c1b5dd3 100755
--- a/device.mk
+++ b/device.mk
@@ -274,11 +274,13 @@ PRODUCT_PROPERTY_OVERRIDES += \ifeq ($(strip $(TARGET_ARCH)), arm64)PRODUCT_PROPERTY_OVERRIDES += \
- vendor.rild.libpath=/vendor/lib64/librk-ril.so
+ vendor.rild.libargs=-d /dev/ttyUSB2 \
+ vendor.rild.libpath=/vendor/lib64/hw/libreference-ril.n720.soPRODUCT_COPY_FILES += \$(LOCAL_PATH)/4g_modem/bin64/dhcpcd:$(TARGET_COPY_OUT_VENDOR)/bin/dhcpcd \
- $(LOCAL_PATH)/4g_modem/lib64/librk-ril.so:$(TARGET_COPY_OUT_VENDOR)/lib64/librk-ril.so
+ $(LOCAL_PATH)/4g_modem/lib64/librk-ril.so:$(TARGET_COPY_OUT_VENDOR)/lib64/librk-ril.so \
+ $(LOCAL_PATH)/4g_modem/lib64/libreference-ril.n720.so:$(TARGET_COPY_OUT_VENDOR)/lib64/hw/libreference-ril.n720.soelse
maniest 增加 HAL 属性信息 与 ec20 移植相同,如果未移植请参照 rk3568 LTE(EC20)
device/rockchip/common/4g_modem/manifest.xml
diff --git a/4g_modem/manifest.xml b/4g_modem/manifest.xml
index 9a19b3c..8c93c6b 100644
--- a/4g_modem/manifest.xml
+++ b/4g_modem/manifest.xml
@@ -2,6 +2,11 @@<hal format="hidl"><name>android.hardware.radio</name><transport>hwbinder</transport>
+ <version>1.0</version>
+ <interface>
+ <name>IRadio</name>
+ <instance>slot1</instance>
+ </interface><fqname>@1.1::IRadio/slot1</fqname><fqname>@1.1::IRadio/slot2</fqname><fqname>@1.2::ISap/slot1</fqname>
开启4G 模组相关平台宏定义
device/rockchip/rk356x/rk3566_r/BoardConfig.mk
BoardConfig.mk:18:BOARD_HAS_RK_4G_MODEM := true
2.2 更替 ppp拨号工具
rk3568 工具保存在 vendor/rockchip/common/phone 目录中为防止拨号工具不兼容单独增加目录存储 n720 的相关工具。
rk3568 为 64bit CPU, 选用下载 rild 驱动包中 libquectel-ril\arm64-v8a\ 中 ip-up, ip-down, chat 文件,放到 vendor/rockchip/common/phone/etc/ppp64/n720 (n720 须手动创建)。
diff --git a/phone/phone.mk b/phone/phone.mk
index 285d016c..010f87b3 100755
--- a/phone/phone.mk
+++ b/phone/phone.mk
@@ -6,13 +6,13 @@ CUR_PATH := vendor/rockchip/common#########################################################ifeq ($(strip $(TARGET_ARCH)), arm64)PRODUCT_COPY_FILES += \
- $(CUR_PATH)/phone/etc/ppp64/ip-down:system/etc/ppp/ip-down \
- $(CUR_PATH)/phone/etc/ppp64/ip-up:system/etc/ppp/ip-up \
+ $(CUR_PATH)/phone/etc/ppp64/n720/ip-down:system/etc/ppp/ip-down \
+ $(CUR_PATH)/phone/etc/ppp64/n720/ip-up:system/etc/ppp/ip-up \$(CUR_PATH)/phone/etc/ppp/call-pppd:system/etc/ppp/call-pppd \$(CUR_PATH)/phone/etc/operator_table:system/etc/operator_table \
- $(CUR_PATH)/phone/etc/ppp64/ip-down:system/bin/ip-down \
- $(CUR_PATH)/phone/etc/ppp64/ip-up:system/bin/ip-up \
- $(CUR_PATH)/phone/etc/ppp64/chat:system/bin/chat
+ $(CUR_PATH)/phone/etc/ppp64/n720/ip-down:system/bin/ip-down \
+ $(CUR_PATH)/phone/etc/ppp64/n720/ip-up:system/bin/ip-up \
+ $(CUR_PATH)/phone/etc/ppp64/n720/chat:system/bin/chatelsePRODUCT_COPY_FILES += \$(CUR_PATH)/phone/etc/ppp/ip-down:system/etc/ppp/ip-down \
2.3 网络配置
增加 4G modem 网络配置,否则看不到 SIM 卡图标和信号指示。可参照 rk3568 LTE (EC20) 2.4 小节 配置如下路径文件
device/rockchip/rk356x/overlay/frameworks/base/core/res/res/values/config.xml
Tips
查看 LTE 模组运行状态方法。如果可以看到基带版本和 SIM卡类型,证明驱动和 libreference 库正常加载。
adb root;adb shell
getprop gsm.operator.alpha
[gsm.operator.alpha]: [CHN-UNICOM]
如果看到 rild 服务正常运行但是无法联网,请从以下几点排查问题:
a) 4G 模组是否安装天线,天线是否松动
b) 安装的 SIM 是否欠费
c) APNS.xml 拨号配置文件是否正常
d) 当前环境是否有强信号屏蔽,对比手机信号即可排查问题
getprop init.svc.vendor.ril-daemon
[init.svc.vendor.ril-daemon]: [running]
如果 rild 服务显示 stopped;可能因 selinux 权限问题,手动关闭 selinux 再重启 rild
可正常联网;原因定位到 缺少 selinux 权限,后面文章会讲 selinux 权限配置
。
stop vendor.ril-daemon #关闭 rild
start vendor.ril-daemon #开启 rild
结语
从前本无路,走的人多了就变成了路。
rk3568 LTE(N720)相关推荐
- rk3568 LTE(EC20--GPS)
rk3566/rk3568 Android11 4G模组 GPS 功能 上一篇 Android11 LTE 的seLinux 匹配后 可实现正常模式下的数据上网和通话功能:部分模组集成 GPS 或 G ...
- rk3568 LTE(M750)
rk3566/rk3568 Android11 移植4G m750 Android11 使用 wwan 驱动正常移植 m750 , 本篇为您简述 m750 移植过程. 提示:此文章为 rk3568 移 ...
- rk3568 移植 GPS/GNSS 模组
rk3568 移植 GNSS 模组 (SIM68D UM220) 部分LTE模组(EC20 M750) 仅有 GPS ,但场景需求 GNSS 定位功能,此时需要额外增加 GNSS的模组功.单GPS/G ...
- R5S RK3568运行安卓12搭配即插即用免驱免拨号的4G LTE模组测速演示
关键词:R5S RK3568 安卓12 即插即用 免驱免拨号 4G LTE 概述:R5S基于RK3568,作为一款四核2GHz Cortex-A55处理器,配上2-4GB的内存,已经可以流 ...
- Banana Pi BPI-R2 Pro 开源路由器采用瑞芯微Rockchip RK3568芯片方案设计
Banana Pi BPI-R2 Pro 开源路由器采用Rockchip RK3568芯片方案设计, 板载2GB LPDDR4内存和16GB eMMC存储,支持2个USB 3.0接口,5千兆网口.M. ...
- rk3568 Android 适配红外遥控器
rk3568 适配红外遥控器 生活中充满了各种波长的电磁波,所谓的可见(色)光就是人眼可见的电磁波谱,其波长为 380~770nm,为了避免遥控器发射的光造成人眼不适及减少一般人造光源干扰,故选用人眼 ...
- LTE QCI分类 QoS
http://blog.163.com/gzf_lte/blog/static/20840310620130140057204/ http://blog.163.com/gzf_lte/blog/st ...
- LTE: MIB和SIB,小区选择和重选规则
LTE 中MIB/SIB内容可以参考:https://blog.csdn.net/wowricky/article/details/51348613 MIB/SIB的详细内容参考下面两张图 MIB,S ...
- LTE - PUCCH Format2
LTE中有很多课题(尤其是物理层),如果不仔细阅读规范中给出的每个参数和方程,是无法解释清楚的.物理资源分配就是其中之一. PUCCH格式2/2a/2b的物理资源分配由以下过程确定.看到这些公式千万不 ...
- LTE PUCCH Format1
PUCCH 格式 1/1a/1b 是向eNodeB传递1或2或4位数据. 这个过程相当复杂,我们用如下3个章节来描述: PUCCH Format 1,1a,1b 所在RB位置 PUCCH F1信号的生 ...
最新文章
- 如何将DynamoDB的数据增量迁移到表格存储
- 二叉树中如何求根节点到任意节点的路径?
- Python:高阶函数
- 做乘法c语言,【code】C语言_实现输入的矩阵的乘法运算
- python中函数定义_Python中函数的定义与使用
- mysql 提交乱码问题_mysql数据库乱码问题
- 用python画渐变的圆_使用numpy绘制圆形渐变
- Qt文档阅读笔记-QQmlApplicationEngine解析与实例(qml与C++混合编程及QQuick与widgets混合)
- idea @value提示_IDEA 中springboot 项目使用 注解Autowired 出现红线
- android keyevent.java,dispatchKeyEvent简单理解
- 创建ASPState数据库
- 汇编---3---物理地址
- linux生成手机号码字典,Linux下的字典生成工具Crunch 创造自己的专属字典
- 办公、学习不得不收藏的十个网站,有了它效率至少提升十倍
- Homography单应性矩阵原理
- vagrant lanp mysql远程登录设置
- MT6765/MT6762/MT6761平台能否使用ACC/Gyro/A+G与AP之间的I2C接口
- 数学建模国赛编程手必备工具
- github开源项目cxxopts一个轻量级c++命令行解析器分析文档(基于README)
- IDE 和SCSI简介