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


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

  肯定要知道模塊的產品id和供應商id,即:idVendor idProduct ,一般來說。同一個廠商的模塊vid是一樣的,不同的是pid。

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

板子控制終端輸入:lsusb

如下:

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

二、配置內核與編譯

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

 

配置CDC驅動,依次選擇

       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匹配函數中修改添加匹配。

三、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下面是否生成設備節點:

各端口功能描述如下:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM