隨著3G和4G網絡的普及,在嵌入式產品中越來越多的使用到他們,特別是在沒有以太網的環境中,使用3G或者4G無線模塊能夠有效的解決網絡通訊問題。英創公司也針對各種型號的主板,推出了通用的3G和4G的通訊方案,這篇文章主要總結了各種在主板上評估過的3G和4G模塊,以及使用方法和常見的一些問題。
基礎介紹
英創公司支持的為MINI-PCIe接口的全長或者半長尺寸模塊,3G和4G模塊只使用了MINI-PCIe接口中的供電、復位和USB信號,所以這種接口的模塊在英創公司所有型號的主板上都能夠適用,并且為了方便客戶評估,英創公司在ESMARC通用評估底板上已經增加了接口,可以直接和評估底板連接測試。MINI-PCIe接口的模塊如下圖:
ESMARC系列主板和MINI-PCIe接口模塊
目前測試過的3G和4G模塊整理如下:
型號 | 廠商 | 網絡制式 | Vendor ID | Product ID | Modem口 |
MU709S-2 | 華為 | 3G,聯通WCDMA | 0x12d1 | 0x1c25 | /dev/ttyUSB0 |
MC2716 | 中興 | 3G,電信CDMA2000 | 0x19d2 | 0x5238 | /dev/ttyUSB0 |
ME909S-821 | 華為 | 4G,全網通 | 0x12d1 | 0x15c1 | /dev/ttyUSB1 |
ME3630 | 中興 | 4G,全網通 | 0x19d2 | 0x1476 | /dev/ttyUSB1 |
EC20 | 移遠 | 4G,全網通 | 0x2c7c | 0x0125 | /dev/ttyUSB1 |
無線模塊和英創公司主板在物理上是通過USB虛擬串口進行通訊的,而軟件上通過ppp協議轉換提供給客戶一個標準的網絡設備。英創公司在主板中已經添加了3G和4G模塊的驅動(USB虛擬串口驅動)和ppp協議的支持。板卡中的驅動是以模塊(usbserial.ko)的形式提供,usbserial.ko是一個通用的驅動,已經集成了大部分常用模塊的支持。驅動加載成功后系統會生成多個虛擬串口,他們分別有不同的用處,比如作為數據通訊口(即modem口)、響應AT指令的設備口以及傳輸GPS信息的設備口等,生成USB虛擬串口后通過ppp調用modem口撥號即可連接上網,需要注意的是3G模塊的modem口一般都為/dev/ttyUSB0,而4G模塊的modem口一般為/dev/ttyUSB1。
撥號使用的文件在/etc/ppp/peers/目錄下,英創公司已經編寫好了3G和4G的撥號文件,客戶只需要選用對應的撥號文件即可,本文使用的是4G模塊MU909S-2作為例子,所以使用/etc/ppp/peers/目錄下的lte-connect-script文件,對于4G來說,移動、聯通和電信的SIM卡都可以使用這一個撥號文件。如果客戶使用的是3G模塊,就需要根據不同的網絡制式選擇腳本,如果是聯通的3G,需要使用wcdma-connect-script這個撥號文件,如果是使用的電信3G,就需要使用cdma-connect-script這個撥號文件,若客戶有其他特殊的要求,可以根據英創公司提供的這三個撥號文件進行修改,滿足自己的需要,下表列出了網絡制式和撥號文件的對應關系:
無線信道 | 網絡制式 | 對應撥號文件 |
3G | 聯通CDMA | /etc/ppp/peers/wcdma-connect-script |
3G | 電信CDMA 2000 | /etc/ppp/peers/cdma-connect-script |
4G | 通用 | /etc/ppp/peers/lte-connect-script |
使用步驟
接下來以4G模塊MU909S-2作為例,說明具體的使用步驟:
1、插入無線模塊,上電啟動英創Linux主板。在沒有加載驅動的時候,會被識別成CDROM或者USB移動存儲設備。
2、加載驅動模塊,需要代入上面的vender id和product id,英創Linux主板的驅動模塊都放在/lib/modules/<kernel-version>/下面,例如使用ESM6800加載驅動模塊,因為ESM6800的內核版本為4.1.15,輸入命令為:insmod /lib/modules/4.1.15/usbserial.ko vendor=0x12d1 product=0x15c1,注意如果使用的主板為ESM7000,ESM6802,ESM6800H或者ESM6800V系列的板卡,可以使用命令:modprobe usbserial vendor=0x12d1 product=0x15c1,不需要代入路徑了,輸入驅動后會自動生成usb虛擬串口,如下:
轉換成虛擬串口
可以看到系統生成了多個USB虛擬串口。注意,如果客戶使用的無線模塊不在上面的表格之中,可以通過模塊的手冊來確定vendor id和product id,或者使用一臺裝有Linux系統的PC,將模塊連接到PC上使用lsusb命令也可以查看到兩個id號。
3、接下來就可以撥號了,輸入命令:pppd call lte-connect-script 使用4G網絡的撥號文件lte -connect-script進行撥號,完成以后,可以使用ifconfig命令查詢,如果成功聯網,會有ppp0的網絡信息。如圖所示:
ppp0節點信息
常見問題
如果撥號后遇到無法生成ppp0節點的情況,客戶可以通過修改撥號文件來查看調試信息,撥號文件中有一行為#nodetch,去掉前面的#,就可以輸出調試信息了,如下圖:
撥號文件內容
再調用ppp撥號,就能看見調試信息了。如果是發現調試信息出現模塊沒有回復指令的情況,可能是由于撥號文件使用的設備節點不是模塊作為modem口的設備,可以通過模塊的手冊來確定作為modem口的設備節點,同時嘗試更改撥號文件中使用的usb虛擬串口設備,比如上圖中使用的是/dev/ttyUSB0,可以更換為/dev/ttyUSB1嘗試。如果是遇到無法建立連接的情況,建議可以檢查天線和SIM卡是否接好。
在生成ppp0節點之后,如果要通過ppp0訪問外網,那么默認網關就需要設置為ppp0節點,客戶可以使用route命令查看當前的默認網關。在沒有默認網關的情況下,ppp撥號成功之后會自動將ppp0設置為默認網關,英創主板可以通過把userinfo.txt中DefaultGateway這一項的值填為0,來取消設置默認網關。如果主板在撥號的時候已經有了默認網關,或者需要設置多個網關,可以參考文章:《Linux主板多網絡的優先級設置》進行設置。
成都英創信息技術有限公司 028-8618 0660