Android平台开发-3G function porting-3G功能移植

from: http://www.civilnet.cn/bbs/browse.php?topicno=3863&fpage=3

一、pppd相关文件

Android ril相关的代码和脚本主要有:
android/hardware/ril/reference_ril/ (reference_ril.c)
android/hardware/ril/rild
android/extern/ppp/pppd
android/extern/ppp/chat
android/data/etc/apn-conf-sdk.xml
android/system/core/rootdir/etc/ppp/init.gprs-pppd
android/system/core/rootdir/etc/ppp/peers/cmnet
android/system/core/rootdir/etc/ppp/chat/cmtc-isp
android/vendor/xxxxx/xxxx/system.prop

1、reference_ril.c: RIL的一些AT命令操作,通过一些onRequest接口操作,对不同的硬件,需作一
些修改调整。

2、apn-conf-sdk.xml: 以下是一个例子,有些不支持的APN,需要自己加上去,否则在log中会出现类
似:No APN found for carrier: 46xxx, 的错误。一般移动的TD USIM是46007, 有些是
46000。
<apns version="6">
<apn carrier="Android"
mcc="310"
mnc="995"
apn="internet"
user="*"
server="*"
password="*"
mmsc="null"
/>
<apn carrier="TelKila"
mcc="310"
mnc="260"
apn="internet"
user="*"
server="*"
password="*"
mmsc="null"
/>
<apn carrier="CMCC"
mcc="460"
mnc="00"
apn="cmnet"
user="*"
server="*"
password="*"
mmsc="null"
/>
<apn carrier="CHINA MOBILE"
mcc="460"
mnc="07"
apn="cmnet"
user="*"
server="*"
password="*"
mmsc="null"
/>
</apns>

3、init.gprs-pppd: 调用pppd GPRS拨号的初始化脚本。
PPPD_PID=
/system/bin/setprop "net.gprs.ppp-exit" ""
/system/bin/log -t pppd "Starting pppd"

/system/xbin/pppd call cmnet $* //调用脚本/system/etc/peers/cmnet

/system/xbin/pppd connect 'chat -v "" "AT" "ATDT#777 CONNECT"' user \
CARD password CARD /dev/ttyUSB2 115200 nodetach crtscts \
debug usepeerdns defaultroute
//直接用参数,其中/dev/USB2是控制端口。
PPPD_EXIT=$?
PPPD_PID=$!
/system/bin/log -t pppd "pppd exited with $PPPD_EXIT"
/system/bin/setprop "net.gprs.ppp-exit" "$PPPD_EXIT"

4、cmnet:pppd拨号option脚本:
/dev/ttyUSB3
921600
nocrtscts
nocdtrcts
local
usepeerdns
defaultroute
noipdefault
ipcp-accept-local
ipcp-accept-remote
user cmnet
password cmnet
lock
nodetach
connect "/system/xbin/chat -v -t 50 -f /system/etc/ppp/chat/cmtc-isp"

5、cmtc-isp:
ABORT 'BUSY'
ABORT 'NO CARRIER'
ABORT 'ERROR'
ABORT '+CME ERROR: 100'
""AT
OKAT+CGDCONT=1,"IP","CMNET"
OKAT+CGEQREQ=1,2,128,384,0,0,0,0,"0E0","0E0",,0,0
OKAT
OKAT
OKATS0=0
OKAT
OKAT
OKATDT*98*1#
CONNECT

如果要连联通的WCDMA,就用
OKAT+CGDCONT=1,"IP","3GNET"
OKATDT*99#//拨号命令

6、system.prop:
rild.libpath=/system/lib/libreference-ril.so
rild.libargs=-d /dev/ttyS0
wifi.interface=eth1

二、RIL配置支持

在Android中RIL是通过pppd实现的,要启动pppd,需要在init.rc中添加:
service pppd_gprs /system/etc/init.gprs-pppd
user root
group radio cache inet misc
disabled
oneshot
service ril-daemon /system/bin/rild -l /system/lib/libreference-ril.so --
-d /dev/ttyUSB3 -u /dev/ttyUSB0
socket rild stream 660 root radio
socket rild-debug stream 660 radio system
user root
group radio cache inet misc audio

Modem插入USB口模拟串口,驱动会检测到两个serial端口的,一个是控制的,一个是数据的。
这里/dev/ttyUSB3表示控制端口。

三、RIL流程分析
一开机启动pppd后,如果检测到Modem(通过/dev/ttyUSB*设备来判断),pppd_gprs daemon就调用
init.gprs-pppd连接,
正常通信后,会显示连接到3G网络标志。
然后设置APN,保存好之后重启,就会自动连接到internet。
四、手动测试3G modem

1、加载驱动
如果驱动加载成功,会出现/dev/ttyUSB*设备的。

2、进入/etc/ppp/peers目录,执行
pppd call cmnet &

这里cmnet是一个包含拨号命令的文件。

3、设置DNS
把由pppd自动产生的/etc/ppp/resolv.conf复制到/etc/resolv.conf。

更多相关文章

  1. [APP] Android(安卓)开发笔记 001-环境搭建与命令行创建项目
  2. Appium学习第一个测试脚本
  3. android传送照片到FTP服务器
  4. Android(安卓)MediaCodec硬编兼容性测试方案
  5. android pppd拨号问题及解决办法
  6. gdb 远程调试android进程
  7. Android(安卓)intent.Action 参数值及对应功能介绍
  8. Android手机访问Django测试服务器方法
  9. unity3d开发一:入门知识+导入模型+旋转脚本

随机推荐

  1. 【android-tips】android程序执行adb she
  2. android 判断当前应用是否处于活动状态
  3. Android读取手机联系人且获得联系人手机
  4. android退出应用程序
  5. Android 如何获取摄像头所支持的所有分辨
  6. PopupWindow设置点击外部取消显示后无效
  7. Android电池电量更新 - BatteryService(转
  8. android执行Linux命令
  9. Android SharedPreferences数据存储
  10. 浅谈Android Architecture Components