日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

华为4g模块 linux驱动程序,定制Android之4G-LTE模块驱动

發(fā)布時間:2025/3/8 linux 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 华为4g模块 linux驱动程序,定制Android之4G-LTE模块驱动 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

定制Android之4G-LTE模塊驅(qū)動

一.????????簡介

本文講述在Android內(nèi)核中,添加中國移動4G-LTE制式華為MU909模塊驅(qū)動,實現(xiàn)通過4G上網(wǎng)業(yè)務(wù),電話業(yè)務(wù),短信業(yè)務(wù)。

CPU:Samsung 6410

Kernel:linux 2.6.36

System: Android 2.3

4Gmod:HUAWEI—MU909

Authority:ACE 2014-12-8

華為模塊在Android端使用的驅(qū)動分為兩部分:

定制接口:對應(yīng)的驅(qū)動為option,需要將華為模塊的驅(qū)動適配數(shù)據(jù)添加到驅(qū)動才能被usb識別和使用。

通用接口:ECM,華為模塊直接適配通用驅(qū)動。暫時無需修改代碼。

二.具體內(nèi)容

華為模塊以PCI-E接口封裝,主要以USB接口為通訊接口,將USB口虛擬成ttyUSB,將作為華為的定制接口,包括Modem PPP撥號,PCUI基本AT指令響應(yīng)端口,Diag 日志抓取端口。

涉及三個文件:

/drivers/usb/serial/option.c

/drivers/usb/serial/usb_wwan.c

/include/linux/usb.h

2.1 usb轉(zhuǎn)serial驅(qū)動

2.1.1 /include/linux/usb.h 添加

#define USB_VENDOR_AND_INTERFACE_INFO(vend,cl, sc, pr) \

.match_flags = USB_DEVICE_ID_MATCH_INT_INFO \

|USB_DEVICE_ID_MATCH_VENDOR, \

.idVendor = (vend), \

.bInterfaceClass = (cl), \

.bInterfaceSubClass = (sc), \

.bInterfaceProtocol = (pr)

2.1.2

/drivers/usb/serial/option.c在static const struct usb_device_id option_ids[]

添加華為模塊的ID,協(xié)議碼等。

參數(shù)內(nèi)容為{VID,InterfaceClass,InterfaceSubClass, InterfaceProtocol}

{ USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID,0xff, 0xff, 0xff) },

{USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x01) },

2.1.3?????????USB零包機(jī)制

根據(jù)USB協(xié)議,添加關(guān)于傳輸中零包的處理

修改/drivers/usb/serial/usb_wwan.c,

增加bcdUSB值和華為vid值的定義

#define HW_bcdUSB 0x0110

#define HUAWEI_VENDOR_ID 0x12d1

在usb_wwan_write 函數(shù)中添加零包語句

intusb_wwan_write()

{

;;;

struct usb_host_endpoint *ep=NULL;

}

在usb_wwan_write 函數(shù)中添加零包判斷

int usb_wwan_write()

{

;;;

if((HUAWEI_VENDOR_ID ==port->serial->dev->descriptor.idVendor)

&& (HW_bcdUSB !=port->serial->dev->descriptor.bcdUSB)){

ep = usb_pipe_endpoint(this_urb->dev, this_urb->pipe);

if(ep && (0 != this_urb->transfer_buffer_length)

&& (0 == this_urb->transfer_buffer_length %

ep->desc.wMaxPacketSize)){

this_urb->transfer_flags |= URB_ZERO_PACKET;

}

}

3.編譯usb-serial進(jìn)內(nèi)核

CONFIG_USB_SERIAL=y

CONFIG_USB_SERIAL_OPTION=y

CONFIG_USB_SERIAL_WWAN=y

終端輸入#make menuconfig

4. PPP 撥號配置

相關(guān)配置項:

CONFIG_PPP=y

CONFIG_PPP_MULTILINK=y

CONFIG_PPP_FILTER=y

CONFIG_PPP_ASYNC=y

CONFIG_PPP_SYNC_TTY=y

CONFIG_PPP_DEFLATE=y

CONFIG_PPP_BSDCOMP=y

5.CDC驅(qū)動

CDC驅(qū)動是華為模塊適配標(biāo)準(zhǔn)的ECM通用驅(qū)動,無需代碼修改,LTE模塊使用PPP-modem撥號的方式進(jìn)行數(shù)據(jù)業(yè)務(wù)。

修改Android內(nèi)核的配置項

CONFIG_USB_USBNET=y

CONFIG_NETDEVICES=y

CONFIG_USB_NET_CDCETHER=y

6. usb-serial 電源管理集成

Usb-serial驅(qū)動需要內(nèi)核支持selectivesuspend 電源管理,修改 /driver/usb/serial/option.c

找到static struct usb_serial_driver option_1port_device ={

.attach??= usb_wwan_startup? //添加接口

}

在usb_wwan_startup() 添加

{

if (serial->dev->descriptor.idVendor== HUAWEI_VENDOR_ID) {

if ( 0 !=(serial->dev->config->desc.bmAttributes & 0x20)){

usb_enable_autosuspend(serial->dev);

}

}

}

配置內(nèi)核

CONFIG_USB_SUPPORT=y

CONFIG_USB =y

CONFIG_PM_RUNTIME=y

CONFIG_USB_SUSPEND=y

以上修改完內(nèi)核,重新編譯內(nèi)核

#make zImage

7.將編譯完內(nèi)核燒進(jìn)板子。

7.1將LTE模塊接入板子

查看usb-serial驅(qū)動是否成功加載

一個USB口虛擬成三個串口ttyUSB,ttyUSB0 為modem接口,ttyUSB1為Dial,ttyUSB2為AT端口。

7.2 檢查CDC驅(qū)動是否成功加載

已經(jīng)識別為usb網(wǎng)卡,可以ifconfig eth1 使能網(wǎng)卡

至此完成對華為MU909 驅(qū)動的添加,還需添加PPP撥號軟件,編寫LTE撥號腳本,才能接入4G網(wǎng)絡(luò)。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的华为4g模块 linux驱动程序,定制Android之4G-LTE模块驱动的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。