RK3588-添加4G通信(EC20)

RK3588-Android 12添加4G通信


所使用3588开发板为临滴LCB3588开发板,根据其Android11源码进行修改添加

1. 相关驱动添加 — 挂载EC20硬件

添加 USB接口 EC20 进行 4G 通信需要先将硬件设备挂载到系统内核上。

1.1. qmi_wwan_q 驱动

qmi_wan 是 Linux 内核中的一个 USB 驱动程序,用于支持基于 QMI(Qualcomm MSM Interface)协议的 USB 无线宽带设备。驱动文件源码:Quectel_Linux_Android_QMI_WWAN_Driver_V1.2.6.zip
qmi_wwan_q.c 添加到 kernel-5.10/drivers/net/usb/qmi_wwan_q.c 目录下

  • 对应 Makefile 修改

    diff --git a/kernel-5.10/drivers/net/usb/Makefile 
    		   b/kernel-5.10/drivers/net/usb/Makefile
    index 99fd12b..32228ef 100644
    --- a/kernel-5.10/drivers/net/usb/Makefile
    +++ b/kernel-5.10/drivers/net/usb/Makefile
    @@ -37,7 +37,8 @@ obj-$(CONFIG_USB_NET_CX82310_ETH)     += cx82310_eth.o
    obj-$(CONFIG_USB_NET_CDC_NCM)  += cdc_ncm.o
    obj-$(CONFIG_USB_NET_HUAWEI_CDC_NCM)   += huawei_cdc_ncm.o
    obj-$(CONFIG_USB_VL600)                += lg-vl600.o
    -obj-$(CONFIG_USB_NET_QMI_WWAN) += qmi_wwan.o
    +#obj-$(CONFIG_USB_NET_QMI_WWAN)        += qmi_wwan.o
    +obj-$(CONFIG_USB_NET_QMI_WWAN) += qmi_wwan_q.o
    obj-$(CONFIG_USB_NET_CDC_MBIM) += cdc_mbim.o
    obj-$(CONFIG_USB_NET_CH9200)   += ch9200.o
    obj-$(CONFIG_USB_NET_AQC111)   += aqc111.o
    
1.2. option.c 添加 EC20

向 option.c 中添加 EC20 相关信息并重新编入内核。 (重新提供修改后的option.c,见文未)

1.3. 验证 EC20 挂载
  • 编译完成后使用 adb shell 验证驱动是否编入内核( wwan0 设备为 EC20 的网络设备 ):

    evk_8mp:/ $ adb shell
    evk_8mp:/ $ ifconfig wwan0                                                             
    wwan0     Link encap:UNSPEC    Driver qmi_wwan_q
              NOARP  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0 
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 
              collisions:0 txqueuelen:1000 
              RX bytes:0 TX bytes:0
    
2. 添加RIL库

Android 12使用的RIL版本:Quectel_Android_RIL_Driver_V3.6.14_master_Release_ndk_20231013_10_54

  • RIL 编入 Android 系统:

    将特定版本的 libreferece-ril.so 拷贝到SDK device/rockchip/common/libquectel-ril/arm64-v8a/libreferece-ril.so 目录下编译;

    注:ndk版本只需要修改 libreferece-ril.so ,libril.so不需要修改。

2.1. RIL 服务声明

用于启动 RIL Daemon(Radio Interface Layer Daemon)。(RIL Daemon 是 Android 系统中用于处理与无线电通信(比如移动网络)相关的功能的后台进程。)在 device/rockchip/rk3588/init.rk3588.rc 目录下添加如下内容:

service ril-daemon /vendor/bin/hw/rild -l <libreference-ril path>
 class main
 user radio
 group radio cache inet misc audio sdcard_rw log
 capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW
  • service 表明这是一个服务声明

  • vendor.ril-daemon 是服务的名称,表示这是供应商(vendor)提供的 RIL Daemon 服务

  • /vendor/bin/hw/rild 是服务的可执行文件路径,即 RIL Daemon 的二进制文件的位置

  • -l /vendor/lib64/libreference-ril.so 表示 RIL Daemon 将加载的库文件的路径,这里是 libreference-ril.so

  • **class main**指定了服务的类别,这里是 main 类别。main 类别通常表示这是一个主要的系统服务

  • **user radio**指定了服务的运行用户,这里是 radio 用户

  • **group radio cache inet misc audio log readproc wakelock**指定了服务的运行组,这里列出了多个组,包括 radiocacheinetmiscaudiologreadprocwakelock

  • **capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW**指定了服务的 Linux 能力(Linux capabilities)。这些能力用于提供特定的权限。在这里,包括 BLOCK_SUSPENDNET_ADMINNET_RAW

