DRIVER
高新兴物联模组
Android系统RIL适配参考
版本:V1.3
日期:2018-09-12
Website: www.gosuncnwelink.com
E-mail: welink@gosuncn.com
LTE Module
Ril 适配指导文档
修订记录
版本
V1.0
V1.1
V1.2
V1.3
日期
说明
2016-12-16
发布初始版本
2018-04-29
更新文档模板
2018-09-05
完善文档,提高文档易读性
2018-09-12
新增第五章问题处理章节
详细无法连接网络时的问题原因分析
版权所有,未经高新兴物联许可,不得传播。 1
目录
LTE Module
Ril 适配指导文档
修订记录........................................................................................................................................... 1
目录 .................................................................................................................................................. 2
1 RIL 适配 .......................................................................................................................................... 3
2 可选配置....................................................................................................................................... 8
3 运行日志的抓取 ........................................................................................................................... 9
4 Radio log 中简单问题的处理 ...................................................................................................... 12
5 常见问题及处理 .......................................................................................................................... 15
版权所有,未经高新兴物联许可,不得传播。 2
1 RIL 适配
LTE Module
Ril 适配指导文档
请按照本文档的指导对 Android 系统进行修改,否则 RIL 可能会无法正常运行。
1. 在内核中添加 USB 串口驱动和 USB 网卡驱动,可以选择将其直接编入内核,或者编译
为模块待内核启动时加载,总之,要确保 Linux 内核启动完成后,这两个驱动是运行在
内核当中的。
通常,配置内核是通过指令 make menuconfig,进入 android 系统的 kernel 目录下,执行
该指令 make menuconfig 后:
添加 USB 串口驱动:
device drivers-->
usb support-->
usb serial converter support-->
USB driver for GSM and CDMA modems
添加 USB 网卡驱动
devices drivers-->
Network device support-->
usb Network Adapters-->
Mulil-purpose USB Networking Framework
* 注:①如果您的内核结构与上面不一致,可能需要在其它的路径下面选择,总之,只要确
保源文件中的 option.c 及其相关的部分(USB 串口驱动),cdc_ether.c 及其相关部分(USB
网卡驱动)参与编译即可。
②如果您的内核不支持 make menuconfig 命令配置,可以直接修改 kernel 目录下
版权所有,未经高新兴物联许可,不得传播。 3
的 .config 文件,手动添加配置项。
LTE Module
Ril 适配指导文档
2. 在内核中添加 PPP 组件
通常,配置内核是通过指令 make menuconfig,执行该指令后:
devices drivers-->
Network device support-->
ppp support-->
ppp filtering
ppp support for async serial ports
ppp support for sync tty ports
ppp deflate compression
ppp BSD-compress compression
* 注: 如果您的内核不支持 make menuconfig 命令配置,可以直接修改 kernel 目录下
的 .config 文件,手动添加配置项。
3. 在内核驱动源文件中添加 ZTE 模块相关的信息:USB 网卡驱动可以自动识别到 GOSUNCN
模块,因此,其对应的 cdc_ether.c 文件中不需要添加任何内容。但是 USB 串口驱动不能
版权所有,未经高新兴物联许可,不得传播。 4
LTE Module
Ril 适配指导文档
自动识别,必须要添加 GOSUNCN 模块的设备信息到源文件 option.c 中。
文件路径:/kernel/drivers/usb/serial/option.c
添加 USB 端口的 VID 和 PID 信息,见下面蓝色部分。这里 0x0199 为 ME3860 模块和
ME3760_V2 模块的 PID,0x1476 为 ME3620 和 ME3630 模块的 PID,如果您使用的是
其它模块,将其中的 PID 值更换为相应的值即可。
static const struct usb_device_id option_ids[] = {
{ USB_DEVICE(0x19d2, 0x0199) },
{ USB_DEVICE(0x19d2, 0x1476) },
……
}
添加黑名单信息,上面添加模块信息时只添加了设备的 VID 和 PID,没有附加任何额
外的端口信息,这样会导致设备的网卡也被加载成为 USB 串口,下面提供的是一种
类似于黑名单的方式,在 option_probe 函数中,将网卡对应的端口加入黑名单,防
止 USB 网卡被加载成为 USB 串口。
对于 ME3860 和 ME3760_V2,其网卡对应的端口为 0 和 1,对于 ME3620 和 ME3630,
其网卡对应的端口为 3 和 4。请将以下代码添加到 option_probe 函数中
printk("idVendor=%x, idProduct=%x, bInterfaceNumber =%d\r\n",
serial->dev->descriptor.idVendor,
serial->dev->descriptor.idProduct,
serial->interface->cur_altsetting->desc. bInterfaceNumber);
if (serial->dev->descriptor.idVendor == 0x19d2 &&
serial->dev->descriptor.idProduct == 0x1476 &&
serial->interface->cur_altsetting->desc. bInterfaceNumber == 3)
return -ENODEV;
if (serial->dev->descriptor.idVendor == 0x19d2 &&
serial->dev->descriptor.idProduct == 0x1476 &&
serial->interface->cur_altsetting->desc. bInterfaceNumber == 4)
return -ENODEV;
if (serial->dev->descriptor.idVendor == 0x19d2 &&
serial->dev->descriptor.idProduct == 0x1476 &&
serial->interface->cur_altsetting->desc. bInterfaceNumber == 5)
return -ENODEV;
if (serial->dev->descriptor.idVendor == 0x19d2 &&
serial->dev->descriptor.idProduct == 0x0199 &&
serial->interface->cur_altsetting->desc. bInterfaceNumber == 0)
return -ENODEV;
版权所有,未经高新兴物联许可,不得传播。 5
if (serial->dev->descriptor.idVendor == 0x19d2 &&
serial->dev->descriptor.idProduct == 0x0199 &&
serial->interface->cur_altsetting->desc. bInterfaceNumber == 1)
return -ENODEV;
LTE Module
Ril 适配指导文档
* 注:第一行的 printk 是为了方便调试而打印的,虽无实际效果,最好能带上。下面的几个
if 语句分别判断了需要加入黑名单的端口号,如果您使用的是除 ME3860,ME3760_V2 和
ME3620 之外的模块,上面 if 语句中的判断条件也要做相应修改。
4. 在 Android 系统的 init.rc 中添加服务
文件路径:一般情况下,路径在../system/core/rootdir/init.rc,注意:有些平台厂
商维护了自己的 init.rc,因此修改该目录下的 init.rc 可能不会生效。厂商维护的
init.rc 所在路径可能位于 device/xxx/yyy 或者 vendor/xxx/yyy 目录下。其中 xxx 表
示平台提供厂商, yyy 表示具体平台型号,如 freescale 的 imx_51bbg 开发平台中,
init.rc位于目录\device\fsl\imx51_bbg 下。
ril-daemon 服务 (添加前注释掉原来的 ril-daemon 服务)
service ril-daemon /system/bin/rild -l /system/lib/libreference-ril-gosuncn.so
socket rild stream 660 root radio
socket rild-debug stream 660 radio system
user root
group radio cache inet misc audio log
pppd_gprs 服务
版权所有,未经高新兴物联许可,不得传播。 6
LTE Module
Ril 适配指导文档
service pppd_gprs /system/etc/init.gprs_pppd
user root
group radio cache inet misc log
disabled
oneshot
5. 打包相关文件到系统中
将下表中的几个文件打包到系统中,确保系统编译完成后,文件出现在对应的目录中。
如果 Android 系统不支持 netcfg 命令,需要将 netcfg 文件放到 Android 系统中的/system/bin
目录下。
文件名
打包后在 Android 系统中的目录
libreference-ril-gosuncn.so
/system/lib
netcfg
init.gprs_pppd
Ip-up-ppp0
ip-down-ppp0
/system/bin
/system/etc
/system/etc/ppp
/system/etc/ppp
* 注:将文件导入 android 系统的命令:adb push D:\ libreference-ril.so /system/lib,如果系统
提示“read-only file system”,先执行
adb root
adb remount
再 push 文件。
6. 配置 APN
如 果 android 系 统 没 有 设 置 过 APN, , 需 要 在 setting->wireles&networks->cellular
networks->access point names 配置与 sim 卡匹配的 APN 信息,其中
电信:ctnet
版权所有,未经高新兴物联许可,不得传播。 7