RK3568 开发板 安卓系统之4G模块驱动调试(十四)

RK3568 开发板 安卓系统之4G模块驱动调试(十四) 万万没想到 2022-10-14 08:49:15 4147

4.11 在RK3568开发板上调试4G(EC20)驱动

4.11.1 查看 RK3568 关于4G模块的原理图,获取需要配置的信息

4.11.2 需要配置的信息如下

1 4G模块电源使能引脚GPIO4_C3
2 4G模块W_DISABLE1引脚GPIO4_B5
3 4G模块复位引脚GPIO4_B4

4.11.3 DTS配置如下

{
    rk_modem: rk-modem {
        compatible="4g-modem-platdata";
        pinctrl-names = "default";
        pinctrl-0 = <&lte_vbat &lte_reset &lte_pwr>;
        4G,vbat-gpios = <&gpio4 RK_PC3 GPIO_ACTIVE_HIGH>;
        4G,power-gpios = <&gpio4 RK_PB5 GPIO_ACTIVE_LOW>;
        4G,reset-gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>;
        status = "okay";
    };
};

4.11.4 内核驱动增加对EC20的支持

由于改动较多,步骤不详细叙说,具体参数移远提供的移植文档《Quectel_LTE&5G_Linux_USB_Driver_User_Guide_V2.0.pdf》,说得很详细。
修改驱动

4.11.5 关闭selinux,打开4G模块支持

diff --git a/device/rockchip/common/BoardConfig.mk b/device/rockchip/common/BoardConfig.mk
index e28fd4b43d..5a34fe5996 100755
--- a/device/rockchip/common/BoardConfig.mk
+++ b/device/rockchip/common/BoardConfig.mk
@@ -59,7 +59,7 @@ BOARD_BOOT_HEADER_VERSION ?= 2
 BOARD_MKBOOTIMG_ARGS :=
 BOARD_PREBUILT_DTBOIMAGE ?= $(TARGET_DEVICE_DIR)/dtbo.img
 BOARD_ROCKCHIP_VIRTUAL_AB_ENABLE ?= false
-BOARD_SELINUX_ENFORCING ?= true
+BOARD_SELINUX_ENFORCING ?= false

 # Use the non-open-source parts, if they're present
 TARGET_PREBUILT_KERNEL ?= kernel/arch/arm/boot/zImage
@@ -439,9 +439,9 @@ BOARD_WIFI_SUPPORT ?= true
 #for rk 4g modem
 BOARD_HAS_RK_4G_MODEM ?= false

-ifeq ($(strip $(BOARD_HAS_RK_4G_MODEM)),true)
-DEVICE_MANIFEST_FILE += device/rockchip/common/4g_modem/manifest.xml
-endif
+# ifeq ($(strip $(BOARD_HAS_RK_4G_MODEM)),true)
+# DEVICE_MANIFEST_FILE += device/rockchip/common/4g_modem/manifest.xml
+# endif

 #USE_CLANG_PLATFORM_BUILD ?= true

4.11.6 去掉原有vendor.rild.libpath配置

diff --git a/device/rockchip/common/device.mk b/device/rockchip/common/device.mk
index 917e8b909a..4d83c11d24 100644
--- a/device/rockchip/common/device.mk
+++ b/device/rockchip/common/device.mk
@@ -273,8 +273,8 @@ PRODUCT_PROPERTY_OVERRIDES += \
                ro.telephony.default_network=9

 ifeq ($(strip $(TARGET_ARCH)), arm64)
-PRODUCT_PROPERTY_OVERRIDES += \
-               vendor.rild.libpath=/vendor/lib64/librk-ril.so
+# PRODUCT_PROPERTY_OVERRIDES += \
+#              vendor.rild.libpath=/vendor/lib64/librk-ril.so

 PRODUCT_COPY_FILES += \
                $(LOCAL_PATH)/4g_modem/bin64/dhcpcd:$(TARGET_COPY_OUT_VENDOR)
/bin/dhcpcd \

4.11.7 去掉电话功能

diff --git a/device/rockchip/common/init.rk30board.rc b/device/rockchip/commo
n/init.rk30board.rc
index 6b8f9ec25d..cf913d114a 100755
--- a/device/rockchip/common/init.rk30board.rc
+++ b/device/rockchip/common/init.rk30board.rc
@@ -253,9 +253,9 @@ on property:persist.internet_adb_enable=0
     restart adbd

 # for telephony function
