Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2159591
  • 博文数量: 438
  • 博客积分: 3871
  • 博客等级: 中校
  • 技术积分: 6075
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-10 00:11
个人简介

邮箱: wangcong02345@163.com

文章分类

全部博文(438)

文章存档

2017年(15)

2016年(119)

2015年(91)

2014年(62)

2013年(56)

2012年(79)

2011年(16)

分类: Android平台

2015-09-18 10:57:08

1. 查看ppp的驱动是否有
cong@msi:/work/mtk/78P01$ vi mediatek/config/mt6592/autoconfig/kconfig/platform
  1. 1099 #
  2. 1100 # CAIF transport drivers
  3. 1101 #
  4. 1102 # CONFIG_ETHERNET is not set
  5. 1103 # CONFIG_PHYLIB is not set
  6. 1104 # CONFIG_MICREL_KS8995MA is not set
  7. 1105 CONFIG_PPP=y
  8. 1106 CONFIG_PPP_BSDCOMP=y
  9. 1107 CONFIG_PPP_DEFLATE=y
  10. 1108 CONFIG_PPP_FILTER=y
  11. 1109 CONFIG_PPP_MPPE=y
  12. 1110 CONFIG_PPP_MULTILINK=y
  13. 1111 CONFIG_PPPOE=y
  14. 1112 CONFIG_PPPOLAC=y
  15. 1113 CONFIG_PPPOPNS=y
  16. 1114 CONFIG_PPP_ASYNC=y
  17. 1115 CONFIG_PPP_SYNC_TTY=y
  18. 1116 # CONFIG_SLIP is not set
  19. 1117 CONFIG_SLHC=y
2. ppp中chat的移植
a. android下pppd这个在extern/ppp/pppd下己经有了,不过mtk会编译出pppd_dt与pppd,
在调试时发现pppd_dt在打开/dev/ppp时,会报权限错误,所以我用的是pppd
b. chat这个工具需要下载ppp-2.4.5.tar.gz的源码进制编译
好在只有一个chat.c文件移植起来很简单
c. chat移植的Android.mk
  1. cong@msi:/work/mtk/78P01/conggprs/myppp/ppp-2.4.5$ cat chat/Android.mk
  2. LOCAL_PATH:= $(call my-dir)
  3. include $(CLEAR_VARS)

  4. local_src_files:= \
  5.     chat.c
  6. #######################################
  7. # pure pppd binary
  8. CDEF1= -DTERMIOS # Use the termios structure
  9. CDEF2= -DSIGTYPE=void # Standard definition
  10. CDEF3= -UNO_SLEEP # Use the usleep function
  11. CDEF4= -DFNDELAY=O_NDELAY # Old name value
  12. CDEFS= $(CDEF1) $(CDEF2) $(CDEF3) $(CDEF4)

  13. COPTS= -O2 -g -pipe
  14. CFLAGS= $(COPTS) $(CDEFS)

  15. LOCAL_SRC_FILES += $(local_src_files)

  16. LOCAL_SHARED_LIBRARIES := \
  17.     libcutils libcrypto

  18. LOCAL_C_INCLUDES := \
  19.     $(LOCAL_PATH)/include

  20. LOCAL_CFLAGS := -DANDROID_CHANGES -DCHAPMS=1 -DMPPE=1 -Iexternal/openssl/include

  21. LOCAL_CFLAGS += -DUSE_NEG_ADDR $(CFLAGS)


  22. ifeq ($(EVDO_DT_VIA_SUPPORT),yes)
  23. LOCAL_CFLAGS += -D__VIA_PPPD_DOWN__
  24. endif

  25. LOCAL_MODULE:= chat

  26. include $(BUILD_EXECUTABLE)
d. chat及Andorid.mk打包 
chat.rar(下载后改名为chat.tar.gz)

