Android上3G/4G模组调试

原先用的3G和4G模块都是华为的——EW770W和MU509,ME906C.
但由于可能停产或者价格的原因,3G/4G的模组改为华为的MU709s-2,ME909s-821.都是PCIE的接口,另外还调了中兴的4G模组ME3620。

3G/4G模块的调试大体上分为三个步骤:
1、驱动。
在Linux内核中用make menuconfig来配置3G/4G模块的驱动,内核已经带有,只需选上即可,不需要自己来写驱动。
2、RTI库。
ril,是安卓系统中的无线接口层,是在Linux内核上的一层。这里用的华为的模块,已经提供了RIL的库——libhuawei-ril.so,我们只需把它拷贝到system/lib目录下编译生成system.img镜像即可。
3、配置启动脚本init.rc脚本,使开机启动3G/4G相关的服务。

下面先就MU709s-2的3G模块来详细记录一下调试过程。
1、驱动配置。
Device Drivers ---> USB support ---> USB Serial Converter support ---> USB driver for GSM and CDMA modems
Device Drivers ---> Network device support ---> 
Android上3G/4G模组调试_第1张图片
接下来还要修改drivers/usb/serial/option.c文件,增加所用模组的VID和PID
#define HUAWEI_PRODUCT_MU709S            0x1c25 //add by cxy
#define HUAWEI_PRODUCT_ME909             0x15c1 //add by cxy
static const struct usb_device_id option_ids[] = {}结构体中添加:
{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_MU709S) },//add by cxy
{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_ME909) },//add by cxy

注意:配置好驱动后,把模组插上开发板,再拔掉,串口会有打印的,会显示其VID和PID,并在dev目录下生成ppp、ttyUSB0、ttyUSB1等设备文件。至此,说明驱动是没问题的。

2、安卓源码中ril层编译生成的拨号相关的库拷贝到/system/lib目录下。这里华为已提供,就不需要去修改源码啦。
源码在:linux_src/hardware/ril/reference-ril目录下。

3、配置init.rc。
这里是在Android_src/device/samsung/ut4412/conf目录里新建init.mu709.rc,然后在init.ut4412.rc中导入:
import init.mu709.rc,再在init.rc中导入init.ut4412.rc.
init.mu709.rc的内容如下:
Android上3G/4G模组调试_第2张图片

最后,可以su,dmesg或者logcat -b radio来看调试信息。

用MU709模块按如上设置后,用浏览器可以上网,可以打电话,但是通话没有声音,需进行如下设置:
发AT指令:echo -E "AT^CODECPOW=1" > /dev/ttyUSB0
还可以通过如下AT指令来调节声音:
AT+CLVL=n(n为1~12)调节扬声器的,AT+CMIC=n调节mic的。

你可能感兴趣的:(嵌入式应用开发)