我用的是linux 3.2.0的核心,核心支援ECM驅動,me909直接就可以驅動起來,為了多一種選擇,我把ttyUSB0~ttyUSB4都驅動起來了。過程參考《華為子產品Linux核心驅動內建指導-(V100R001_V2.0,Chinese).pdf》,這個文檔講的很清楚,一步一眇,很容易就把華為的各種子產品驅動起來了。
https://download.csdn.net/download/wandersky0822/11457391 ME909的USB 描述符官方文檔
[ 31.825347] usb 1-1: new high-speed USB device number 2 using musb-hdrc
[ 31.966918] usb 1-1: New USB device found, idVendor=12d1, idProduct=15c1
[ 31.974060] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 31.981689] usb 1-1: Product: HUAWEI Mobile V7R11
[ 31.986724] usb 1-1: Manufacturer: Huawei Technologies Co., Ltd.
[ 31.993103] usb 1-1: SerialNumber: 0123456789ABCDEF
[ 32.016326] cdc_ether 1-1:2.0: usb0: register 'cdc_ether' at usb-musb-hdrc.1-1, CDC Ethernet Device, 02:1e:10:1f:00:00
[ 32.045013] option 1-1:2.2: GSM modem (1-port) converter detected
[ 32.066101] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
[ 32.082122] option 1-1:2.3: GSM modem (1-port) converter detected
[ 32.102905] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
[ 32.118896] option 1-1:2.4: GSM modem (1-port) converter detected
[ 32.139709] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2
[ 32.155639] option 1-1:2.5: GSM modem (1-port) converter detected
[ 32.176086] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB3
[ 32.191864] option 1-1:2.6: GSM modem (1-port) converter detected
[ 32.212249] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB4
增加: 首先需要ifconfig usb0 up,先使能usb0網卡。
在指令行視窗輸入
echo "AT^NDISDUP=1,1">/dev/ttyUSB0
發完這條指令後,估計應該等一兩分鐘才會連上移動網絡,可以通過
echo "AT^NDISSTATQRY?">/dev/ttyUSB0
來檢視連接配接情況,如果連接配接上了,輸入下面指令
cat /dev/ttyUSB0
就會看到如下資訊,(IPV4連接配接狀态,IPV6斷開狀态)
^NDISSTATQRY: 1,,,"IPV4",0,0,,"IPV6"
這時就可以使用udhcpc指令來自動獲得IP位址
~ # udhcpc -i usb0
程式運作正常,列印如下:
udhcpc (v1.20.0) started
Setting IP address 0.0.0.0 on usb0
Sending discover...
Sending select for 10.61.28.33...
Lease of 10.61.28.33 obtained, lease time 518400
Setting IP address 10.61.28.33 on usb0
Deleting routers
route: SIOCDELRT: No such process
Adding router 10.61.28.34
Recreating /etc/resolv.conf
Adding DNS server 183.230.126.225
Adding DNS server 183.230.126.224
此時可以通過DHCP指令來檢視ip位址。
echo "AT^DHCP?">/dev/ttyUSB0
檢視傳回值cat /dev/ttyUSB0
AT^DHCP?
^DHCP: 211C3D0A,FCFFFFFF,221C3D0A,221C3D0A,E17EE6B7,E07EE6B7,150000000,150000000
OK
說明已經獲得到IP位址了,此時你就可以盡情的在終端中ping外網了。
注,在我調試的過程中,我發現一個神奇的位址,華為4G子產品的USB接口描述符居然會根據接入系統的不同,識别不不同的接口描述符,因為之前我已經把ME909在STM32F437上調試通過了,是以沒有在意這個事情,果然我在linux識别出的接口不一樣,也不知道華為使用了什麼技術,他怎麼會判斷USB接口的是什麼作業系統, 我的STM32 USB HOST他又會歸到哪一類裡呢?
後記:最近比較火的EC20,驅動與華為的不太一樣,我沒有測試,隻是根據網上查到的一些資料做了分析,EC20好像也支援ECM模式,通過此指令就可以切換工作模式,
echo -e “AT+QCFG=“usbnet”,1\r\n” > /dev/ttyUSB2指令,裝置傳回OK
但是我在《Quectel_EC20_R2.1_AT_Commands_Manual_V1.0》沒有找到類似AT+QCFG=“usbnet”這樣的指令,是以 我還是感覺EC20是通過gobinet驅動比較正常一些,gobi是高通的技術,可以看出EC20采用的高通的方案。甚至有些移遠的子產品VID就是05C6,就是高通,是以如果用EC20的話還是老老實實的搞手冊把GOBINET添加進核心比較好,說不定操作起來還更容易些,
以 上隻是我的猜測,沒有實際操作!!