迅為干貨 | Linux系統移遠EC20 4G模塊移植方法


 

硬件平台:迅為i.MX6Q開發板

 

 

 

1. 4G網絡連接

對於嵌入式Linux而言,4G網絡連接是一個比較容易實現的功能,大多數的4G模塊接口都是MiniPCIE接口,但是深入了解一下就會發現,4G模塊的通信接口都是USB,所以4G模塊的驅動就是USB驅動,只要USB驅動正常,4G模塊在硬件上就能正常通信。下面看一下4G模塊的硬件原理圖:

 

 

 

 

 

在原理圖中,U25是4G模塊的MiniPCIE接口,然后通信引腳會接到U15HUB芯片上,所以4G模塊會被識別成USB設備,CON5SIM卡接口,在使用4G模塊時,需要先插入SIM卡。在i.MX6UL終結者開發板上使用的EC20 4G模塊,如圖 1.3所示:

 

 

 

 

 

2. EC20 4G模塊配置

 

2.1. 添加USB設備信息

要使用EC20 4G模塊首先需要在Linux內核中添加EC20的USB信息,這樣內核啟動后,才能正確識別EC20 4G模塊。打開Linux內核下的drivers/usb/serial/option.c 文件,添加如下信息:

 

 

 

 

其中第1813行是EC20 4G模塊的USB信息。

2.2. Linux內核配置

添加完EC20 4G模塊的USB信息后,需要修改Linux 內核配置來支持USBNET功能。具體配置如下:

 

 

 

配置如圖 2.2.1所示:

 

 

 

接下來我們還需要使能 USB 串口 GSMCDMA 驅動,配置路徑如下:

 

配置如圖 2.2.2所示:

 

 

 

然后配置ppp,配置路徑如下:

 

 

 

配置如圖 2.2.3所示:

 

配置完成后,重新編譯內核,然后使用新的內核啟動開發板。如果配置成功開發板啟動后會有如圖 2.2.4信息打印:

 

 

可以看出EC20 4G模塊識別成功,並且虛擬出5個USB設備,分別為ttyUSB0~ttyUSB4。

3. EC20 4G模塊聯網測試

 

3.1. PPP軟件包編譯

首先拷貝ppp-2.4.4.tar.gz到Ubuntu下,然后執行下面的命令解壓:

tar -xvf ppp-2.4.4.tar.gz

解壓完成得到ppp-2.4.4目錄,進入ppp-2.4.4目錄如圖 3.1.1所示:

 

 

 

使用configure進行配置,命令如下:

./configure

結果如圖 3.1.2所示:

 

 

配置完成后,使用下面的命令進行編譯:

make CC=arm-linux-gnueabihf-gcc

“CC=arm-linux-gnueabihf-gcc”指定編譯器,和開發板Linux內核使用同一個編譯器。編譯完成如圖 3.1.3所示:

 

 

 

編譯完成后,分別在chat、pppd、pppdump、pppstats四個目錄下生成chat、pppd、pppdump、pppstats可執行文件,用於后面的4G模塊聯網測試。

3.2. EC20 4G模塊聯網測試

首先安裝好EC20 4G模塊、天線和SIM卡,如圖 3.2.1所示:

 

 

 

開發板准備好后啟動Linux系統,待系統啟動后,進入/etc目錄,然后創建ppp目錄,具體命令如下:

cd /etc  //進入etc目錄

mkdir ppp //創建ppp目錄

目錄創建完后,使用U盤將上一節編譯的chat、pppd、pppdump、pppstats四個可執行文件拷貝到/etc/ppp目錄下,如圖 3.2.2所示:

 

 

然后在/etc/ppp目錄下創建pap-secrets文件,使用下面命令:

 

 

輸入如下內容:

 

 

 

4G信號在通信時候有一個密碼的比對,密碼對了就可以通信了。上面顯示用戶是card,密碼是card

然后創建新文件夾peers,命令“mkdir peers”。進入peers文件夾,創建wcdma文件,命令如下:

touch wcdma

vi wcdma

輸入如下內容:

  

# /etc/ppp/peers/wcdma# This is pppd script for China liantong# Usage: root>pppd call wcdma

hide-password

noauth

connect '/etc/ppp/chat -s -v -f /etc/ppp/peers/wcdma-chat-connect'

disconnect '/etc/ppp/chat -s -v -f /etc/ppp/peers/wcdma-chat-disconnect'

debug

/dev/ttyUSB2

115200

defaultroute

noipdefault

novj

novjccomp

noccp

ipcp-accept-local

ipcp-accept-remote

local

lock

dump

nodetach

user "card"

password "card"

crtscts

remotename 3gppp

ipparam 3gppp

usepeerdns

 

 

需要注意的是使用/dev/ttyUSB2設備節點文件。
“user "card"”和“password "card"”對應了pap-secrets文件中的用戶名和密碼。
創建wcdma-chat-connect文件:

touch wcdma-chat-connect

vi wcdma-chat-connect

內容如下:

 

 

 

 

 

在這里 OK \rAT+CGDCONT=1,"IP","3gnet",,0,0       OK-AT-OK ATDT*99#這兩句話會根據移動聯通或者是電信而變化,這里用的是移動4G。
創建wcdma-chat-disconnect文件:

touch wcdma-chat-disconnect

vi wcdma-chat-disconnect

內容如下:

 

 

 

所需文件創建完成后,就可以進行聯網測試了。

 

首先關閉eth0設備,因為和EC20 4G模塊有沖突,同時只能使用一個設備。命令如下:

ifconfig eth0  down

然后在/etc/ppp目錄下輸入指令:

./pppd call wcdma &

結果如圖 3.2.3所示:

 

 

上圖表示聯網成功后的IP地址為10.47.135.182,使用ifconfig命令查看結果如圖 3.2.4:

 

 

 

這時使用ping命令查看能夠ping通外網,命令如下:

ping 202.108.22.5 -c 4

“-c”選項指定ping網絡的次數。“202.108.22.5”是百度的IP地址,結果如圖 3.2.5:

 

 

 

發現不能ping通外網,願意是因為DNS沒有設置對,在etc下有一個文件resolv.conf。這個文件是用來放DNS的。就是這個里面的域名沒有設置對。然而在eth0的運行腳本里強制性的把這個文件復制為了192.168.1.1 。這就造成即便在這里文件里設置上正確的DNS,再開機后也會發現這個文件里已經是192.168.1.1了。這是因為eth0,是開機自啟動的。
我們在/etc目錄下新建一個文件resolv.conf_back:

touch resolv.conf_back

vi resolv.conf_back

輸入如下內容:

 

nameserver 202.99.160.68nameserver 221.130.33.52nameserver 221.130.33.60nameserver 192.168.1.1

然后在新建一個腳本文件ppp0:

touch ppp0

vi ppp0

輸入如下內容:

 

#!/bin/shifconfig eth0 downcp /etc/resolv.conf_back /etc/resolv.conf/etc/ppp/pppd call wcdma&

修改ppp0文件的執行權限:

chmod 777 ppp0

這里第一步是將eth0關掉,第二步將我們的DNS文件覆蓋到resolv.conf上,第三步運行。然后重新開機,執行ppp0腳本,命令如下:

/etc/ppp0

腳本執行成功后,重新使用ping命令,結果如圖 3.2.6所示:

 

圖片顯示可以正常ping通百度的IP地址。至此EC20 4G模塊就可以正常使用了。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM