市面上大多数MID使用的3G模块一般都是使用中兴、华为的, 在项目中本人调试过中兴的MU301 TD模块、华为的EM770w WCDMA模块。 本文基于华为的EM770w WCDMA模块进行讲述。
Android的3g部分移植主要难点在于RIL层, 如果自己独立开发RIL需要对android的RIL、AT指令、通信流程等非常熟悉, 所以难度非常的大,请参考RIL源码。 现在买回来的3G模块,有些带有RIL库,放到适当位置即可。
1.修改init.rc service ril-daemon /system/bin/rild -l libhuawei-ril.so -- -d /dev/ttyUSB2(PC UI Port name) socket rild stream 660 root radio socket rild-debug stream 660 radio system user root group radio cache inet misc audio 启动rild的守护进程,指定的ril库进行通信,指定数据通信端口,如ttyUSB2。
2.修改执行权限 chmod 777 /dev/ttyUSB0 (拨号端口) chmod 777 /dev/ttyUSB2 (数据端口)
3.修改拨号连接, 修改rild.c(in mydroid/hardware/ril/rild/rild.c),屏蔽以下语句: // switchUser(); 重新编译得到rild,并替换/system/bin/rild,
如果没有屏蔽这部分,3G模块上不了网。 注意:这步是华为特有的,其他模块不需要这样做。
4.添加ppp拨号脚本 拷贝“ip-up”,”ip-down”文件 到 /etc/ppp/目录下 这步注意是完成拨号后状态的记录,如IP,DNS等。 注意:两个文件的权限
5.添加临时文件夹 symlink /data/var /var 注意:这步也是华为特有的,主要是记录一下动态临时信息。
6.linux内核配置 请确认你的内核.config时候已经选中以下选项
# CONFIG_HIPPI is not set CONFIG_ONFIG_PPP=y CONFIG_PPP_MULTILINK=y CONFIG_PPP_FILTER=y CONFIG_PPP_ASYNC=y CONFIG_PPP_SYNC_TTY=y CONFIG_PPP_DEFLATE=y CONFIG_PPP_BSDCOMP=y CONFIG_PPP_MPPE=y CONFIG_PPPOE=y CONFIG_PPPOL2TP=y #CONFIG_PPPOLAC is not set # # CONFIG_PPPOPNS is not set # # CONFIG_SLIP is not set 目的:开启ppp的支持。
7.最后启动android,设置APN即可上网。 TD: 46007 cmnet WCDMA:46001 3gnet 注意:如果出现似:No APN found for carrier: 46xxx, 的错误,一般就是没有设置APN的缘故,请确认。
8.注意事项: (1)华为的em770w 支持EDGE,WCDMA双模,所以可以用移动的卡调试,不同在于状态栏显示的标志为“E”和“3G”。 (2)如果上网出现问题,如没有显示“3G”等logo,请检查步骤3。 (3)如果没有netcfg没有出现ppp0,请检查步骤6。 (4)如果获取不到IP地址等信息,请检查步骤4。 |