3.配置文件
在主机上写好配置文件,一会导到手机的指定目录中去
3.1
cong@msi:/work/mtk/78P01$ tree conggprs/
conggprs/
├── chap-secrets
├── gprs
├── gprs-connect-chat
└── pap-secrets
调用时pppd call gprs
call后面的gprs就是在手机上的/etc/ppp/peers/gprs这个脚本
(注意:a.若没有peers这个目录就手动创建一个
        b.手机上/etc目录与/system/etc目录是同一个目录,解决了initramfs不能写的问题
3.2 gprs
这个名字必须与call后面的名字一样
  1. cong@msi:/work/mtk/78P01/conggprs$ cat gprs
  2. /dev/ttyMT3
  3. 115200
  4. nocrtscts
  5. modem
  6. #noauth
  7. #auth
  8. #-pap
  9. #+chap
  10. #lock
  11. debug
  12. nodetach
  13. #hide-password
  14. usepeerdns
  15. noipdefault
  16. defaultroute
  17. user cmnet
  18. #user smsong
  19. 0.0.0.0:0.0.0.0
  20. ipcp-accept-local
  21. #ipcp-accept-remote
  22. #lcp-echo-failure 12
  23. #lcp-echo-interval 3
  24. noccp
  25. #novj
  26. #novjccomp
  27. persist
  28. connect '/system/bin/chat -v -f /system/etc/ppp/gprs-connect-chat
3.3 connect
connect 指定了chat的配置文件是gprs-connect-chat,
所以这个名字也得叫gprs-connect-chat
  1. cong@msi:/work/mtk/78P01/conggprs$ cat gprs-connect-chat
  2. TIMEOUT 5
  3. ABORT 'r\nBUSY\r\n'
  4. ABORT '\r\nNO ANSWER\r\n'
  5. ABORT '\r\nRINGING\r\n\r\nRINGING\r\n'
  6. #'' AT
  7. #'OK-+++\c-OK' ATH0
  8. '' AT\r\n
  9. OK ATS0=0\r\n
  10. OK ATE0V1\r\n
  11. OK AT+CGDCONT=1,"IP","CMNET"\r\n
  12. OK ATDT*99***1#\r\n
  13. CONNECT ''
  14. cong@msi:/work/mtk/78P
3.3
  1. cong@msi:/work/mtk/78P01/conggprs$ cat chap-secrets
  2. # Secrets for authentication using CHAP
  3. # client server secret IP addresses
  4. '' * '' *
3.4
  1. cong@msi:/work/mtk/78P01/conggprs$ cat pap-secrets
  2. # Secrets for authentication using PAP
  3. # client server secret IP addresses
  4. cmnet * cmnet *
配置文件打包  
conggprs.rar(下载后改名为conggprs.tar.gz)
3.5 编译脚本
  1. #!/bin/sh
  2. make_ppp()
  3. {
  4.     ./mk -t mm ./external/ppp/pppd/
  5.     adb remount
  6.     adb push out/target/product/mt92_wet_jb9/system/bin/pppd_dt /system/bin/pppd_dt_mod
  7.     adb push out/target/product/mt92_wet_jb9/system/bin/pppd /system/bin/pppd
  8.     adb shell sync
  9. }
  10. make_chat()
  11. {
  12.     ./mk -t mm ./conggprs/myppp/ppp-2.4.5/chat
  13.     adb remount
  14.     adb push out/target/product/mt92_wet_jb9/system/bin/chat /system/bin/chat
  15.     adb shell sync
  16. }

  17. make_ppp_conf()
  18. {
  19.     adb remount
  20.     adb push ./conggprs/gprs-connect-chat /system/etc/ppp/
  21.     adb push ./conggprs/gprs /system/etc/ppp/peers/
  22.     adb push ./conggprs/pap-secrets /system/etc/ppp/
  23.     adb push ./conggprs/chap-secrets /system/etc/ppp/
  24.     adb shell sync
  25. }
  26. case "$1" in
  27.     *)
  28.         make_ppp
  29.         make_chat
  30.         make_ppp_conf
  31.         ;;
  32. esac


4. 开发板上的配置
  1. root@78P01:/system/etc/ppp # ls -l
  2. -rw-rw-rw- root root 128 2015-09-17 10:36 chap-secrets
  3. -rw------- root root 0 2015-09-17 11:30 connect-errors
  4. -rw-rw-rw- root root 297 2015-09-17 16:46 gprs-connect-chat
  5. -r-xr-xr-x root root 421 2015-07-14 20:56 ip-down
  6. -r-xr-xr-x root root 963 2015-07-14 20:56 ip-up
  7. -r-xr-xr-x root root 5440 2015-07-14 21:32 ip-up-vpn
  8. -rw-rw-rw- root root 127 2015-09-17 10:36 pap-secrets
  9. drwxrwxrwx root root 2015-09-17 17:38 peers
  10. root@78P01:/system/etc/ppp # ls -l peers/
  11. -rw-rw-rw- root root 411 2015-09-17 11:56 gprs
运行:
16|root@78P01:/ # pppd call gprs
运行成功后运行busybox ifconfig会看到有ppp0
5.注意
执行流程:
    pppd call gprs      -->先解析gprs脚本
    gprs脚本中的connect -->调用chat命令解析gprs-connnect-chat脚本
5.2 设置dns :   setprop net.dns1   8.8.8.8
   


阅读(1493) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~