1、OpenWrt21内核版本为5.4,EC20R2.0的VID、PID为0x2C7C, 0x0125,可以使用qmi拨号或者ppp拨号
2、内核修改
1、修改USB串口驱动
File : [KERNEL]/drivers/usb/serial/option.c
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(0x05C6, 0x9215) }, /* Quectel EC20 */
{ USB_DEVICE(0x2C7C, 0x0125) }, /* Quectel EC25/EC20 R2.0 */
{ USB_DEVICE(0x2C7C, 0x0121) }, /* Quectel EC21 */
#endif
2.1、添加零包处理
File:[KERNEL]/drivers/usb/serial/usb_wwan.c
static struct urb*usb_wwan_setup_urb(struct usb_serial *serial, int endpoint,
int dir, void *ctx, char *buf, int len,void(*callback) (struct urb *))
{
……
#if 1 //Added by Quectelfor Zero Packet
if (dir == USB_DIR_OUT) {
struct usb_device_descriptor*desc = &serial->dev->descriptor;
if (desc->idVendor ==cpu_to_le16(0x05C6) && desc->idProduct == cpu_to_le16(0x9090))
urb->transfer_flags|= URB_ZERO_PACKET;
if (desc->idVendor ==cpu_to_le16(0x05C6) && desc->idProduct == cpu_to_le16(0x9003))
urb->transfer_flags|= URB_ZERO_PACKET;
if (desc->idVendor ==cpu_to_le16(0x05C6) && desc->idProduct == cpu_to_le16(0x9215))
urb->transfer_flags|= URB_ZERO_PACKET;
if (desc->idVendor ==cpu_to_le16(0x2C7C))
urb->transfer_flags|= URB_ZERO_PACKET;
}
#endif
return urb;
}
2.2、Add Reset Resume
File: [KERNEL]/drivers/usb/serial/option.c
static struct usb_serial_driveroption_1port_device = {
……
#

本文档详细介绍了如何在OpenWrt21内核版本5.4上针对Quectel EC20R2.0模块进行内核修改,包括USB串口驱动、添加零包处理、添加ResetResume功能、使用GobiNet或QMI WWAN,并提供了相应的菜单config配置选择。拨号方法包括quectel-CM和ppp方式,最后展示了成功拨号后的设备信息。
最低0.47元/天 解锁文章
6637

被折叠的 条评论
为什么被折叠?