2.2. 配置自动RILD拨号

Android系统中的 /vendor/etc/vintf/manifest.xml 文件一般是由SDK中 device/设备名/manifest.xml 进行导入,RK3588厂商对其进行了定制修改,由 device/rockchip/common/manifests/manifest_level_31.xml 进行配置。

device/rockchip/common/manifests/manifest_level_31.xml 中添加如下内容:

<hal format="hidl">
   <name>android.hardware.radio</name>
   <transport>hwbinder</transport>
     <fqname>@1.1::IRadio/slot1</fqname>
     <fqname>@1.1::ISap/slot1</fqname>
</hal>

修改后在 hardware/interfaces/compatibility_matrices/compatibility_matrice.6.xml 中查看是否兼容 @1.1::IRadio/slot1 和 @1.1::ISap/slot1 ,修改如下:

<hal format="hidl" optional="true">
    <name>android.hardware.radio</name>
    <version>1.6</version>
    <version>1.5</version>
    <version>1.4</version>
    <version>1.3</version>
    <version>1.2</version>
    <version>1.1</version>				<!-- 兼容添加:1.1::IRadio/slot1 -->
    <interface>
        <name>IRadio</name>
        <instance>slot1</instance>		<!-- 兼容添加:1.1::IRadio/slot1 -->
        <instance>slot2</instance>
        <instance>slot3</instance>
    </interface>
</hal>
<hal format="hidl" optional="true">
    <name>android.hardware.radio</name>
    <version>1.1</version>				<!-- 兼容添加:1.1::ISap/slot1 -->
    <interface>
        <name>ISap</name>				<!-- 兼容添加:1.1::ISap/slot1 -->
        <instance>slot1</instance>
    </interface>
</hal>
<hal format="hidl" optional="true">
    <name>android.hardware.radio.config</name>
    <!--
        See compatibility_matrix.4.xml on versioning of radio config HAL.
        -->
    <version>1.1</version>
    <!-- <version>1.2</version> -->
    <version>1.0</version>
    <interface>
        <name>IRadioConfig</name>
        <instance>default</instance>
    </interface>
</hal>
3. 设备文件权限和属性的设置

EC20设备会转出4个USB串口,若不修改设备权限会导致上层无法使用。

  • 临时权限

chmod 777 /dev/ttyUSB* # 临时使用直接chmod进行权限开放


- **永久权限**

添加 **mkcombinedroot/vendor/ueventd.rc** 内容如下:

```sh
/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
/dev/ttyUSB* 	0660 		radio 		radio
# 设备文件		设备权限	设备所有者	设备所有者所在组
4. 验证

编译完成后烧写至开发板:

asu@asu:~$ adb root & adb remount & adb shell
rk3588_s: cat /vendor/etc/vintf/manifest.xml  # 复制到本机修改内容如5.1
rk3588_s: adb push manifest.xml /vendor/etc/vintf/ # push到3588
rk3588_s: adb shell
rk3588_s: sync
rk3588_s: find -name "*.xml" 2>/dev/null | xargs grep IRadio   
# 查看是否修改<fqname>@1.1::IRadio/slot</fqname>
rk3588_s: reboot  # 重启更新修改
asu@asu:~$ adb root & adb remount & adb shell
rk3588_s: ifconfig -a      # 查看是否有wwan0 网络设备(需要多等一会)
rk3588_s: ping www.baidu.com # ping通即通信成功

若通信失败,修改 vendor/etc/vintf/manifest.xml 中 android.hardware.radio 部分,如下:

<hal format="hidl">
 <name>android.hardware.radio</name>
 <transport>hwbinder</transport>
 <fqname>@1.1::IRadio/slot1</fqname>  #修改为1.1
 <fqname>@1.1::ISap/slot1</fqname>    #修改为1.1
</hal>

修改后再次重启测试。

5. 上述修改所需文件获取

相关文件存放在合肥服务器:192.168.10.100/upload/data/RK3588-Android12添加4G所需文件.zip

RK3588-Android12添加4G所需文件/
├── option.c
├── qmi_wwan_q.c
├── Quectel_Android_RIL_Driver_V3.6.14_master_Release.rar
└── Quectel_Linux_Android_QMI_WWAN_Driver_V1.2.6.zip

0 directories, 4 files

使用资源与IMX8MP通用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值