-on property:ro.boot.noril=true
-    setprop ro.radio.noril true
-    stop ril-daemon
+#on property:ro.boot.noril=true
+#    setprop ro.radio.noril true
+#    stop ril-daemon

 # set ro.serialno
 on property:vendor.serialno=*

4.11.8 添加4G模块的hidl配置

diff --git a/device/rockchip/common/manifest.xml b/device/rockchip/common/man
ifest.xml
index 18ed438f6e..f3c7ce172a 100755
--- a/device/rockchip/common/manifest.xml
+++ b/device/rockchip/common/manifest.xml
@@ -66,6 +66,31 @@
             <instance>default</instance>
         </interface>
     </hal>
+    <hal format="hidl">
+        <name>android.hardware.radio</name>
+        <transport>hwbinder</transport>
+        <fqname>@1.1::IRadio/slot1</fqname>
+        <fqname>@1.1::IRadio/slot2</fqname>
+        <fqname>@1.2::ISap/slot1</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.radio.deprecated</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IOemHook</name>
+            <instance>slot1</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.radio.config</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IRadioConfig</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
     <kernel target-level="5"/>
 </manifest>

4.11.9 修改file_contexts文件

diff --git a/device/rockchip/common/sepolicy/vendor/file_contexts b/device/ro
ckchip/common/sepolicy/vendor/file_contexts
index 03f49c0111..7db021dc61 100644
--- a/device/rockchip/common/sepolicy/vendor/file_contexts
+++ b/device/rockchip/common/sepolicy/vendor/file_contexts
@@ -222,3 +222,10 @@
 /vendor/bin/flash_img.sh u:object_r:vendor_install_recovery_exec:s0
 # vibrator aidl
 /(vendor|system/vendor)/bin/hw/android\.hardware\.vibrator-service\.rockchip
    u:object_r:hal_vibrator_default_exec:s0
+
+/dev/ttyUSB[0-9]               u:object_r:radio_device:s0
+/dev/ttyACM[0-9]               u:object_r:radio_device:s0
+/dev/cdc-wdm[0-9]              u:object_r:radio_device:s0
+/dev/qcqmi[0-9]                        u:object_r:radio_device:s0
+/vendor/bin/hw/rild            u:object_r:rild_exec:s0
+/dev/socket/rildOemHook        u:object_r:rild_socket:s0

4.11.10 添加rild.te文件,内容如下

diff --git a/device/rockchip/common/sepolicy/vendor/rild.te b/device/rockchip
/common/sepolicy/vendor/rild.te
new file mode 100644
index 0000000000..03ec17da4c
--- /dev/null
+++ b/device/rockchip/common/sepolicy/vendor/rild.te
@@ -0,0 +1 @@
+allow rild self:packet_socket { create bind write read };
\ No newline at end of file

4.11.11 修改ueventd.rockchip.rc文件,给4G模块读写权限

diff --git a/device/rockchip/common/ueventd.rockchip.rc b/device/rockchip/com
mon/ueventd.rockchip.rc
index 8b92518050..ce7e01bb6a 100755
--- a/device/rockchip/common/ueventd.rockchip.rc
+++ b/device/rockchip/common/ueventd.rockchip.rc
@@ -192,3 +192,10 @@

 # for sensors
 /dev/input/event*    0666   input system
+
+#quectel port
+/dev/ttyUSB*   0660 radio radio
+/dev/ttyACM*   0660 radio radio
+/dev/cdc-wdm*  0660 radio radio
+/dev/qcqmi*            0660 radio radio
+/dev/cdc-acm*  0660 radio radio
\ No newline at end of file

4.11.12 将移植提供的libquectel-ril整个拷贝到device/rockchip/rk356x/目录下并改名为ec20

4.11.13 添加4G模块vendor.rild.libpath的配置

diff --git a/device/rockchip/rk356x/rk3568_aybering/rk3568_aybering.mk b/device/rockchip/rk356x/rk3568_aybering/rk3568_aybering.mk
index 9f2d30b7dc..5dffe5e74c 100644
--- a/device/rockchip/rk356x/rk3568_aybering/rk3568_aybering.mk
+++ b/device/rockchip/rk356x/rk3568_aybering/rk3568_aybering.mk
@@ -43,3 +43,18 @@ PRODUCT_PROPERTY_OVERRIDES += ro.sf.lcd_density=160
 PRODUCT_PROPERTY_OVERRIDES += ro.wifi.sleep.power.down=true
 PRODUCT_PROPERTY_OVERRIDES += persist.wifi.sleep.delay.ms=0
 PRODUCT_PROPERTY_OVERRIDES += persist.bt.power.down=true
