Android 3G功能相关介绍(培训文档)

 

Android 3G功能相关介绍

开启3G功能的配置
1.Boarconfig.mk中添加
– BOARD_USE_AML_STANDARD_RIL := true
2.在对应的deivces下面的system.prop中修改:
– hw.nophone=false
3.init.rc中增加
– mount usbfs none /proc/bus/usb(要在on init部分)
– mkdir /dev/radio 0770 radio radio(在on boot部分)
– chmod 777 /system/etc/init-pppd.sh(在on boot部分)

init.rc中修改rild服务 
#service ril-daemon /system/bin/rild/y / / service ril-daemon /system/bin/rild -l /system/lib/libaml-ril.so  
socket rild stream 660 root radio socket rild stream 660 root radio  
socket rild-debug stream 660 radio system  
user root  
group radio cache inet misc audio system group radio cache inet misc audio system disabled  
service pppd_gprs /system/etc/init-pppd.sh  
user rootuser root  
group radio net_admin cache inet misc system disableddisabled  
 oneshot  

 3,在项目配置a00ref.mk中增加:
 PRODUCT_NOPHONE := false
 ifneq ($(PRODUCT_NOPHONE),true)
PRODUCT_PACKAGES += \
Phone \#这个apk必须有,负责管理3G数据和电话等
Contacts \#这个apk可以不要,是管理电话联系人
Mms#这个apk可以不要,是管理短信的
 PRODUCT_PROPERTY_OVERRIDES += hw.nophone=false
else
PRODUCT_PACKAGES += Misc
PRODUCT_PROPERTY_OVERRIDES += hw.nophone=true
endif
 修改好之后,重新编译rootfs

kernel里config需要做如下配置:
 1,打开usb转串口
– Device Drivers -->
– [*]USB support -->
– <*>USB Serial Converter support -->
– <*>USB driver for GSM and CDMA modems
 2,打开usbfs(Enable USB file system)
– Device Drivers-->
– USB support--->
– [*]USB device filesystem
 3,Enabe CDC ACM
(CDC ACM是USB模拟UART的一种协议,如果3G Dongle采用这个协议,转换的串口名就是/dev/ttyACM0.
/dev/ttyACM1)
– Device Drivers -->
– [*]USB support -->
– <*>USB modem(CDC ACM)support

4,打开ppp协议
– Device Drivers -->
– [*]Network device support--->
– <*>PPP support
– [*]PPP multilink support
– [*]PPP filtering
– [*]PPP support for async serial ports
– [*]PPP support for sync tty ports
以此config重新编译内核。


3G功能底层代码(非java层)介绍
1,管理拨号与网络连接的守护进程rild
– 代码位置在rootfs/hardware/ril/rild
– 它负责调用modem的动态库,使modem初始化,拨号等等。
2,amlogic 3G功能modem动态库代码libaml-ril.so
– 代码位置在rootfs/hardware/amlogic/ril
– libaml-ril.so是负责与modem具体通信的动态库,包括下发和接受
modem命令、信息。
– rootfs/hardware/amlogic/ril/config里的文件是libaml-ril.so动
态库需要调用到的脚本和配置文件

3,pppd拨号进程
– 代码位置roofs \external\ppp\pppd
– Pppd是负责将ppp与modem的串口连接的守护进程
– 后面的数据都是通过该ppp端点ppp0接受和发送的
4,chat与modem自动通信程序
– chat是一个可执行程序。负责按chat的配置文件与modem通信。
5,usb_modeswitch
– 代码位置rootfs\external\libusb
– 负责将USB 3G Dongle转换成串口设备ttyUSB0,ttyUSB1,ttyUSB2等

