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 调试记录相关推荐

  1. android 最新功能介绍,Android Studio 常用功能介绍

    界面介绍 讲解1 这个界面,显示了我们使用 Android Studio时经常接触到的功能面板. Project 面板. 用于浏览项目文件. Project 面板会显示当前的所有的 module .  ...

  2. android 摄像头参数,获取Android设备上的详细的摄像头信息

    原标题:获取Android设备上的详细的摄像头信息 如何获取Android设备上的详细的摄像头信息呢? 目前Samsung的Galaxy Tab和Nexus S均有前置摄像头,获取Android摄像头 ...

  3. Android的Toast介绍-android学习之旅(三十六)

    Toast简单介绍 Toast是一个很方便的消息提示框.会在桌面显示一个短暂的消息提示.有两个特点: 1.消息不会获得焦点. 2.过一段时间会自己主动消失. Toast的生成步骤 1.调用构造器或者静 ...

  4. android 各种服务介绍,Android 网络服务介绍

    1. 介绍 Android网络服务主要包括如下四个部分 -ConnectivityService: 提供数据连接管理服务,包括移动数据.WIFI.以太网等-NetworkPolicyManagerSe ...

  5. android 短信ril移植,android 3g移植调试记录2--ril代码追踪

    今天有进展,找到出错的地方了,根据logcat -b radio的打印信息,追踪代码,对ril有个进一步的了解. 首先,3G模块的驱动要加载insmod **ko,这样会生成/dev/ttyUSB*, ...

  6. android aspectj 参数,在Android项目中使用AspectJ

    什么是AOP AOP是 Aspect Oriented Programming 的缩写,即面向切面编程,和日常遇到的面向对象OOP编程不同的是,OOP是将功能模块化对象化,AOP是针对同一类的问题统一 ...

  7. android gravity参数,Gravity - [ Android中文手册 ] - 在线原生手册 - php中文网

    Gravity 版本:Android 4.0 r1 结构 继承关系 public class Gravity extends Object java.lang.Object android.view. ...

  8. [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接 ...

  9. android addtextchangedlistener参数,【Android】关于addTextChangedListener()方法的上机记录...

    自己在学习控件的时候,学到关于EditText的addTextChangedListener()方法,想做一个类似发微博限制字数为140那样的功能,以此文记录上机过程中发现的一些问题.在做这个的时候, ...

最新文章

  1. Linux 进程及进程之间的通信机制——管道
  2. JAVA Functions in XI(转)
  3. HTML5 Dashboard – 那些让你激动的 Web 技术
  4. 计算某个时间距离现在_计算成像amp;深度学习(1)
  5. python3-python3--内置函数
  6. 单片机中断机制对日常生活的启示_单片机原理与接口技术(高起专)阶段性作业1...
  7. java swing 打开文件_java swing实现打开Excel文件并进行处理
  8. rust石头墙几个c4_石头在景观中的运用
  9. ElasticSearch Java SpringBoot根据时间范围分组求和
  10. 「硬见小百科」压合突发异常处理方法
  11. 打印机扫描显示服务器拒绝访问,怎么解决打印机拒绝访问问题?打印机拒绝访问的解决方法...
  12. 真牛皮!wsl安装位置
  13. vue下载后端返回的压缩包
  14. mysql 分组统计 及 统计结果横向展示
  15. 华为云等级保护之数据备份恢复(完整版)
  16. c#简易的金山打字游戏
  17. 关于KML数据在ArcGis里的应用
  18. 带你了解不一样的sDNA
  19. 蓝桥杯 — CT107D单片机综合训练平台原理图
  20. 史上最全的App推广入门篇【新手必备】

热门文章

  1. 学习笔记:星火第一讲-使用Apollo 学习自动驾驶
  2. macOS 神器 Workflow ,让效率翻倍!
  3. 压缩软件如何删除压缩包密码(zip、rar、7-zip),忘记密码如何删除密码?
  4. 计算机趣事 英语作文,寒假趣事英语作文(通用10篇)
  5. 【Android】网络小说阅读软件的实现
  6. SAS系统学习之初探
  7. 罗马仕荣获中国质量认证中心、CESI颁发的全国首批“双新认证”证书
  8. MTK6735 android 驱动修改模块
  9. MATLAB对水下目标去噪声代码,水下目标噪声与背景噪声的建模与仿真
  10. PlayStation5上手体验