+
+#20220821 hale 添加4g模块
+PRODUCT_MODEM := EC20
+ifeq ($(strip $(PRODUCT_MODEM)), EC20)
+BOARD_HAS_RK_4G_MODEM := true
+
+PRODUCT_PROPERTY_OVERRIDES += \
+        vendor.rild.libpath=/vendor/lib64/hw/libreference-ril.so 
+#PRODUCT_PROPERTY_OVERRIDES += \
+#              vendor.rild.libargs=-d /dev/ttyUSB2 
+
+PRODUCT_COPY_FILES += \
+    $(LOCAL_PATH)/../ec20/arm64-v8a/libreference-ril.so:vendor/lib64/hw/libreference-ril.so
+endif
+#20220821 hale 添加4g模块结束
\ No newline at end of file

4.11.14 修改system/core/init/devices.cpp文件

diff --git a/system/core/init/devices.cpp b/system/core/init/devices.cpp
index 9fbec641be..feb517fe08 100644
--- a/system/core/init/devices.cpp
+++ b/system/core/init/devices.cpp
@@ -492,6 +492,8 @@ void DeviceHandler::HandleUevent(const Uevent& uevent) {
             int device_id = uevent.minor % 128 + 1;
             devpath = StringPrintf("/dev/bus/usb/%03d/%03d", bus_id, device_id);
         }
+    } else if (uevent.subsystem == "usbmisc" && !uevent.device_name.empty()) {
+               devpath = "/dev/" + uevent.device_name;
     } else if (StartsWith(uevent.subsystem, "usb")) {
         // ignore other USB events
         return;

4.11.15 修改hardware/ril/rild/rild.rc文件

diff --git a/hardware/ril/rild/rild.rc b/hardware/ril/rild/rild.rc
index f6beb5468f..d259206f70 100644
--- a/hardware/ril/rild/rild.rc
+++ b/hardware/ril/rild/rild.rc
@@ -1,5 +1,5 @@
 service vendor.ril-daemon /vendor/bin/hw/rild
     class main
-    user radio
-    group radio cache inet misc audio log readproc wakelock
+    user root
+    group radio cache inet misc audio sdcard_rw log
     capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW

4.11.16 修改vendor/rockchip/common/phone/etc/apns-full-conf.xml文件,支持物联网卡

diff --git a/vendor/rockchip/common/phone/etc/apns-full-conf.xml b/vendor/rockchip/common/phone/etc/apns-full-conf.xml
index 5718e10ae8..67cdc2b1c2 100644
--- a/vendor/rockchip/common/phone/etc/apns-full-conf.xml
+++ b/vendor/rockchip/common/phone/etc/apns-full-conf.xml
@@ -35498,4 +35498,10 @@
       mvno_type="spn"
       mvno_match_data="IENTC"
   />
+  <apn carrier="China Telecom" mcc="460" mnc="11" apn="ctnet" type="default,supl" />
+  <apn carrier="中国移动物联网4G" mcc="460" mnc="04" apn="cmiot" type="default,supl" />
+  <apn carrier="中国移动物联网2G" mcc="460" mnc="04"  apn="cmmtm" type="default,supl" />
+  <apn carrier="中国联通物联网gzm2mapn" mcc="460" mnc="06" apn="unim2m.gzm2mapn" port="80" type="default,supl" />
+  <apn carrier="中国联通物联网njm2mapn" mcc="460" mnc="06" apn="unim2m.njm2mapn"  type="default,supl" />
+  <apn carrier="中国电信物联网m2m" mcc="460" mnc="03" apn="CTNET" user="m2m" password="vnet.mobi" type="default" />
 </apns>

4.11.17 修改device/rockchip/rk356x/overlay/frameworks/base/core/res/res/values/config.xml文件

diff --git a/device/rockchip/rk356x/overlay/frameworks/base/core/res/res/values/config.xml b/device/rockchip/rk356x/overlay/frameworks/base/core/res/res/values/config.xml
index 9feb244b2c..2bacfc2ed1 100755
--- a/device/rockchip/rk356x/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/device/rockchip/rk356x/overlay/frameworks/base/core/res/res/values/config.xml
@@ -31,6 +31,14 @@
     <!-- the 6th element indicates boot-time dependency-met value. -->
     <string-array translatable="false" name="networkAttributes">
         <item>"wifi,1,1,2,-1,true"</item>
+        <item>"mobile,0,0,0,-1,true"</item>
+        <item>"mobile_mms,2,0,2,60000,true"</item>
+        <item>"mobile_supl,3,0,2,60000,true"</item>
+        <item>"mobile_dun,4,0,2,60000,true"</item>
+        <item>"mobile_hipri,5,0,3,60000,true"</item>
+        <item>"mobile_fota,10,0,2,60000,true"</item>
+        <item>"mobile_ims,11,0,2,60000,true"</item>
+        <item>"mobile_cbs,12,0,2,60000,true"</item>
         <item>"bluetooth,7,7,0,-1,true"</item>
         <item>"ethernet,9,9,9,-1,true"</item>
     </string-array>

4.11.18 编译固件后,烧写固件验证

在启动的时候,可以看到串口打印有以下信息,说明正常识别到EC20的PID和VID了

[    8.606334] usb 1-1.2: New USB device found, idVendor=2c7c, idProduct=0125, bcdDevice= 3.18
[    8.606363] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    8.606370] usb 1-1.2: Product: Android
[    8.606375] usb 1-1.2: Manufacturer: Android
[    8.607844] option 1-1.2:1.0: GSM modem (1-port) converter detected
[    8.608369] usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB0
[    8.608901] option 1-1.2:1.1: GSM modem (1-port) converter detected
[    8.609821] usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB1
[    8.610600] option 1-1.2:1.2: GSM modem (1-port) converter detected
[    8.611158] usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB2
[    8.611731] option 1-1.2:1.3: GSM modem (1-port) converter detected
[    8.612197] usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB3
[    8.613625] qmi_wwan_q 1-1.2:1.4: cdc-wdm0: USB WDM device
[    8.613958] qmi_wwan_q 1-1.2:1.4: Quectel Android work on RawIP mode
[    8.614960] qmi_wwan_q 1-1.2:1.4: rx_urb_size = 1520
[    8.615723] qmi_wwan_q 1-1.2:1.4 wwan0: register 'qmi_wwan_q' at usb-fd800000.usb-1.2, WWAN/QMI device, b6:5a:cb:79:19:c1

