新版说明:
1、在这一版中,去除了一些复杂的设置方法,使用户添加新的3G dongle更加的容易。
2、由于采用了不同的3G dongle检验方法,使得原本一些由于dongle的vid和pid相同而引起的冲突得以解决,可支持更多的3G dongle。
一、准备工作
1、编译一个eng版本的系统,烧到pad上。
2、在ubuntu系统电脑下,用adb连接pad。
3、在adb下,执行
$ su (如果己经是root用户,可省过这一步)
[email protected]:/ # busybox vi init.nufront-ns115.rc
在打开的文档中,
用#号注释掉下面这段:
#service ril-daemon /system/bin/rild -l /system/lib/libreference-ril.so -- -d /dev/ttyACM1
# 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 log
保存退出。
4、重启系统
[email protected]:/ # reboot
二、确定3G dongle的vid和pid
重启后重新用adb连接,在pad上插入3G dongle.
[email protected]:/ # cd /sys/class/usb_device/usbdev1.x/device/
其中的x为usb_device下的最大数字的目录。
[email protected]:/sys/class/usb_device/usbdev1.x/device # cat idVendor
12d1
可读到vid;
[email protected]:/sys/class/usb_device/usbdev1.x/device # cat idProduct
1446
可读到pid;
假设这里你读到的vid是12d1, pid是1446。
三、查看是否可以用脚本生成modem的tty设备
[email protected]:/ # usb_modeswitch_arm -I -W -s 10 -c "/etc/ppp/usb_modeswitch.d/12d1:1446" -v 12d1 -p 1446
[email protected]:/ # ls /dev/ttyUSB*
如果己经生成了/dev/ttyUSBn (n可能为0,1,2,3 ...)设备表示成功生成了tty设备,如果没有则需要修改kernel代码适配。
四、修改kernel代码,(如果上一步成功生成了tty设备,则跳过这一步)
1)将该新转换后的dongle产品Vid和Pid加入到kernel目录下的 drivers/usb/serial /option.c文件中的 option_ids数组中,
加入方式为{ USB_DEVICE(Vendor ID, Proc ID) }
2)重新编译kernel后,可用adb的方式把新kernel push到pad上根目录下取代原来的uImage文件。之后重启,重复新三步,应能产生tty设备。
五、查找AT端口和Data端口(确保在此之前己经可以在/dev下产生ttyUSBn的设备)
1)依次对各个/dev/ttyUSBn(n可能为0,1,2,3 ...)设备做下面的操作。
[email protected]:/ # cat /dev/ttyUSB0 &
[1] 7438
[email protected]:/ # echo "AT\r" > /dev/ttyUSB0
AT
OK
AT
OK
[email protected]:/ # echo "AT+CGMM\r" > /dev/ttyUSB0
AT+CGMM
E1750
OK
[email protected]:/ # kill 7438
[1] + Terminated cat /dev/ttyUSB0
如果执行完 echo "AT\r" > /dev/ttyUSBn的命令后,能够如上正确返回OK,则表示是一个可用的端口,则记录下来,以备后用。
上面发送AT+CGMM返回的E1750就是所插入3G dongle的设备编号。记下这个编号以备后用。
2)这里假设你得到的可用的ttyUSBn设备为ttyUSB0和ttyUSB2两个端口。在终端执行
[email protected]:/ # busybox vi /system/etc/ppp/modem_config
在打开的文件中添加
E1750 12d1:1446 /dev/ttyUSB0 /dev/ttyUSB2 0
保存退出。
这里E1750为设备编号,/dev/ttyUSB0表示AT端口,/dev/ttyUSB2表示Data端口,0表示是wcdma的3G dongle. (如果是cdma的
3G dongle设为1)
(格式为在每一个字串中间使用一个空格分隔)
3)恢复第一步中注释掉的rild的代码
[email protected]:/ #busybox vi init.nufront-ns115.rc
在打开的文档中,去掉#号:
service ril-daemon /system/bin/rild -l /system/lib/libreference-ril.so -- -d /dev/ttyACM1
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 log
保存退出。
4)重启pad
如果重启后如果只能看到网络信号,但一直没有3G图标,说明AT端口和Data端口设反了,需要重新修改
busybox vi /system/etc/ppp/modem_config,修改AT端口和DATA端口的顺序为
E1750 12d1:1446 /dev/ttyUSB2 /dev/ttyUSB0 0
保存退出重启。
此时应己可上网。
六、修改配置文件
将上面可用的内容写入Android的代码中
device/nufront/common/pre-built/ppp_cfg/modem_config文件中。
编译Android即可。