RK3288 4G模块移植简述

本文记录了RK3288搭配EC20 4G模块在Android 5.1平台的调试流程,包括驱动配置、RIL库处理和相关配置修改。调试分三部分,完成操作后发现4G不可用,需更改适配4G模块,修改相关源码后重新编译烧录,联通4G LTE可正常上网。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SoC:RK3288
4G chip:EC20
Platform:Android 5.1

厂家已经提供了相应的文档,这里也只是记录下流程.4G模块调试基本上分为三部分:
驱动、RIL、android配置文件

一 驱动配置

1.1 选择 USB Driver Configure
Device Drivers  --->
	[*] USB support  --->
	        <*> USB Serial Converter support
		          [*] USB Generic Serail Driver
		          [*] USB Driver for GSM and CMDA modems
1.2 add EC20 's Vendor ID and Product ID

add EC20 's Vendor ID and Product ID in option_ids[] of drivers/usb/serial/option.c

USB_DEVICE(0x05c6, 0x9215);
1.3 USB Driver Configure
Device Drivers  --->
      [*] USB support  --->
	        <*> USB Modem (CDC ACM) suppor
1.4 PPP Configure
Device Drivers  --->
      [*] Network device support  --->
	        <*> PPP (point-to-point protocol) support
	        <*> PPP support for async serial ports
	        <*> PPP support for sync tty ports
	        <*> PPP Deflate compression

二 RIL库

RIL库由厂家提供,将该拨号库拷贝到/system/lib/目录下,若厂家提供了ril源码,可将其拷贝到hardware/ril/reference-ril下。

注:需要使用RIL库来配置build.prop

三 配置

修改init.rc的内容,添加以下:

service ril-daemon /system/bin/rild -l /system/lib/libreference-ril.so
    class main
    socket rild stream 660 root radio 
    socket rild-debug stream 666 radio system 
    user root 
    group radio cache inet misc audio sdcard_rw log

修改hardware/ril/rild/rild.c中:

OpenLib:
    #endif
      //switchUser();这里的switchUser()是必须要注释掉的,否则无法正常拨号上网

然后重新编译android。(init.rc的修改需要在device/rockchip/rk3288/init.rc中修改,否则重新编译可能又被rockchip的配置所覆盖)。

按照文档做完上述工作后,发现4G依然不能用,通过adb shell中输入以下命令:

logcat -b radio
//出现以下错误提示
D/RIL_RK_DATA_V3.5(  169): Found a device, get id
D/use-Rlog/RLOG-RIL_RK_DATA_V3.5(  169): device path: /sys/devices/ff540000.usb/usb3/3-1/3-1.4/3-1.4:1.0/ttyUSB0/tty/ttyUSB0
D/RIL_RK_DATA_V3.5(  169): USB device path: /sys/devices/ff540000.usb/usb3/3-1/3-1.4
D/RIL_RK_DATA_V3.5(  169): TTY Device Vendor path: /sys/devices/ff540000.usb/usb3/3-1/3-1.4/idVendor
D/RIL_RK_DATA_V3.5(  169): TTY Device Product path: /sys/devices/ff540000.usb/usb3/3-1/3-1.4/idProduct
D/RIL_RK_DATA_V3.5(  169): tty Device id is: 05C6/9215
D/RIL_RK_DATA_V3.5(  169): Searching modem table...
D/use-Rlog/RLOG-RIL_RK_DATA_V3.5(  169): [matchModem]: match model count=0
E/use-Rlog/RLOG-RIL_RK_DATA_V3.5(  169): E: Not support modem!!!!

这是因为RK3288的Android 5.1 SDK提供了ril相关配置,各个厂家的不同,还需要更改其适配自己的4G模块。

例如厂家提供了rild库是libreference-ril.so,4G模块生成了/dev/ttyUSB0~4共5个串口,AT指令端口为/dev/ttyUSB0;而RK3288默认的配置为:

rild.libpath=/system/lib/libril-rk29-dataonly.so
rild.libargs=-d /dev/ttyACM0

因此将其修改为:

rild.libpath=/system/lib/libreference-ril.so
rild.libargs=-d /dev/ttyUSB0

源码中可在<android_source>/device/rockchip/rk3288/rk3288_box/system.prop中修改,以后每次编译就能正常使用了。

最后需要在init.rc中添加:

chmod 777 /dev/ttyUSB0  
chmod 777 /dev/ttyUSB1  
chmod 777 /dev/ttyUSB2  
chmod 777 /dev/ttyUSB3
chmod 777 /dev/ttyUSB4 

重新编译源码后烧录固件,亲测中国联通4G LTE能正常上网。