如何支持一个新的3G Dongle
获取USB 3G Dongle的VID,PID
– 每一个USB设备都会有一个product ID(产品标识,简称PID)和
Vendor ID(厂商标识,简称VID),VID是由世界USB组织分配,
各个厂商唯一的标识号,PID由USB设备厂商自行分配。如华为的VID
是0x12D1,中兴的是0x19D2。
– 将Dongle插入运行ubuntu系统的PC,执行控制台lsusb命令,会打
出usb总线上的设备信息。
• 如:
• Bus 002 Device 004: ID 12d1:140c Huawei Technologies Co.,
Ltd.
• ID后面的12d1:140c即为VID和PID。


支持一个新的USB 3G Dongle到libaml-ril.so
 1,内核USB模块支持该Dongle
– 在知道该USB 3G Dongle的PID,VID之后,查看内核的usb是否支持它,查看文
件option.c,路径是kernel\drivers\usb\serial。
例如华为的一些产品支持:
#define HUAWEI_VENDOR_ID 0x12D1
#define HUAWEI_PRODUCT_E600 0x1001
#define HUAWEI_PRODUCT_E220 0x1003
#define HUAWEI_PRODUCT_E220BIS 0x1004
#define HUAWEI_PRODUCT_E1401 0x1401
······
{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID,
HUAWEI_PRODUCT_E600, 0xff, 0xff, 0xff) },
 如果没有,需要你参照这些格式添加,修改后需要重编译内核。


获取USB 3G Dongle的modem port和service port
Usb 3G – Dongle最终会转换成串口设备,如
ttyUSB0,ttyUSB1,ttyUSB2等,3G网络功能需要用用到2个串口口
:modem port和service port。数据流是通过modem port收发
,AT命令是通过service port下发,消息主动上传也是service port。
– 如果3G Dongle或mini PCIE式的模块资料有列出modem port和
service port。则可以直接使用。如果没有,则需要开发者自己获取
,例如在ubuntu系统里,安装usb_modeswitch工具后(通过aptget
install usb-modeswitch安装),插入3G dongle后,会自动
转换出串口设备,如果不转换,请查看你的ubuntu内核的usb驱动是
否支持该3G Dongle,方法如上一节所讲。


得到3G Dongle转换成串口后的modem port和service
port
– 在你的ubuntu系统能够将你的Dongle转换成串口之后,Dongle插
入PC,查看到/dev下有ttyUSB0,ttyUSB1,ttyUSB2等串口设备。
– 运行minicom串口工具,打开ttyUSB0,之后发送一个“at”,入伙
回复一个“ok”,并且不会主动出现信息,则是modem port,,p ,如果
发送“at”能够回复“ok”,并且主动出现信息,例如:(华为的
EC1261)^SIMST:1,则是service port。

 Vold支持usb 3G Dongle
– 在rootfs\system\vold里的UsbMdmMgr.cpp文件,定义有支持的USB 3G Dongle的支持列表

• static MdmMgrInfo g_KnownMdms[] = {
• /* vid pid modem port */
• //ZTE MF633,MF637U ,MF110 dongle
• { 0x19d2, 0x0031, "/dev/ttyUSB2" },
• ……
• //LONGCHEER U6300/U6100 module
• { 0x1C9E, 0x9603, "/dev/ttyUSB2" },
• //HUAWEI E1750/E620 module
• { 0x12d1, 0x1001, "/dev/ttyUSB0" },
• ……
• }


Vold支持usb 3G Dongle
如果在UsbMdmMgr 文件里发现没有该– UsbMdmMgr.cpp3GDongle的信息,请
按照格式填写进g_KnownMdms[]。
– 将获取的VID填写到结构体的第一项。
– 将获取的PID填写到结构体的第二项。
– 将获取的modem port填写到结构体的第三项。
– 例如{ 0x19d2, 0x0031, "/dev/ttyUSB2" },
– Vold会依据插入的Dongle执行usb_modeswitch调用相应的配置文
件,如usb_modeswitch -c 19d2_0031。


