由于3G無線上網卡工作模式相同,故其移植也大多雷同,故本次開發同樣適用于其他嵌入式開發板,如DM6446,ARM等等。同樣,也適用于其他聯通、移動或電信的3G上網卡,尤其是華為的上網卡,如最常用的華為E160, E160G, E169, E180, E230, E270(+), E280, E630, E870, E1550, E1612, E1662, E1690, E1692, E1750, E1752, EC168C, K3765, K4505, K4605, MTE WM610, R201, K4605, K3765, K4505。中興的ZTE MF620,MF622等等等等。
其他支持的上網卡型號參見:http://www.draisberghof.de/usb_modeswitch/
建議:現在PC機上安裝usb_modeswitch和libusb,首先確保PC上的linux能夠順利撥號,再將其移植到開發板上。
內核:
需要有以下模塊:option usbserial usbstorage
主要是要在編譯內核的時候選中
Device Drivers
USB Support
USB Serial Converter Support
USB Serial Converter Support(選中)
USB Generic Serial Driver
否則軟件pppd執行的時候可能會失敗。
#make modules?????????????????????? //編譯外掛模塊
#make modules_install??????????? //安裝模塊
模塊編譯完后應將其復制到開發板上,并執行以下命令,否則會報找不到modules.dep
#/sbin/depmod –a??????????????????? //創建模塊的鏈接
軟件3個:libusb、usb_modeswitch、pppd(含chat)和1個數據包(純文本):usb-modeswitch-data
libusb源碼下載:http://sourceforge.net/projects/libusb/files/libusb-1.0/
usb_modeswitcch下載:http://www.draisberghof.de/usb_modeswitch/
usb-modeswitch-data:http://www.draisberghof.de/usb_modeswitch/?? 這個數據包包含了usb_modeswitch所有支持的3G上網卡的配置文件,對于本次開發,取出其中文件名為12d1:1446的文本文件即可。
基本步驟:
1.在開發板上USB口插入3G上網卡,注意DVS365開發板要短接J1 2和3管腳才啟用USB host模式,否則USB不供電。
2.在開發板上輸入lsusb會出現以下結果,說明開發板與3G上網卡硬件物理上連接成功,記下12d1:1446這個數字,后邊用。
antique@dm365:~# lsusb
Bus 004 Device 002: ID 12d1:1446 HUAWEI XXXX(省略若干)
3.在主機上交叉編譯usb_modeswitch,因為其要使用libusb,故也要交叉編譯libusb。(見后文)
4.將主機交叉編譯產生的usb_modeswitch單文件、lib文件夾、12d1:1446文件復制到開發板/home目錄下上。
5.執行usb_modeswitch將3G上網卡U盤模式轉換為modem模式
antique@dm365:/home#:./usb_modeswitch -c 12d1\:1446
屏幕會顯示一堆模式轉換信息,之后會顯示成功
6.檢查是否轉換成功,執行lsusb,發現1446變為1001,表示轉換成功。
antique@dm365:/home# lsusb
Bus 004 Device 002: ID 12d1:1001 HUAWEI XXXX(省略若干)
7.硬件問題都解決了,開始撥號吧:(電信的撥號腳本,聯通、移動的應該會變化,請google)
antique@dm365:/home# pppd connect 'chat -v? "" "AT" "OK" "ATZ" "OK" "ATDT#777 CONNECT"' user card password card /dev/ttyUSB0 115200 nodetach noauth nocrtscts modem noipdefault debug usepeerdns defaultroute ipcp-accept-local noccp
屏幕會顯示撥號信息,成功獲取到的IP和DNS
8.另外啟動一個shell,執行
antique@dm365:/# route del default
antique@dm365:/#route add default dev ppp0
嘗試ping 8.8.8.8,應該就通了。
注意:如果為其他3G上網卡,只需要將相應的配置文件復制到板子上。如本例為12d1:1446.
基本步驟第3步交叉編譯過程:
A.交叉編譯Libusb
解壓并進入libusb目錄,建立子目錄install用于存放最后生存的庫文件與頭文件。
[root@libusb-0.1.12]# mkdir install
配置并生成Makefile文件
[root@libusb-0.1.12]# ./configure --build=i686-linux --host=arm-linux --prefix=/home/libusb-0.1.12/install
[root@libusb-0.1.12]# make
[root@libusb-0.1.12]# make install
此時install目錄下應有LIB了
B.交叉編譯usb_modeswitch
(1)、修改Makefile文件????? CC = arm_v5t_le-gcc
(2)、將libusb里的庫頭文件拷到交叉編譯器的include和lib目錄下,或者直接在Makefile文件里直接加上編譯選項指令庫的路徑即可如下:$(PROG):&(OBJS)
&(CC) –o $(PROG) &(OBJS) &(CFLAGS) –I /home/libusb-0.1.12/install/include –L /home/libusb-0.1.12/install/lib
(3)、make
此時應產生usb_modeswitch單文件了
將Lib和usb_modeswitch按照基本步驟第四步復制到開發板上。
?
評論
查看更多