linux4.1.4上移植ME909s-821,MU609 4G模塊驅動

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
在售
等等,我在這裏以移植ME909s-821和MU609模塊爲例;
 
 1、識別pid  vid

  確定要知道模塊的產品id和供應商id,即:idVendor idProduct ,通常來講。同一個廠商的模塊vid是同樣的,不一樣的是pid。網絡

在開發板上插入4G模塊,正常的板子,只要能識別usb驅動的,都可以識別到模塊的id。app

板子控制終端輸入:lsusbless

以下:ide

就會識別到產品的id ,或者插入模塊的時候,板子輸出的一堆信息,裏面也會能夠找到pid和vid函數

2、配置內核與編譯ui

在宿主機的Linux內核源碼根目錄執行如下指令,配置內核。添加USB串口驅動的配置選項:
host$ makeARCH=arm menuconfig
       依次選擇:
       Device Drivers  --->
               USB support  --->
                     <*>   USB Serial Converter support  --->
                            <*>USB driver for GSM and CDMA modems

 

配置CDC驅動,依次選擇spa

       Device Drivers  --->
               Network device support  --->
                     USB Network Adapters  --->
                            <*> Multi-purpose USB NetworkingFramework
                                   <*>  CDC Ethernet support (smart devices such ascable modems) (NEW)
                                   -*-   CDC NCM support
                                   <*>   Huawei NCM embedded AT channel support
                                   <*>   Simple USB Network Links (CDC Ethernetsubset) (NEW)

 

 還有一個重要的設置,就是關於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下面是否生成設備節點:

各端口功能描述以下:

USB0: MODEM:MODEM串口,用於撥號上網
USB1: DIAG:普通串口,用於調試和收集日誌信息
USB2:PCUI:用於應用程序進行AT指令 通訊
USB3:Ctrl:用於eCall業務
USB4:Serial B:用於配合Diag端口用於模塊log收集
使用NDIS協議,在評估板給MODEM端口發送AT指令鏈接4G網絡:
 
到這裏,模塊的已經支持完成,這裏只是舉例兩個模塊me909s-821和mu609,其餘的其實也是同樣的。
相關文章
相關標籤/搜索