linux上4G模塊是比較經常使用的,剛開始移植4G模塊驅動的時候,廢了比較多心思和時間,但也收穫了不少,通過這個過程更加認識到4G模塊在linux上的工做。html
網上資料也比較多,可是比較雜,通過一番折騰,因此想寫一個比較全面的關於linux上移植4G模塊驅動的方法linux
關於4G模塊常見的品牌與型號:vim
品牌
|
型號
|
市場價格
|
芯片組
|
狀態
|
HUAWEI
|
ME909s-821
|
210-260
|
海思芯片,只有五模
|
在售
|
HUAWEI
|
ME909s-521
|
400左右,沒用過
|
高通芯片
|
在售
|
中興
|
ME3760
|
260左右
|
中芯微
|
停產
|
中興
|
MW3630
|
210左右
|
高通9x07
|
在售
|
移遠
|
EC20
|
240-290
|
高通9x15
|
在售
|
移遠
|
EC20 V2.0
|
190-240
|
高通9x07
|
在售
|
龍尚
|
8300系列
|
260左右
|
高通9x15
|
停產
|
龍尚
|
U9300系列
|
200左右的區間
|
高通9x07
|
在售
|
確定要知道模塊的產品id和供應商id,即:idVendor idProduct ,通常來講。同一個廠商的模塊vid是同樣的,不一樣的是pid。網絡
在開發板上插入4G模塊,正常的板子,只要能識別usb驅動的,都可以識別到模塊的id。app
板子控制終端輸入:lsusbless
以下:ide
就會識別到產品的id ,或者插入模塊的時候,板子輸出的一堆信息,裏面也會能夠找到pid和vid函數
2、配置內核與編譯ui
配置CDC驅動,依次選擇spa
還有一個重要的設置,就是關於ppp驅動的 有的網上護送須要安裝ppp驅動,可是實際上個人內核已經支持ppp驅動,並且不少內核也會支持,因此只要在make menuconfgi裏面配置好,就不須要再另外安裝ppp驅動,關於另外安裝的p'p'p驅動 能夠參考:https://www.linuxidc.com/Linux/2016-03/129581.htm
在這裏,我只須要配置內核支持ppp就能夠
make menuconfig Device Drivers --->
[*] Network device support --->
// 將這裏面全部的ppp 相關的支持都選上
到這裏,關於內核的配置,已經配置完成,可是還不能make,還須要再usb匹配函數中修改添加匹配。
3、usb匹配列表添加pid vid
若是這路不添加,依然沒法識別,覺得4G模塊做爲usb驅動添加,u's'b匹配的時候須要添加匹配列表;
再kernel目錄:
vim drivers/usb/serial/option.c
關於:ME909s-821
在 static const struct usb_device_id option_ids[]
中添加:
到這裏,make 以後,開發板就可以支持ME909s-821模塊了。
同理,關於MU609,方法同樣:
首先添加vid 我這裏直接修改 廠商的vid 其實就是宏定義而已,能夠不定義,下面你直接添加給值傳入就行。
關於爲何還須要設置:
ME909s-821的端口的賦值,由廠商提供,請《HUAWEIModule USB Interface Descriptor Guide》中的3.7.3節,「MODEM Serial Port 」、「DIAG Serial Port 」、「PCUI Serial Port 」、「Ctrl Serial Port 」、「Serial B Port 」各表格的值
請參考:https://blog.csdn.net/yuzhou_zang/article/details/78286875
這裏說明了 爲何,對於其餘的模塊移植頗有參考意義。
到這裏 ,就能夠直接make ,等待編譯內核完成。
4、識別usb設備
通過以上的步驟,已經可以正常識別usb ,這裏來是第一步也是關鍵。覺得識別出usbs才能繼續下面的
插入模塊,會虛擬出0~4五個usb
查看/dev下面是否生成設備節點:
各端口功能描述以下: