Platform:rk3399
Os:android7.1
Kernel:4.4
1.1 在內核中添加USB串口驅動和USB網卡驅動
通過指令make ARCH=arm64 menuconfig,配置內核:
添加 USB 串口驅動:
device drivers--> usb support--> usb serial converter support--> USB driver for GSM and CDMA modems
添加 USB 網卡驅動
device drivers--> Network device support--> usb Network Adapters--> Mulil-purpose USB Networking Framework
總之,要確保源文件中的 option.c 及其相關的部分(USB 串口驅動),cdc_ether.c 及其相關部分
(USB 網卡驅動)參與編譯即可。
1.2 在內核中添加PPP組件
device drivers--> Network device support--> ppp support--> ppp filtering ppp support for async serial ports ppp support for sync tty ports ppp deflate compression ppp BSD-compress compression
1.3 在內核驅動源文件中添加模組相關的信息:
在內核驅動源文件中添加模組相關的信息:USB 網卡驅動可以自動識別到 GOSUNCN
模組,因此,其對應的 cdc_ether.c 文件中不需要添加任何內容。但是 USB 串口驅動不能
自動識別,必須要添加 GOSUNCN 模組的設備信息到源文件 option.c 中。
文件路徑:/kernel/drivers/usb/serial/option.c
GM510 的 VID 和 PID 分別是 0x305a 和 0x1415, 添加如下:
static const struct usb_device_id option_ids[] = {
。。。。
{ USB_DEVICE(ZTE_GM510_VENDOR_ID, ZTE_PRODUCT_GM510_X) },//wmc add by ZTE GM510
。。。。
}
添加黑名單信息,上面添加模組信息時只添加了設備的 VID 和 PID,沒有附加任何額外的端口信息,這樣會導致設備的網卡也被加載成為 USB 串口。以下提供一種類似於黑名單的方式,在 option_probe 函數中,將網卡對應的端口加入黑名單,防止 USB 網卡被加載成為 USB 串口。
在 ECM 端口模式下,GM510 網卡對應的端口為 0、1,請將以下代碼添加到option_probe 函數中。
1.4在Android系統的init.rc中添加服務
在以下路徑\system\core\rootdir\init.rc中修改:
ril-daemon 服務(添加前注釋掉原來的 ril-daemon 服務)
pppd_gprs 服務
1.5修改分配ip地址是掛接到usb0:
沒修改之前,ip地址是掛接到eth0上,都沒有接網線,這樣肯定不對。
kernel\drivers\net\usb\usbnet.c中:
eth改為usb。用ifconfig查看ip地址:
1.6打包相關文件到系統中
以上文件是模組廠提供的,只需要預置到系統對應的文件下就可以了。
1.7 apn配置
一般是修改apns-conf.xml文件,一般常用的卡比如移動、聯通、電信都是有已經配置好在里面了。特殊的卡才需要自己再繼續添加。
1.8 buil.prop里面設置網絡的優先等級
ro.telephony.default_network=22
這個對應frameworks\base\telephony\java\com\android\internal\telephony\RILConstants.java
2、調試
此時,我們的基本適配工作就做完了。編譯系統並燒寫。首先可以來檢查我們的4G模塊是否被正確識別到。可以查看內核打印來檢查。
通常kernel啟動時候打印以上信息,說明驅動沒問題了。
抓取Radio log的方法:adb logcat -b radio -v time,如果上不了網,可以通過這個打印信息來分析問題。
幾條調試可能用到的AT指令:
AT+CPIN? //SIM 卡狀態
AT+CSQ //信號強度
AT+ZPAS? //注冊狀態
echo -e "AT+ZSNT?" > /dev/ttyUSB1//查看模塊是什么模式
echo -e "AT+ZSNT=0,0,0" > dev/ttyUSB1//這個是自動模式
注意:模塊要設置成自動模式才可以用。
總結:按照以上的步驟來調試,sim卡裝上移動卡和聯通卡發現都可以上網,但是裝上電信物聯卡就不行,經了解原來電信物聯卡具有綁定設備的功能,也就是此卡已經綁定之前在用的ec20模塊,要在其他設備上使用的話,需要解鎖才可以。果然,解鎖了之后,插上馬上就有信號出來了。
參考:https://www.cnblogs.com/chorm590/p/rk3128_me3630-w.html
官方文檔:高新興物聯模組Android系統RIL適配參考_V1.6-20190315