From 23bebd5c32f994ca44a23aff65dff878f82fb7ba Mon Sep 17 00:00:00 2001 From: Gilberto Conde Date: Fri, 18 Sep 2026 15:28:50 +0000 Subject: [PATCH] kernel: qmi_wwan: add support for Quectel EG120K-EA The Quectel EG120K-EA (LTE Cat.12) reports USB ID 2c7c:030b and exposes its QMI/RMNET function on a vendor-specific ff/ff/ff interface. The same product ID is already known to the option driver as EM060K, which claims the serial interfaces, but without a qmi_wwan entry the data interface is left unbound and no cdc-wdm node appears. Add the device using QMI_MATCH_FF_FF_FF so the DTR quirk is applied. Tested on a GL.iNet GL-X2000, where the modem enumerates at SuperSpeed and now brings up cdc-wdm0 and wwan0. A data session over MEO (268-06) was verified end to end. Accepted upstream via netdev/net, so this is carried as a backport and can be dropped once the kernel is bumped to 7.3 or later. Inserting it ahead of the MeigLink hack shifts that patch's offsets, so 780-usb-net-MeigLink_modem_support.patch is refreshed as well. Link: https://patch.msgid.link/20260921093426.2870266-1-gilbertorconde@gmail.com Signed-off-by: Gilberto Conde --- ...t-usb-qmi_wwan-add-Quectel-EG120K-EA.patch | 60 +++++++++++++++++++ .../780-usb-net-MeigLink_modem_support.patch | 2 +- 2 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 target/linux/generic/backport-6.18/787-v7.3-net-usb-qmi_wwan-add-Quectel-EG120K-EA.patch diff --git a/target/linux/generic/backport-6.18/787-v7.3-net-usb-qmi_wwan-add-Quectel-EG120K-EA.patch b/target/linux/generic/backport-6.18/787-v7.3-net-usb-qmi_wwan-add-Quectel-EG120K-EA.patch new file mode 100644 index 00000000000..64f3b00b172 --- /dev/null +++ b/target/linux/generic/backport-6.18/787-v7.3-net-usb-qmi_wwan-add-Quectel-EG120K-EA.patch @@ -0,0 +1,60 @@ +From 0f2fd31f63c65c409bd336af3a42d478a9207c1f Mon Sep 17 00:00:00 2001 +From: Gilberto Conde +Date: Mon, 21 Sep 2026 10:34:26 +0100 +Subject: [PATCH] net: usb: qmi_wwan: add Quectel EG120K-EA + +Add support for the Quectel EG120K-EA LTE Cat.12 module (USB ID +2c7c:030b). Its QMI interface (interface 4) uses class/subclass/protocol +ff/ff/ff like the other recent Quectel modules, so match it the same way. + +The product ID is shared with the EM060K, which the option driver +already knows and uses to claim the serial interfaces. Without a +qmi_wwan entry the data interface is left unbound. + +Tested on a GL.iNet GL-X2000, where the module is soldered down and +enumerates at SuperSpeed: cdc-wdm0 and wwan0 appear and ModemManager +brings up a data session. + +T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=5000 MxCh= 0 +D: Ver= 3.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1 +P: Vendor=2c7c ProdID=030b Rev= 5.04 +S: Manufacturer=Quectel +S: Product=EG120K-EA +S: SerialNumber=45546267 +C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=896mA +I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option +E: Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms +E: Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms +I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 Driver=option +E: Ad=83(I) Atr=03(Int.) MxPS= 10 Ivl=32ms +E: Ad=82(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms +E: Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms +I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option +E: Ad=85(I) Atr=03(Int.) MxPS= 10 Ivl=32ms +E: Ad=84(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms +E: Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms +I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option +E: Ad=87(I) Atr=03(Int.) MxPS= 10 Ivl=32ms +E: Ad=86(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms +E: Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms +I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan +E: Ad=88(I) Atr=03(Int.) MxPS= 8 Ivl=32ms +E: Ad=8e(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms +E: Ad=0f(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms +I:* If#=12 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=70 Driver=(none) +E: Ad=89(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms + +Signed-off-by: Gilberto Conde +Link: https://patch.msgid.link/20260921093426.2870266-1-gilbertorconde@gmail.com +Signed-off-by: Jakub Kicinski +--- +--- a/drivers/net/usb/qmi_wwan.c ++++ b/drivers/net/usb/qmi_wwan.c +@@ -1085,6 +1085,7 @@ static const struct usb_device_id produc + {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0122)}, /* Quectel RG650V */ + {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0125)}, /* Quectel EC25, EC20 R2.0 Mini PCIe */ + {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0306)}, /* Quectel EP06/EG06/EM06 */ ++ {QMI_MATCH_FF_FF_FF(0x2c7c, 0x030b)}, /* Quectel EM060K/EG120K-EA */ + {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0512)}, /* Quectel EG12/EM12 */ + {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0620)}, /* Quectel EM160R-GL */ + {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0800)}, /* Quectel RM500Q-GL */ diff --git a/target/linux/generic/hack-6.18/780-usb-net-MeigLink_modem_support.patch b/target/linux/generic/hack-6.18/780-usb-net-MeigLink_modem_support.patch index 99e2eba5d30..640ca9edc3a 100644 --- a/target/linux/generic/hack-6.18/780-usb-net-MeigLink_modem_support.patch +++ b/target/linux/generic/hack-6.18/780-usb-net-MeigLink_modem_support.patch @@ -22,7 +22,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0122)}, /* Quectel RG650V */ {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0125)}, /* Quectel EC25, EC20 R2.0 Mini PCIe */ {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0306)}, /* Quectel EP06/EG06/EM06 */ -@@ -1089,6 +1094,7 @@ static const struct usb_device_id produc +@@ -1090,6 +1095,7 @@ static const struct usb_device_id produc {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0620)}, /* Quectel EM160R-GL */ {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0800)}, /* Quectel RM500Q-GL */ {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0801)}, /* Quectel RM520N */