3g模块移植
1.????? 查看3G模塊設備相關信息
1、1將3G卡插入ubuntu系統查看相應的設備信息
#lsusb
對應的設備信息為 廠商設備號(華為12d1) 設備ID(1446) 具體型號為聯通的3G上網卡華為E1750
1、2 添加對應設備ID到內核當中
?
vim linux-2.6.21.x/drivers/usb/serial/option.c
?? #define HUAWEI_PRODUCT_E1750????????????????????? 0x1446
??
在option_ids ?當作新增如下內容
static struct usb_device_id option_ids[] = {
?
{ USB_DEVICE(HUAWEI_VENDOR_ID,HUAWEI_PRODUCT_ E1750) },
?
}
?
2.????? 向linux內核添加3G模塊的驅動(USB轉串口的驅動)和ppp協議的支持,交叉編譯并下載內核到開發板。
3G 模塊驅動加載
由于linux-2.6.21內核支持“USB driver for GSM and CDMA modems”,所以不需要修改代碼,只修改內核配置即可。
在終端輸入:make menuconfig ,出現內核配置界面后選擇:
Device Drivers---→
USBsupport---→
<*>USB SerialConverter support--→
[*]USBGeneric Serial Driver
???? ?????<*>USB driver for GSM and CDMAmodems
PPP協議的支持
下面進行ppp協議支持的添加(下面所示的幾個選項必選)。
Device Drivers--→
Networkdevice support---→
<*>?PPP?(point-to-point?protocol)?support???
???????????? ?[*]???PPP?multilink?support?(EXPERIMENTAL)????
[*] ?PPP filtering
???????????? ?<*>???PPP?support?for?async?serial?ports??????
??????????? ??<*>???PPP?support?for?sync?tty?ports??????????
????????? ???<*>???PPP?Deflate?compression?????????????????
??????????????<*>???PPP?BSD-Compress?compression?
?
?
完成這些步驟之后,可以進行內核的交叉編譯,退出makemenuconfig,編譯生成的內核映像文件位于當前內核源代碼文件,將生成的內核映像文件下載到板子上。
內核啟動后,會在/dev目錄下生成ppp設備節點。如:
ls -l /dev/ppp?
?
內核啟動后,在開發板USB HOST?口插上3G模塊的USB線,會有打印信息輸出:
usb 1-1: new high speed USBdevice using rt3xxx-ehci and address 4
usb 1-1: Product: Qualcomm CDMATechnologies MSM
usb 1-1: Manufacturer: Qualcomm,Incorporated
usb 1-1: SerialNumber:1234567890ABCDEF
usb 1-1: configuration #1 chosenfrom 1 choice
scsi2 : SCSI emulation for USBMass Storage devices
scsi 2:0:0:0: CD-ROM??????????? WCDMA??? MMC Storage????? 2.31 PQ: 0 ANSI: 2
scsi 2:0:0:0: Attached scsigeneric sg0 type 5
?
3.????? 新增3G 模塊支持
#cd RT288x_SDK/source
#make menuconfig
?
Kernel/Library/DefaultsSelection? --->
? [*]Customize Vendor/User Settings
???? Network Applications? --->
????? [*] 3G connection??
?
?
#cd RT288x_SDK/source
#make menuconfig
Kernel/Library/Defaults Selection? --->
? [*] Customize Busybox Settings
???? Linux System Utilities? --->
????? [*] mdev??
??????? [*] Support /etc/mdev.conf
????????? [*] Support subdirs/symlinks
??????????? [*] Support regular expressionssubstitutions when renaming device
?????? ???[*] Support command execution at deviceaddition/removal
?
USB 總線驅動配置
#cd RT288x_SDK/source
#make menuconfig
Kernel/Library/DefaultsSelection? --->
? [*] Customize Kernel Settings
???? Device Drivers? --->
????? [*] USB support? --->
??????? <*> Support for Host-side USB
??????? [*] USB device filesystem
??????? <*> EHCI HCD (USB 2.0) support
??????? [*] Ralink EHCI HCD support
??????? <*> OHCI HCD support
??????? [*] Ralink OHCI HCD support
?
4. 交叉編譯好工作源代碼ppp-2.4.4,得到pppd和chat
????解壓源代碼包,進入目錄,進行交叉編譯,這里所用的板子的交叉編譯器是:
?????#cd?/home/ppp-2.4.4
????? ?#./configure
????? ?#make?CC=?arm-linux-gcc
撥號所用到的程序就是ppp-2.4.4/pppd下的pppd和ppp-2.4.4/chat下的chat可執行程序,將交叉編譯出來的這兩個應用程序拷貝到開發板?/usr/sbin目錄下,更改其屬性為可執行文件。
?
5. 配置撥號的腳文件
撥號上網需要的配置文件有3個:wcdma,wcdma-chat-connect,wcdma-chat-disconnect(存放位置/etc/ppp/peers)。
1)wcdma配置文件內容
#/etc/ppp/peers/cdma
# This is pppd script for Chinaliantong
# Usage:?? root>pppd call cdma
hide-password
noauth
connect '/usr/sbin/chat -s -v -f/etc/ppp/peers/wcdma-chat-connect'
disconnect '/usr/sbin/chat -s -v -f/etc/ppp/peers/wcdma-chat-disconnect'
debug
/dev/ttyUSB0
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
?
2)wcdma-chat-connect配置文件內容
ABORT "BUSY"
ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT "ERROR"
ABORT "NO ANSWER"
TIMEOUT 120
"" AT
OK \rATZ
OK\rAT+CGDCONT=1,"IP","3gnet",,0,0
OK-AT-OKATDT*99#
CONNECT \d\c
?
3)wcdma-chat-disconnect配置文件內容
ABORT "ERROR"
ABORT "NO DIALTONE"
SAY "\NSending break to themodem\n"
""\k"
""+++ATH"
SAY "\nGood bay\n"
?
4)配置usb_modeswitch.conf
?
首先必須讓開發板識別上網卡,因此,要修改usb_modeswitch.conf,但usb_modeswitch并沒有帶有E1750的配置文件,不像EC169那么方便
在開發板添加/etc/usb_modeswitch.conf 文件添加如下內容
?
#E1750
DefaultVendor= 0x12d1;
DefaultProduct= 0x1446
TargetVendor= 0x12d1
TargetProduct= 0x1001
MessageContent="55534243000000000000000000000011060000000000000000000000000000"
MessageEndpoint=0x01
CheckSuccess=5
?
插上設備執行如下命令
usb_modeswitch -W
在網絡管理器中建立無線連接,OK
?
查看設備節點ls /dev/ttyUSB*,?會發現USB虛擬成三串口,在文件系統節點如下/dev/ttyUSB0,/dev/ttyUSB1, /dev/ttyUSB2?,這說明3G模塊驅動?已經正確添加到內核當中。
我們?跟?3G?模塊交互?主要用的設備節點是?/dev/ttyUSB0。
?
?
5)應用測試:
(1)連接好硬件設備。
(2)執行pppd call wcdma
(3)通過PC機(XP操作系統)遠程登錄到開發板,執行ifconfig:
?查看到ppp0的IP說明撥號成功
(4)ping外網測試
輸入命令:ping www.baidu.com
總結
- 上一篇: 冶金物理化学复习 --- 熔渣的基础理论
- 下一篇: 建站用Windows还是Linux,建站