<think>好的,我现在需要帮助用户了解如何将RK USB 4G模块移植到特定平台或设备。首先,我要回顾用户提供的引用内容,看看有没有相关的信息。引用1提到了Quectel EC200A 4G模块移植资料,适用于Android和Linux,包含驱动指南和源码。引用2是关于Uboot的移植和编译,可能涉及硬件初始化和内核启动。引用3则讨论了RK3399开发板上Android7蓝牙的移植步骤和测试方法。 接下来,我需要结合这些信息,整理出RK USB 4G模块移植的一般步骤。首先,硬件准备是必要的,确认模块型号和接口兼容性。然后,内核驱动部分可能需要配置USB驱动和模块支持,参考引用1中的驱动指南。接着,移植4G模块的AT指令解析库,这可能需要开发或适配现有库。网络接口配置方面,需要设置PPP拨号或NDIS模式,确保网络连接正确。对于用户空间工具,可能需要集成pppd或ModemManager,类似引用3中提到的蓝牙测试后的配置。系统启动脚本需要自动加载驱动和初始化,引用2中的Uboot部分可能涉及启动流程。测试验证阶段,可以借鉴引用3的测试方法,进行基本功能和数据传输的检查。最后,优化和调试,如日志管理和功耗控制,确保稳定运行。 用户可能需要具体的步骤指导和参考资料,所以应该提供项目地址,如引用1中的GitCode链接,以及推荐迅为的开发文档。同时,要提醒用户注意内核版本、工具链匹配、模块兼容性等常见问题。此外,生成的相关问题需要覆盖硬件准备、驱动开发、网络配置、测试方法等,帮助用户全面了解移植过程中可能遇到的挑战。</think>### RK USB 4G 模块移植指南 #### 1. **硬件准备与适配** - **确认模块型号**:例如 Quectel EC200A 或类似 RK 系列支持的 USB 4G 模块,需检查硬件接口(USB 2.0/3.0)与目标平台的兼容性[^1]。 - **供电与物理连接**:确保模块的电压和电流符合要求,并通过 USB 接口稳定连接。 #### 2. **内核驱动移植** - **配置内核选项**:在 Linux 内核中启用 USB 串口驱动(`CONFIG_USB_SERIAL`)及对应模块的驱动(如 `CONFIG_USB_SERIAL_WWAN` 或厂商专用驱动)[^2]。 - **设备树修改**(可选):若平台使用设备树(如 ARM 架构),需在设备树文件中添加 USB 控制器节点及 4G 模块的 PID/VID 标识。 ```c // 示例:设备树中定义 USB 控制器 &usb_controller { status = "okay"; }; ``` #### 3. **4G 模块功能支持** - **AT 指令库移植**:集成模块的 AT 指令解析库(如 `pppd` 或 `libqmi`),用于控制拨号、网络注册等功能。参考 Quectel 提供的开源代码适配[^1]。 - **网络模式配置**:支持 PPP 拨号或 QMI/WWAN 模式,需在系统中配置 `/dev/ttyUSBx` 串口设备或 NDIS 接口。 #### 4. **用户空间工具配置** - **拨号脚本编写**:使用 `pppd` 或 `ModemManager` 实现自动拨号,示例脚本: ```bash pppd /dev/ttyUSB1 115200 lock noauth defaultroute usepeerdns ``` - **网络接口绑定**:通过 `ifconfig` 或 `nmcli` 管理生成的网络接口(如 `ppp0`)。 #### 5. **系统集成与启动脚本** - **添加 udev 规则**:自动识别模块插入事件并加载驱动。 ```shell SUBSYSTEM=="tty", ATTRS{idVendor}=="2c7c", MODE="0666" ``` - **开机自启动**:在 `/etc/rc.local` 或 systemd 服务中调用拨号脚本。 #### 6. **测试与验证** - **基础功能测试**: - 发送 AT 指令(如 `AT+CPIN?` 查询 SIM 卡状态)。 - 使用 `ping` 或 `curl` 验证网络连通性。 - **稳定性测试**:长时间运行后检查模块重连、断线恢复等机制。 #### 7. **调试与优化** - **日志收集**:通过 `dmesg` 查看内核日志,或启用 `pppd` 的调试模式(`debug` 参数)。 - **功耗管理**:配置 USB 自动挂起/唤醒策略(如 `autosuspend` 参数)。 --- ### 参考资料 1. **Quectel EC200A 移植开发资料**:提供驱动指南及源码,适用于 Linux 平台 [项目地址](https://gitcode.com/open-source-toolkit/1f590) 2. **迅为 RK3399 开发指南**:包含硬件初始化与驱动调试方法[^3] 3. **Linux 网络子系统文档**:参考内核文档 `Documentation/networking/` 目录。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Linux老A

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

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

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

打赏作者

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

抵扣说明:

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

余额充值