Libaml-ril.so支持usb 3G Dongle
• 在rootfs\hardware\amlogic\ril\libaml-ril里的ril_ compatible.h里定义了表示支持的3G模组的结构体。
typedef struct {
int vid;
int pid;
const char *name;
unsigned int type;
const char *modem;
const char *service;
const char *diag;
const char *voice;
const char *gps;
unsigned int networktype;
unsigned int services;
• } MdmInfo;


Libaml-ril.so支持usb 3G Dongle
– 在rootfs\hardware\amlogic\ril\libaml-ril里的modem_support_list.h里定义了支持的3G模组。
例如
/* vid,pid */
/* name */
/* type */
/* modem port, service port, diag port, voice port, gps port */
/* networktype */
/* service */
//ZTE MF633, MF637U, MF110 dongle
{
0x19d2, 0x0031,
"ZTE MF637U or MF633 or MF110",
RIL_MODEM_TYPE_USB_DONGLE,
"/dev/ttyUSB2" "/dev/ttyUSB1" "/dev/ttyUSB0" /ttyUSB2 , /ttyUSB1 , /ttyUSB0 , NULL, NULL,
RIL_MODEM_NETWORK_TYPE_GSM|RIL_MODEM_NETWORK_TYPE_WCDMA,
RIL_SERVICE_TYPE_DATA_CALL|RIL_SERVICE_TYPE_SIM|RIL_SERVICE_TYPE_SMS|RIL_SERVICE_TYPE_NETWORK|RIL_SERVICE_TYPE_DEVICE
},

Libaml-ril.so支持usb 3G Dongle
– //ZTE MF210 module
{
0x19d2, 0x0117,
"ZTE MF210",
RIL_MODEM_TYPE_PCIE_MODULE,
"/dev/ttyUSB2", "/dev/ttyUSB1", "/dev/ttyUSB0", "/dev/ttyUSB2",
"/dev/ttyUSB4",
RIL_MODEM_NETWORK_TYPE_GSM|RIL_MODEM_NETWORK_TYPE_WCDMA,
RIL_SERVICE_TYPE_DATA_CALL|RIL_SERVICE_TYPE_SIM|RIL_SERVICE_TYPE_S
MS|RIL_SERVICE_TYPE_NETWORK|RIL_SERVICE_TYPE_DEVICE
},


做完以上修改后,需要重编rootfs。然后打上新的升级包,插
上3G模块测试吧!!!


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android Studio是一款由Google开发的Android应用开发环境,它集成了开发所需的工具和功能,包括代码编辑器、编译器、调试器、性能分析器、GUI构建器等。以下是Android Studio的主要功能介绍: 1. 代码编辑器:Android Studio内置了强大的代码编辑器,支持多种编程语言和代码高亮、自动补全、代码格式化等功能,使开发者能够更高效地编写代码。 2. GUI构建器:Android Studio提供了可视化的布局编辑器,可帮助开发者快速构建用户界面,并提供实时预览功能,以便于开发者进行实时调试和修改。 3. 编译器:Android Studio内置了Google开发的Gradle编译器,可帮助开发者快速构建和打包应用程序,并提供了自动化的依赖管理和版本控制功能。 4. 调试器:Android Studio提供了强大的调试工具,包括实时调试、断点调试、变量监视、日志记录等功能,可帮助开发者快速定位和修复应用程序中的问题。 5. 性能分析器:Android Studio提供了性能分析器,可帮助开发者分析应用程序的性能瓶颈和优化点,并提供实时统计数据和图表分析等功能。 6. 版本控制:Android Studio内置了Git版本控制工具,可帮助开发者轻松管理和维护应用程序的版本控制。 7. 集成测试:Android Studio支持集成测试,可帮助开发者验证应用程序在多种设备和平台上的兼容性和稳定性。 8. 库管理器:Android Studio内置了库管理器,可帮助开发者管理应用程序所需的各种库和依赖项,包括Android Support库、Google Play服务等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值