4G网卡驱动调试-ec20
4G網(wǎng)卡驅(qū)動(dòng)調(diào)試分三步走:
一、基本概念
USB 部分的功能接口
APN
二、驅(qū)動(dòng)移植
USB Driver
GobiNet Driver 或者 QMI WWAN
PPP 撥號(hào)配置
三、RIL 移植
RIL Driver Integration
抓取 Android Log
RIL 移植
吃顆定心丸:
4G 模塊都是 MiniPCIE 接口的,包括很多 4G 模塊都是 MiniPCIE 接口的。但是研究一下就會(huì)發(fā)現(xiàn),這些 4G 模塊雖然用了MiniPCIE 接口,但是實(shí)際上的通信接口都是 USB,所以 4G 模塊的驅(qū)動(dòng)就轉(zhuǎn)換為了 USB 驅(qū)動(dòng)。而這些 4G模塊廠商都提供了詳細(xì)的文檔講解如何在 Linux 下使用 4G 模塊,以及如何修改 Linux 內(nèi)核加入 4G 模塊驅(qū)動(dòng)。
一、基本概念
Quectel 3G/4G模塊(UMTS/HSPA/LTE)的 USB 部分包括了幾個(gè)不同的功能接口。
USB Serial
ttyUSB0 代表 DM ttyUSB1 代表 GPS NMEA (GPS導(dǎo)航設(shè)備統(tǒng)一的RTCM標(biāo)準(zhǔn)協(xié)議)信息輸出 ttyUSB2 代表 AT commands ttyUSB3 代表 PPP 連接GobiNet
在移植了 GobiNet 驅(qū)動(dòng)后,會(huì)產(chǎn)生一個(gè)網(wǎng)絡(luò)設(shè)備和一個(gè) QMI channel。 網(wǎng)絡(luò)設(shè)備叫做 ethX(在內(nèi)核版本2.6.39前叫做 usbX)QMI channel 叫做 /dev/qcqmiX 的節(jié)點(diǎn)。 網(wǎng)絡(luò)設(shè)備用來進(jìn)行數(shù)據(jù)傳輸,QMI 通道用來進(jìn)行 QMI 信息交互。 Qualcomm Gobi is a family of embedded mobile broadband modem products by Qualcomm. Gobi technology was designed to allow for any product with the embedded solution toconnect to the internet anywhere a wireless carrier provides data coverage. One of the more notable products that contain a Gobi modem is the iPhone 4 for Verizon, which contains a MDM6600?, however it does not take advantage of the support for HSPA+QMI WWAN
當(dāng)移植了 QMI WWAN 驅(qū)動(dòng)后,驅(qū)動(dòng)將會(huì)創(chuàng)建網(wǎng)絡(luò)設(shè)備和 QMI channel,網(wǎng)絡(luò)設(shè)備被稱作 wwanX,QMI 通道被命名為 /dev/cdc-wdmX。 網(wǎng)絡(luò)設(shè)備用來進(jìn)行數(shù)據(jù)傳輸,QMI 通道用來進(jìn)行 QMI 數(shù)據(jù)交互。CDC ACM
在移植完了 CDC ACM 驅(qū)動(dòng)后,將會(huì)在 /dev 下創(chuàng)建如下節(jié)點(diǎn)
USB 的 CDC 類是 USB 通信設(shè)備類 (Communication Device Class)的簡(jiǎn)稱。 CDC 類 是 USB
組織定義的一類專門給各種通信設(shè)備(電信通信設(shè)備和中速網(wǎng)絡(luò)通信設(shè)備)使用的 USB 子類。
APN 指一種網(wǎng)絡(luò)接入技術(shù),是通過手機(jī)上網(wǎng)時(shí)必須配置的一個(gè)參數(shù),它決定了手機(jī)通過哪種接入方式來訪問網(wǎng)絡(luò)。
二、驅(qū)動(dòng)移植
1、[KERNEL]目錄下進(jìn)行配置
make menuconfig
1.1 USB Driver Configure
Device Drivers --->[*] USB support ---><*> USB Serial Converter support[*] USB Generic Serail Driver[*] USB Driver for GSM and CMDA modems1.2 USB Driver Configure
Device Drivers --->[*] USB support ---><*> USB Modem (CDC ACM) suppor1.3 PPP Configure(我是全部選)
Device Drivers --->[*] Network device support ---><*> PPP (point-to-point protocol) support<*> PPP support for async serial ports<*> PPP support for sync tty ports<*> PPP Deflate compression1.4 查看是否配置hi3751v810_arm64_android_defconfig:
CONFIG_usb_usbnet=y CONFIG_USB_SERAIL=y CONFIG_USB_SERAIL_OPTION=y2、添加 USB 設(shè)備信息
在 Linux 內(nèi)核中添加 ec20的 USB 設(shè)備信息,因?yàn)槲覀兦懊嬲f了,ec20-4G 模塊用的 USB 接口。打開 Linux 源碼的 drivers/usb/serial/option.c 文件,找到 options_ids 數(shù)組,然后在里面添加 ec20的 PID 和 VID, 要添加的內(nèi)容如下,該內(nèi)容由產(chǎn)商提供。
ec20支持 ECM 接口,可以通過 ECM 接口輕松聯(lián)網(wǎng),如果要使用 ECM 接口的話需要修改 drivers/usb/serial/option.c 文件里面的 option_probe 函數(shù)。找到此函數(shù),然后在里面輸入如下內(nèi)容:
繼續(xù)在 drivers/usb/serial/option.c 文件里面找到 option_1port_device 結(jié)構(gòu)體變量,在里面加入休眠后喚醒接口,如圖所示:
打開 drivers/usb/serial/usb_wwan.c 文件,在usb_wwan_setup_urb函數(shù)中添加零包處理代碼,完成后的 usb_wwan_setup_urb 函數(shù)如下所示,就是要添加到 usb_wwan_setup_urb 函數(shù)里面的零包處理代碼。
移植的時(shí)候最好先控制變量,第一步只移植 USB Serial Driver 部分。完成這部分的移植后 /dev/下就應(yīng)該生成 ttyUSB0-ttyUSB4 。一次添加的東西多了如果出現(xiàn)問題不好定位問題出現(xiàn)的地方。
三、RIL 移植
1、打包4G的一些so庫等信息相關(guān)文件到系統(tǒng)中將下面幾個(gè)文件打包到系統(tǒng)中,確保系統(tǒng)編譯完成后,文件出現(xiàn)在對(duì)應(yīng)的目錄中。
注:
(device/hisilicon/bigfish/etc/4G/libreference-ril-ec20.so: 該目錄下的4G模塊*.so庫)
(/vendor/lib64/libreference-ril-ec20.so \ 復(fù)制到系統(tǒng)的/vendor/lib64第三方庫下面)
2、hisilicon3751\device\hisilicon\Hi3751V811\device_property.mk添加修改
PRODUCT_PROPERTY_OVERRIDES += \rild.libpath=/vendor/lib64/libreference-ril-ec20.so PRODUCT_PROPERTY_OVERRIDES += \ro.telephony.default_network=9
3、修改:device\hisilicon\Hi3751V811\manifest.xml
4、修改設(shè)備文件權(quán)限
rk:
文件路徑:system/core/rootdir/ueventd.rc,在其中添加如下幾行:
注意:如果在系統(tǒng)中設(shè)備的序號(hào)是其它值,則應(yīng)按照上述格式修改其權(quán)限。例如,如果模塊的某個(gè)端口在系統(tǒng)中為/dev/ttyUSB10,則應(yīng)添加:/dev/ttyUSB10 0660 radio radio
Hisi:
文件路徑:hisilicon3751\device\hisilicon\bigfish\etc\ueventd.bigfish.rc
調(diào)試遇到的問題:
a、沒有生成ttyusb*這個(gè)節(jié)點(diǎn)
判斷id是否存在,插入ec20模塊,使用在打印終端使用命令:lsusb查看,然后拔掉在查看一次。如下
發(fā)現(xiàn)有ec20的id信息,說明能識(shí)別到模塊,再配置有沒有問題。添加如下的配置:
編譯下載后:節(jié)點(diǎn)出來了
ping一下百度:測(cè)試ok!!!
130|Hi3751V811:/ # ping www.baidu.com PING www.a.shifen.com (163.177.151.110) 56(84) bytes of data. 64 bytes from 163.177.151.110: icmp_seq=1 ttl=54 time=29.3 ms 64 bytes from 163.177.151.110: icmp_seq=2 ttl=54 time=30.3 ms 64 bytes from 163.177.151.110: icmp_seq=3 ttl=54 time=28.4 ms 64 bytes from 163.177.151.110: icmp_seq=4 ttl=54 time=35.5 ms 64 bytes from 163.177.151.110: icmp_seq=5 ttl=54 time=27.7 ms --- www.a.shifen.com ping statistics --- 30 packets transmitted, 30 received, 0% packet loss, time 29040ms rtt min/avg/max/mdev = 26.741/28.988/36.052/2.371 ms總結(jié)
以上是生活随笔為你收集整理的4G网卡驱动调试-ec20的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用纯JS还原小时候游戏厅里的水果机
- 下一篇: Symbol mc1000开发体验