linux上4G模塊是比較常用的,剛開始移植4G模塊驅動的時候,廢了比較多心思和時間,但也收獲了很多,經過這個過程更加認識到4G模塊在linux上的工作。
網上資料也比較多,但是比較雜,經過一番折騰,所以想寫一個比較全面的關於linux上移植4G模塊驅動的方法
關於4G模塊常見的品牌與型號:
品牌
|
型號
|
市場價格
|
芯片組
|
狀態
|
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。
板子控制終端輸入:lsusb
如下:
就會識別到產品的id ,或者插入模塊的時候,板子輸出的一堆信息,里面也會可以找到pid和vid
二、配置內核與編譯
配置CDC驅動,依次選擇

還有一個重要的設置,就是關於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匹配函數中修改添加匹配。
三、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 ,等待編譯內核完成。
四、識別usb設備
經過以上的步驟,已經能夠正常識別usb ,這里來是第一步也是關鍵。以為識別出usbs才能繼續下面的
插入模塊,會虛擬出0~4五個usb
查看/dev下面是否生成設備節點:
各端口功能描述如下: