3568 4G EC25调试

1. 

//DTS配置
kernel\arch\arm64\boot\dts\rockchip\rk3568-evb1-ddr4-v10.dtsi
+    rk_modem: rk-modem {
+        compatible="4g-modem-platdata";
+        4G,power-gpio = <&gpio4 RK_PD2 GPIO_ACTIVE_LOW>; //4G/5G_EN-MODEM_ON-GPIO4_D2
+        4G,reset-gpio = <&gpio0 RK_PD5 GPIO_ACTIVE_HIGH>;//4G/5G_RST-MODEM_RST-GPIO0_D5
+        status = "okay";
+    };

2. 


RK3568\kernel\drivers\usb\serial\option.c
+static const struct usb_device_id option_ids[] = {
+		#if 1 //Added by Quectel
+		{ USB_DEVICE(0x2C7C, 0x0125) }, /* Quectel EC20 R2.0/EC20 R2.1/EC25/EG25-G/EM05 */
+		{ USB_DEVICE(0x2C7C, 0x0121) }, /* Quectel EC21/EG21-G */
+		{ USB_DEVICE(0x2C7C, 0x0191) }, /* Quectel EG91 */
+		{ USB_DEVICE(0x2C7C, 0x0195) }, /* Quectel EG95 */
+		{ USB_DEVICE(0x2C7C, 0x0306) }, /* Quectel EG06/EP06/EM06 */
+		{ USB_DEVICE(0x2C7C, 0x0512) }, /* Quectel EG12/EM12/EG18 */
+		{ USB_DEVICE(0x2C7C, 0x0296) }, /* Quectel BG96 */
+		{ USB_DEVICE(0x2C7C, 0x0700) }, /* Quectel BG95/BG77/BG600L-M3/BC69 */
+		{ USB_DEVICE(0x2C7C, 0x0435) }, /* Quectel AG35 */
+		{ USB_DEVICE(0x2C7C, 0x0415) }, /* Quectel AG15 */
+		{ USB_DEVICE(0x2C7C, 0x0452) }, /* Quectel AG520R */
+		{ USB_DEVICE(0x2C7C, 0x0455) }, /* Quectel AG550R */
+		{ USB_DEVICE(0x2C7C, 0x0620) }, /* Quectel EG20 */
+		{ USB_DEVICE(0x2C7C, 0x0800) }, /* Quectel RG500Q/RM500Q/RG510Q/RM510Q */	
+		{ USB_DEVICE(0x1E0E,0x9001),//SIM8200EAM2
+		 .driver_info = RSVD(4) | RSVD(5) | RSVD(6) | RSVD(6)},
+	#endif

3. Makefile添加qmi_wwan_q.c(特别注意要放在qmi_wwan.o的前面),资源见附件EC25资料


RK3568\kernel\drivers\net\usb\Makefile
+obj-$(CONFIG_USB_NET_QMI_WWAN)	+= qmi_wwan_q.o
obj-$(CONFIG_USB_NET_QMI_WWAN)	+= qmi_wwan.o

4.menuconfig 确保如下使能

CONFIG_USB_NET_DRIVERS=y
CONFIG_USB_USBNET=y
CONFIG_NETDEVICES=y
CONFIG_USB_NET_CDCETHER=y
CONFIG_USB_NET_QMI_WWAN=y
CONFIG_USB_WDM=y

5.添加cdc-wdm0节点:

RK3568\system\core\init\devices.cpp
void DeviceHandler::HandleUevent(const Uevent& uevent) {
    if (uevent.action == "add" || uevent.action == "change" || uevent.action == "online") {
        FixupSysPermissions(uevent.path, uevent.subsystem);
    }
 
    // if it's not a /dev device, nothing to do
    if (uevent.major < 0 || uevent.minor < 0) return;
 
    std::string devpath;
    std::vector<std::string> links;
    bool block = false;
 
    if (uevent.subsystem == "block") {
        block = true;
        devpath = "/dev/block/" + Basename(uevent.path);
 
        if (StartsWith(uevent.path, "/devices")) {
            links = GetBlockDeviceSymlinks(uevent);
        }
    } else if (const auto subsystem =
                   std::find(subsystems_.cbegin(), subsystems_.cend(), uevent.subsystem);
               subsystem != subsystems_.cend()) {
        devpath = subsystem->ParseDevPath(uevent);
    } else if (uevent.subsystem == "usb") {
        if (!uevent.device_name.empty()) {
            devpath = "/dev/" + uevent.device_name;
        } else {
            // This imitates the file system that would be created
            // if we were using devfs instead.
            // Minors are broken up into groups of 128, starting at "001"
            int bus_id = uevent.minor / 128 + 1;
            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-wdmo
+					} else if (uevent.subsystem == "usbmisc" && !uevent.device_name.empty()) {
+							   devpath = "/dev/" + uevent.device_name;
+				#endif		
    } else if (StartsWith(uevent.subsystem, "usb")) {
       // ignore other USB events
        return;
    } else {
        devpath = "/dev/" + Basename(uevent.path);
    }
 
    mkdir_recursive(Dirname(devpath), 0755);
 
    HandleDevice(uevent.action, devpath, block, uevent.major, uevent.minor, links);
 
    // Duplicate /dev/ashmem device and name it /dev/ashmem<boot_id>.
    // TODO(b/111903542): remove once all users of /dev/ashmem are migrated to libcutils API.
    HandleAshmemUevent(uevent);
}

6.重新编译boot.img,确保有如下节点
console:/ $ su                                                                 
console:/ # 
console:/ # ls -l dev/ttyUSB*
crw-rw-rw- 1 radio radio 188,   0 2022-01-27 12:33 dev/ttyUSB0
crw-rw-rw- 1 radio radio 188,   1 2022-01-27 12:33 dev/ttyUSB1
crw-rw-rw- 1 radio radio 188,   2 2022-01-27 14:02 dev/ttyUSB2
crw-rw-rw- 1 radio radio 188,   3 2022-01-27 12:33 dev/ttyUSB3
console:/ # 
console:/ # ls -l dev/cdc-wdm0                                                 
crw-rw---- 1 radio radio 180, 176 2022-01-27 12:33 dev/cdc-wdm
 

7.将厂家给的文件放到\vendor\rockchip\common\phone下,


rk3568\vendor\rockchip\common\phone\phone.mk
#########################################################
#   3G Dongle SUPPORT
#########################################################
-#PRODUCT_COPY_FILES += \
-#    $(CUR_PATH)/phone/etc/ppp/ip-down:system/etc/ppp/ip-down \
-#    $(CUR_PATH)/phone/etc/ppp/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
 
+PRODUCT_COPY_FILES += \
+    $(CUR_PATH)/phone/etc/ppp/ip-down:system/etc/ppp/ip-down \
+    $(CUR_PATH)/phone/etc/ppp/ip-up:system/etc/ppp/ip-up \
+    $(CUR_PATH)/phone/bin/chat:system/bin/chat \
+    $(CUR_PATH)/phone/lib/libreference-ril-ec25.so:vendor/lib64/libreference-ril-ec25.so \
+    $(CUR_PATH)/phone/etc/ppp/ql-ril.conf:system/etc/ql-ril.conf \ 
+	$(CUR_PATH)/etc/spn-conf.xml:system/etc/spn-conf.xml

8 关闭selinux或者天界rild.te 


RK3568\device\rockchip\common\BoardConfig.mk
-BOARD_SELINUX_ENFORCING ?= true
+BOARD_SELINUX_ENFORCING ?= false
+++ generic/goldfish/sepolicy/common/rild.te    (working copy)
@@ -5,6 +5,7 @@

 # IPv6 router advertisement detection
 allow rild self:packet_socket { bind create ioctl read setopt };
+allow rild self:packet_socket { create bind write read };
 allowxperm rild self:packet_socket ioctl { SIOCGIFFLAGS
                                            SIOCSIFFLAGS
                                            SIOCGIFHWADDR };

9.device下做如下修改

+++ generic/goldfish/sepolicy/common/rild.te    (working copy)
@@ -5,6 +5,7 @@

 # IPv6 router advertisement detection
 allow rild self:packet_socket { bind create ioctl read setopt };
+allow rild self:packet_socket { create bind write read };
 allowxperm rild self:packet_socket ioctl { SIOCGIFFLAGS
                                            SIOCSIFFLAGS
                                            SIOCGIFHWADDR };
simon@android:~/at5v5_1013/AT5_V5_android11/rk3568_sdk_11/device$ svn diff
Index: generic/goldfish/sepolicy/common/rild.te
===================================================================
--- generic/goldfish/sepolicy/common/rild.te    (revision 410)
+++ generic/goldfish/sepolicy/common/rild.te    (working copy)
@@ -5,6 +5,7 @@

 # IPv6 router advertisement detection
 allow rild self:packet_socket { bind create ioctl read setopt };
+allow rild self:packet_socket { create bind write read };
 allowxperm rild self:packet_socket ioctl { SIOCGIFFLAGS
                                            SIOCSIFFLAGS
                                            SIOCGIFHWADDR };
Index: rockchip/common/4g_modem/manifest.xml
===================================================================
--- rockchip/common/4g_modem/manifest.xml       (revision 410)
+++ rockchip/common/4g_modem/manifest.xml       (working copy)
@@ -24,5 +24,14 @@
             <instance>default</instance>
         </interface>
     </hal>
+    <hal format="hidl">
+       <name>android.hardware.radio</name>
+       <transport>hwbinder</transport>
+       <version>1.0</version>
+       <interface>
+               <name>IRadio</name>
+               <instance>slot1</instance>
+       </interface>
+    </hal>
 </manifest>

Index: rockchip/common/BoardConfig.mk
===================================================================
--- rockchip/common/BoardConfig.mk      (revision 410)
+++ rockchip/common/BoardConfig.mk      (working copy)
@@ -437,7 +437,7 @@
 BOARD_WIFI_SUPPORT ?= true

 #for rk 4g modem
-BOARD_HAS_RK_4G_MODEM ?= false
+BOARD_HAS_RK_4G_MODEM ?= true

 ifeq ($(strip $(BOARD_HAS_RK_4G_MODEM)),true)
 DEVICE_MANIFEST_FILE += device/rockchip/common/4g_modem/manifest.xml
Index: rockchip/common/device.mk
===================================================================
--- rockchip/common/device.mk   (revision 410)
+++ rockchip/common/device.mk   (working copy)
@@ -259,7 +259,7 @@
     CarrierDefaultApp \
     CarrierConfig \
     rild \
-    librk-ril \
+    libreference-ril-ec25 \
     dhcpcd

 PRODUCT_COPY_FILES += vendor/rockchip/common/phone/etc/apns-full-conf.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/apns-conf.xml
Index: rockchip/common/sepolicy/vendor/file_contexts
===================================================================
--- rockchip/common/sepolicy/vendor/file_contexts       (revision 410)
+++ rockchip/common/sepolicy/vendor/file_contexts       (working copy)
@@ -34,6 +34,20 @@
 /vendor/bin/akmd        u:object_r:akmd_exec:s0
 /data/vendor/akmd(/.*)? u:object_r:akmd_vendor_data_file:s0

+#quectel port
+/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
+#PCIe
+/dev/mhi_DUN  u:object_r:radio_device:s0
+/dev/mhi_DIAG  u:object_r:radio_device:s0
+/dev/mhi_BHI  u:object_r:radio_device:s0
+/dev/mhi_LOOPBACK u:object_r:radio_device:s0
+/dev/mhi_QMI0  u:object_r:radio_device:s0
+
 # camera
 /dev/media[0-9]      u:object_r:camera_device:s0
 /dev/v4l-subdev[0-9] u:object_r:camera_device:s0
Index: rockchip/common/ueventd.rockchip.rc
===================================================================
--- rockchip/common/ueventd.rockchip.rc (revision 410)
+++ rockchip/common/ueventd.rockchip.rc (working copy)
@@ -53,9 +53,22 @@
 /dev/compassirq           0660   system     system

 # for GPS
-#/dev/ttyS3                0600   gps        gps
+/dev/ttyS8                0600   gps        gps
 /dev/gps                  0660   gps        gps

+#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
+#PCIe
+/dev/mhi_DUN  0660  radio  radio
+/dev/mhi_DIAG  0660  radio  radio
+/dev/mhi_BHI  0660  radio  radio
+/dev/mhi_LOOPBACK 0660  radio  radio
+/dev/mhi_QMI0  0660  radio  radio
+
 # for BT
 /dev/vflash               0660   bluetooth  net_bt
 /dev/ttyS0                0660   bluetooth  net_bt
Index: rockchip/rk356x/overlay/frameworks/base/core/res/res/values/config.xml
===================================================================
--- rockchip/rk356x/overlay/frameworks/base/core/res/res/values/config.xml      (revision 410)
+++ rockchip/rk356x/overlay/frameworks/base/core/res/res/values/config.xml      (working copy)
@@ -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>

 10 hardware/ril/rild/rild.rc做如下修改

+++ ril/rild/rild.rc    (working copy)
@@ -1,5 +1,12 @@
-service vendor.ril-daemon /vendor/bin/hw/rild
+#service vendor.ril-daemon /vendor/bin/hw/rild
+#    class main
+#    user radio
+#    group radio cache inet misc audio log readproc wakelock
+#    capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW
+service ril-daemon /vendor/bin/hw/rild -l /vendor/lib64/libreference-ril-ec25.so -- -d /dev/ttyUSB2
     class main
+    #socket rild stream 660 root radio
+    #socket rild-debug stream 660 radio system
     user radio
-    group radio cache inet misc audio log readproc wakelock
-    capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW
+    group radio cache inet misc audio sdcard_rw log
+       capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW

参考

RK3568-ANDROID11-4G-EC20-(详细步骤)_rk3568 ec20_旋风旋风的博客-CSDN博客

【RK356X Android11】开发之4G模块(广和通模块NL668)_广和通4g模块_小小码农121的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九月天-深圳专业软硬件开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值