MT7628移植移远EC20驱动实现4G上网功能(绝大多数使用openwrt的设备通用)

我的上一篇文章中完成对MT7628固件的编译,本文是在固件编译通过的基础上移植EC20驱动的,固件编译问题请参考上文。

在讲解之前先介绍移远的EC20模块,该模块是目前较为成熟的4G模块,可向安装了Windows、Linux等设备的机器提供4G上网服务,移远同类产品中还有AG35模块,这个模块我之前在AM4378上移植过,当时花费了好多时间才移植成功,其实移远产品做得也不错,同类的模块移植方法基本是一样的。

废话不多说,下面开始讲述EC20驱动在MT7628上的移植过程。

 

第一步:

修改源码(注意:固件必须要先编译过一轮,否则没有build_dir目录)。此步骤必须细心修改,并认真核对。以下路径中的源文件均需要修改才能使用:

/home/user/openwrt-sdk/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7628/linux-3.10.14/drivers/usb/serial/option.c

//大概在532行,添加如下代码
......

static const struct usb_device_id option_ids[] = {

#if 1 //Added by Quectel
	{ USB_DEVICE(0x05C6, 0x9090) }, /* Quectel UC15 */ 
	{ USB_DEVICE(0x05C6, 0x9003) }, /* Quectel UC20 */ 
	{ USB_DEVICE(0x2C7C, 0x0125) }, /* Quectel EC25/EC20 R2.0 */
	{ USB_DEVICE(0x2C7C, 0x0121) }, /* Quectel EC21 */ 
	{ USB_DEVICE(0x05C6, 0x9215) }, /* Quectel EC20 */ 
	{ USB_DEVICE(0x2C7C, 0x0191) }, /* Quectel EG91 */ 
	{ USB_DEVICE(0x2C7C, 0x0195) }, /* Quectel EG95 */
	{ USB_DEVICE(0x2C7C, 0x0306) }, /* Quectel EG06/EP06/EM06 */
	{ USB_DEVICE(0x2C7C, 0x0296) }, /* Quectel BG96 */
#endif
	{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
	{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
......
//大概在1390行,插入以下代码
......

#ifdef CONFIG_PM
	.suspend           = usb_wwan_suspend,
	.resume            = usb_wwan_resume,
#if 1 //Added by Quectel
	.reset_resume = usb_wwan_resume, 
#endif

#endif
......
//在大约1459行,插入以下代码
......

	if (dev_desc->idVendor == cpu_to_le16(SAMSUNG_VENDOR_ID) &&
	    dev_desc->idProduct == cpu_to_le16(SAMSUNG_PRODUCT_GT_B3730) &&
	    iface_desc->bInterfaceClass != USB_CLASS_CDC_DATA)
		return -ENODEV;
#if 1 //Added by Quectel
//Quectel UC20's interface 4 can be used as USB Network device
 if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) && 
serial->dev->descriptor.idProduct == cpu_to_le16(0x9003) 
 && serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)return -ENODEV; 
//Quectel EC20's interface 4 can be used as USB Network device 
 if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) && 
serial->dev->descriptor.idProduct == cpu_to_le16(0x9215) 
 && serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4) 
 return -ENODEV; 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值