android pppd参数介绍,android 3G pppd 调试记录
android 3G pppd 调试记录。
1. JAVA 部分
android/development/data/etc/apns-conf_sdk.xml ---> system/etc/apns-conf.xml
注意 apns 的版本,
apn="3gnet"
mcc="460"
mnc="01"
proxy=""
port=""
user=""
server=""
password=""
type="default,supl"
/>
android/packages/providers/TelephonyProvider/src/com/android/providers/telephony/TelephonyProvider.java
文件中:
public void onCreate(SQLiteDatabase db)
会根据 system/etc/apns-conf.xml 创建
/data/data/com.android.providers.telephony/databases/telephony.db
而pppd 拨号时候需要依赖 telephony 所提供的 apn 等。
2. drvier 部分。
我的 3G 模块是 moto 的 HTM1000, USB 接口。3G 驱动简单点说就是一个 usb 转串口的驱动。
模块提供 2 个 tty 设备, 一个用来发送 AT 指令, 一个用于 pppd 拨号。
3. C 部分。
cd android/hardware/ril/
3.1, 先说说 rild/radiooptions.c
这是一个测试程序,
perror("Usage: radiooptions [option] [extra_socket_args]/n/
0 - RADIO_RESET, /n/
1 - RADIO_OFF, /n/
2 - UNSOL_NETWORK_STATE_CHANGE, /n/
3 - QXDM_ENABLE, /n/
4 - QXDM_DISABLE, /n/
5 - RADIO_ON, /n/
6 apn- SETUP_PDP apn, /n/
7 - DEACTIVE_PDP, /n/
8 number - DIAL_CALL number, /n/
9 - ANSWER_CALL, /n/
10 - END_CALL /n");
}
可以用来测试接打电话等。
选项 6 可以用来测试 pppd 拨号。
3.2 rild/rild.c
如果有权限问题, 可以直接修改 init.rc 直接给 rild root 权限。
main 函数中会读取 /proc/cmdline 中的 android.ril= 来决定 tty设备的名称。
所以不用那么麻烦了, 直接写成自己的设备名称就行了。
arg_overrides[1] = "-d";
arg_overrides[2] = "/dev/ttyMOT1";
3.3 reference-ril/reference-ril.c
拨号流程清参考另一篇文章。
asprintf(&cmd, "AT+CGACT=0,%d", s_defultPDPCid);
err = at_send_command(cmd, NULL);
free(cmd);
asprintf(&cmd, "AT+CGDCONT=%d,/"IP/",/"%s/",,0,0", s_defultPDPCid, apn);
err = at_send_command(cmd, NULL);
free(cmd);
也 就相当于发送: 'AT+CGDCONT=1 “ip", "3gnet", 0,0'
这点很重要,
接下来本来是需要发送 "ATD*99***1#" 可是我的情况很怪异,
用 /dev/ttyMOT0 可以 成功,并且 pppd 也能成功, 但用 /dev/ttyMOT1 就不能成功, 无耐之下。。
只好让 /dev/ttyMOT1 作为 rild 使用的接口。
/dev/ttyMOT0 作为 pppd 的接口,并且 "ATD*99***1#"由 /dev/ttyMOT0 去发送, 无奈之下只好再移植一个 chat .
接下来:
property_set("net.ppp0.status", "0");
asprintf(&cmd, "/system/bin/pppd connect '/system/bin/chat -esvf
/system/etc/Talk.chat' user %s password %s /dev/ttyMOT0 115200 crtscts
modem novj noipdefault nobsdcomp usepeerdns defaultroute noauth debug
nodetach dump &",(username == NULL) ? "any" : username, (password ==
NULL) ? "any" : password);
err = system(cmd);
LOGD("Launch: %s and ret is: %d!", cmd, err);
free(cmd);
/* wait for system update property */
for(iretry=0; iretry{
sleep(2);
property_get("net.ppp0.status", pppstatus, NULL);
LOGD("net.ppp0.status = %s/n", pppstatus);
if(atoi(pppstatus) > 0)
break;
}
由于 pppd 不会立即返回,所以只好 修改 pppd如果连接成功则
property_set("net.ppp0.status", "1");
#cat /system/etc/Talk.chat
ABORT 'BUSY'
ABORT 'NO ANSWER'
ABORT 'ERROR'
TIMEOUT 20
'' 'ATZ'
OK ATDT*99***1#
CONNECT ""
pppd 连接成功以后会 设置网关和 dns 等。
另外, android 默认是打开拨号上网功能的。 但也有一些手机做了个开关。
android pppd参数介绍,android 3G pppd 调试记录相关推荐
- android 最新功能介绍,Android Studio 常用功能介绍
界面介绍 讲解1 这个界面,显示了我们使用 Android Studio时经常接触到的功能面板. Project 面板. 用于浏览项目文件. Project 面板会显示当前的所有的 module . ...
- android 摄像头参数,获取Android设备上的详细的摄像头信息
原标题:获取Android设备上的详细的摄像头信息 如何获取Android设备上的详细的摄像头信息呢? 目前Samsung的Galaxy Tab和Nexus S均有前置摄像头,获取Android摄像头 ...
- Android的Toast介绍-android学习之旅(三十六)
Toast简单介绍 Toast是一个很方便的消息提示框.会在桌面显示一个短暂的消息提示.有两个特点: 1.消息不会获得焦点. 2.过一段时间会自己主动消失. Toast的生成步骤 1.调用构造器或者静 ...
- android 各种服务介绍,Android 网络服务介绍
1. 介绍 Android网络服务主要包括如下四个部分 -ConnectivityService: 提供数据连接管理服务,包括移动数据.WIFI.以太网等-NetworkPolicyManagerSe ...
- android 短信ril移植,android 3g移植调试记录2--ril代码追踪
今天有进展,找到出错的地方了,根据logcat -b radio的打印信息,追踪代码,对ril有个进一步的了解. 首先,3G模块的驱动要加载insmod **ko,这样会生成/dev/ttyUSB*, ...
- android aspectj 参数,在Android项目中使用AspectJ
什么是AOP AOP是 Aspect Oriented Programming 的缩写,即面向切面编程,和日常遇到的面向对象OOP编程不同的是,OOP是将功能模块化对象化,AOP是针对同一类的问题统一 ...
- android gravity参数,Gravity - [ Android中文手册 ] - 在线原生手册 - php中文网
Gravity 版本:Android 4.0 r1 结构 继承关系 public class Gravity extends Object java.lang.Object android.view. ...
- [RK3128][Android 6.0] u-blox GPS芯片 MAX-7Q调试记录
硬件平台:RK3128 Android版本:6.0 Kernel版本:3.10.92 最近调试一款gps芯片,u-blox的MAX-7Q,支持I2C及UART接口,由于UART口不够用,只能用I2C接 ...
- android addtextchangedlistener参数,【Android】关于addTextChangedListener()方法的上机记录...
自己在学习控件的时候,学到关于EditText的addTextChangedListener()方法,想做一个类似发微博限制字数为140那样的功能,以此文记录上机过程中发现的一些问题.在做这个的时候, ...
最新文章
- Linux 进程及进程之间的通信机制——管道
- JAVA Functions in XI(转)
- HTML5 Dashboard – 那些让你激动的 Web 技术
- 计算某个时间距离现在_计算成像amp;深度学习(1)
- python3-python3--内置函数
- 单片机中断机制对日常生活的启示_单片机原理与接口技术(高起专)阶段性作业1...
- java swing 打开文件_java swing实现打开Excel文件并进行处理
- rust石头墙几个c4_石头在景观中的运用
- ElasticSearch Java SpringBoot根据时间范围分组求和
- 「硬见小百科」压合突发异常处理方法
- 打印机扫描显示服务器拒绝访问,怎么解决打印机拒绝访问问题?打印机拒绝访问的解决方法...
- 真牛皮!wsl安装位置
- vue下载后端返回的压缩包
- mysql 分组统计 及 统计结果横向展示
- 华为云等级保护之数据备份恢复(完整版)
- c#简易的金山打字游戏
- 关于KML数据在ArcGis里的应用
- 带你了解不一样的sDNA
- 蓝桥杯 — CT107D单片机综合训练平台原理图
- 史上最全的App推广入门篇【新手必备】