本文主要是介绍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 doif (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 eventsreturn;} 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 detectionallow rild self:packet_socket { bind create ioctl read setopt };
+allow rild self:packet_socket { create bind write read };allowxperm rild self:packet_socket ioctl { SIOCGIFFLAGSSIOCSIFFLAGSSIOCGIFHWADDR };
9.device下做如下修改
+++ generic/goldfish/sepolicy/common/rild.te (working copy)
@@ -5,6 +5,7 @@# IPv6 router advertisement detectionallow rild self:packet_socket { bind create ioctl read setopt };
+allow rild self:packet_socket { create bind write read };allowxperm rild self:packet_socket ioctl { SIOCGIFFLAGSSIOCSIFFLAGSSIOCGIFHWADDR };
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 detectionallow rild self:packet_socket { bind create ioctl read setopt };
+allow rild self:packet_socket { create bind write read };allowxperm rild self:packet_socket ioctl { SIOCGIFFLAGSSIOCSIFFLAGSSIOCGIFHWADDR };
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 ?= trueifeq ($(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 \dhcpcdPRODUCT_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/ttyUSB2class main
+ #socket rild stream 660 root radio
+ #socket rild-debug stream 660 radio systemuser 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博客
这篇关于3568 4G EC25调试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!