开机会,等一段时间后,可以看到在状态栏上有4G图标了,执行以下操作

rk3568_aybering:/ # ifconfig
wwan0     Link encap:Ethernet  HWaddr b6:5a:cb:79:19:c1  Driver qmi_wwan_q
          inet addr:10.9.62.219  Mask:255.255.255.248
          inet6 addr: 240e:47d:32e0:527b:b45a:cbff:fe79:19c1/64 Scope: Global
          inet6 addr: 240e:47d:32e0:527b:557b:bafa:c6e:3fe6/64 Scope: Global
          inet6 addr: fe80::b45a:cbff:fe79:19c1/64 Scope: Link
          UP RUNNING NOARP  MTU:1500  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:22 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1107 TX bytes:1442

...

rk3568_aybering:/ # ping www.baidu.com
PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.
64 bytes from 14.215.177.39: icmp_seq=1 ttl=54 time=65.8 ms
64 bytes from 14.215.177.39: icmp_seq=2 ttl=54 time=69.7 ms
64 bytes from 14.215.177.39: icmp_seq=3 ttl=54 time=69.5 ms
64 bytes from 14.215.177.39: icmp_seq=4 ttl=54 time=76.8 ms
64 bytes from 14.215.177.39: icmp_seq=5 ttl=54 time=71.4 ms
^C
--- www.a.shifen.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 65.851/70.665/76.806/3.566 ms
rk3568_aybering:/ #

通过以上信息,可以看到,已经可以正常联网了。

4.11.19 调试过程中碰到的问题,能正常上网,但没图标

问题是在device/rockchip/rk356x/overlay/frameworks/base/core/res/res/values/config.xml添加信息不全造成的。
注意:以下这一行不加会导致能正常上网,但在状态栏无移动数据的图标

        <item>"mobile,0,0,0,-1,true"</item>
特别说明

RK3568开发板产品链接

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 1 1 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
万万没想到
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区