最近调试了下9507C的4G模块,花费最长的居然是选线问题0-0,特记必须是4路的usb线。。。。。,将硬件新给我的usb线剪开一看才发现只有两路,泪奔。1.开发前需自己检测好硬件的可行性。2.先用串口飞线用串口调试工具SSCOM32接上模块通过发AT指令确认板子的可用性。
接下来开始开发:
驱动部分:
1.根据模块产品型号在kernle/drivers/usb/serial/option.c中加入VID和PID
{ USB_DEVICE( 0x1c9e, 0x9b3c ) }
2.编译配置PPP
如果拨号上网则配置PPP,make menuconfig后
Device Drivers --->
-*-Network device support --->
{*}ppp(point-to-point protocol) support
……
[*] ppp support for async serial ports
[*] ppp support for sync tty ports
……
一般选择以上即可,如果需要更多PPP服务,则PPP相关都选择上。
Device Drivers --->
[*]USB support --->
[*]USB Serial Conerter support --->
[*]USB Generic Serial Driver
……
[*]USB driver for GSM and CDMA modems
……
系统应用部分:
1.在init.rc中加入下面服务,下面“-- -d /dev/ttyUSB(1,2,3,,)”部分,使用哪个端口根据实际情况,若没有指定端口默认AT端口使用/dev/ttyUSB2,上网使用/dev/ttyUSB1
service ril-daemon /system/bin/rild -l /system/lib/libreference-ril-lslte.so -- -d /dev/ttyUSB2 -m /dev/ttyUSB1
class main
socket rild stream 660 root radio
socket rild-debug stream 660 radio system
user root
group radio cache inet misc audio sdcard_rw
2.取到最新通用版的Ril库(一般研发提供的Ril库名字带有日期等信息,需要重命名,例如重命名为libreference-ril-u9300c.so)放入客户单板,然后进行适配;
如果使用ppp拨号,需要修改ip-up脚本
out/out/target/product/demoboardname/system/etc/ppp/下的ip-up内是否有下面信息,若没有则加入,
/system/bin/setprop "net.interfaces.defaultroute" "gprs"
/system/bin/setprop "net.ppp0.dns1" "$DNS1"
/system/bin/setprop "net.ppp0.dns2" "$DNS2"
/system/bin/setprop "net.ppp0.local-ip" "$IPLOCAL"
/system/bin/setprop "net.ppp0.remote-ip" "$IPREMOTE"
/system/bin/setprop "net.dns1" "$DNS1"
/system/bin/setprop "net.dns2" "$DNS2"
4.默认是RIL启动pppd程序,不需要加入下面修改。如果因权限问题,RIL无法启动或者杀死pppd程序,可以使用起服务的方法来启动和杀死pppd。
首先在init.rc中设置persist.ril.build.pppoe 这个属性值为 b1,然后在init.rc中添加如下内容:
service pppd_gprs /system/etc/init.gprs-pppd
socket rild-ppp stream 660 root radio
user root
group radio cache inet misc
disabled
on property:net.gprs.enable=1
start pppd_gprs
on property:net.gprs.enable=0
stop pppd_gprs
RIL通过设置系统属性,来启动ppd_gprs服务来启动pppd程序,其中init.gprs-pppd脚本
放入/system/etc/路径下。
5.安卓拨号不起的APN问题
可能是没有APN信息导致,可以在安卓界面上查看是否适配到APN。我的apn文件在android/device/softwinner/common/rild/
apns-conf.xml,加入APN(信息内容供参考,具体还需根据情况咨询运营商)
中国移动:
mnc="00"
apn="cmnet"
type="default,supl"
/>
mnc="00"
apn="cmwap"
proxy="010.000.000.172"
port="80"
type="wap"
/>
mnc="00"
apn="cmwap"
proxy="010.000.000.172"
port="80"
mmsproxy="010.000.000.172"
mmsport="80"
mmsc="http://mmsc.monternet.com"
type="mms"
/>
中国联通:
mnc="01"
apn="3gnet"
type="default,supl"
/>
mnc="01"
apn="3gwap"
proxy="010.000.000.172"
port="9201"
type="wap"
/>
mnc="01"
apn="3gwap"
proxy="010.000.000.172"
port="80"
mmsproxy="010.000.000.172"
mmsport="80"
mmsc="http://mmsc.myuni.com.cn"
type="mms"
/>
中国电信:
mnc="03"
apn="ctnet"
type="default,supl"
/>
mnc="03"
apn="ctwap"
user="ctwap@mycdma.cn"
password="vnet.mobi"
proxy="010.000.000.200"
port="80"
type="wap"
/>
mnc="03"
apn="ctwap"
user="ctwap@mycdma.cn"
password="vnet.mobi"
server="*"
proxy="010.000.000.200"
port="80"
mmsproxy="010.000.000.200"
mmsport="80"
mmsc="http://mmsc.vnet.mobi"
type="mms"
/>
我的中国移动的测试卡:
新增APN后,编译打包版本或者。手动在单板修改后,删除数据库
命令为:rm /data/data/com.android.providers.telephony/databases/* -rf,重启生效。
OK,基本PPP拨号没问题了.netcfg查看一下,ping -c 4 www.baidu.com查看网络是否可用。
发AT指令:echo -e "" >/dev/ttyUSB2
查看模块返回结果:cat /dev/ttyUSB2
查看ril加载日志:adb logcat -b radio -v time -d