I am experiencing a reproducible issue with EG25-G when using ECM (CDC Ethernet) mode on Linux. The modem advertises a valid CDC ECM function, but Linux refuses to bind cdc_ether due to a malformed MAC address descriptor, resulting in probe failed with error -22.
This does not appear to be a host configuration issue but rather a firmware USB descriptor problem.
Hardware / Firmware
- Module: Quectel EG25-G
- Firmware: EG25GGBR07A07M2G
- Host OS: Ubuntu 20.04
AT configuration
AT+QCFG="usbnet",1 // ECM
AT+QCFG="usbcfg",0x2C7C,0x0121,1,1,1,1,0,0,0 // rmnet disabled
AT+CFUN=1,1
Device power-cycled and fully re-enumerated after changes.
Observed behavior
The device exposes a CDC ECM function correctly:
From lsusb -v:
Interface Association:
bFunctionClass 2 Communications
bFunctionSubClass 6 Ethernet Networking
iFunction CDC ECM
Interface 4:
bInterfaceClass 2 Communications
bInterfaceSubClass 6 Ethernet Networking
iInterface CDC Ethernet Control Model (ECM)
CDC Ethernet:
iMacAddress 7 76:96:d2:7d:0
The advertised MAC address string is truncated / invalid (not a 6-byte MAC).
Dear @Aleksander_Gaiarsa ,
Thank You for reaching out with your queries.
This issue could be related to the PID mismacth. In your provided AT configuration, you are using: AT+QCFG=“usbcfg”,0x2C7C,0x0121,1,1,1,1,0,0,0
The PID 0x0121 is specifically assigned to the EC21 module.
Therefore, using the EC21 PID on EG25-G hardware can cause the host OS to misinterpret the descriptor table, leading to the probe failed with error -22 (Invalid Argument) when the driver encounters a descriptor (such as the MAC address string) that does not match the expected format for that specific PID.
To resolve this, you should update your usbcfg command to use the correct PID for the EG25-G.
Execute the following sequence:
- Set the correct PID and port configuration: AT+QCFG=“usbcfg”,0x2C7C,0x0125,1,1,1,1,0,0,0
Once the PID is corrected to 0x0125 , the Linux host should identify the module correctly.
Kindly try and check on the output of the CDC_ETHER erorr.
Thank You and Have a Great Day!
To confirm, the issue is not caused by a PID mismatch . The same behavior occurs when using the correct EG25-G PID (0x0125) . Changing the PID was done only as a troubleshooting step.
With PID 0x0125, Linux consistently fails to bind the CDC ECM interface with the following kernel error:
cdc_ether: probe of 3-3:1.4 failed with error -22
Inspecting the USB descriptors shows that the CDC ECM descriptors are largely correct, but the Ethernet functional descriptor contains a malformed MAC address string :
CDC Ethernet:
iMacAddress 7 76:96:d2:7d:0
Additionally, when dumping descriptors, the host reports:
can't get debug descriptor: Resource temporarily unavailable
Here, iMacAddress points to string descriptor index 7, but the returned MAC string appears truncated (only 5 bytes instead of the expected 6). This does not conform to CDC ECM requirements and likely causes the Linux cdc_ether driver to reject the interface during probe with -EINVAL .
This failure occurs at driver probe time, before any DHCP or userspace networking.
Thank you for your help.
Even though you want to set the modem to ECM mode, the bit rmnet must be 1.
Please try
AT+QCFG=“usbcfg”,0x2C7C,0x0125,1,1,1,1,1,0,0
As long as you need the usbnet feature such as rmnet/ECM/MBIM/RNDIS, the fifth bit must be 1.
1 Like