EG25-G ttyUSB* not created, but detected as rndis_host

My EG25-G was working just fine and it was creating the /dev/ttyUSB{0-3} ports as described in the user manual. I was using /dev/ttyUSB3 for AT commands and all worked fine.

I issued the command AT+QCFG="usbauto",1 and saved (AT&W), I was testing for some debug port functionality

After this point on (disconnecting the modem and connecting again to USB), the modem is still detected (dmesg shows detection) but it is recognized as RNDIS device. No /dev/ttyUSB* ports are creaeted and I can’t send any AT commands to it. (I can see a new usb0 network device now.

Here’s lsusb output

$ lsusb                                                                                                                                                                           Sun 26 Feb 2023 12:41:37 AM CET
Bus 003 Device 005: ID 2c7c:0125 Quectel Wireless Solutions Co., Ltd. EC25 LTE modem

Here is dmesg messages (related stuff)

$ dmesg 
...
[  551.736515] usb 3-1.3: new high-speed USB device number 5 using ehci-pci
[  551.858826] usb 3-1.3: New USB device found, idVendor=2c7c, idProduct=0125, bcdDevice= 3.18
[  551.858837] usb 3-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  551.858841] usb 3-1.3: Product: EG25-G
[  551.858845] usb 3-1.3: Manufacturer: Quectel
[  551.874081] rndis_host 3-1.3:1.0 usb0: register 'rndis_host' at usb-0000:00:1d.7-1.3, RNDIS device, 4a:59:eb:24:8f:ca
...

and here’s ip addr output:

$ ip addr
...
6: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether 4a:59:eb:24:8f:ca brd ff:ff:ff:ff:ff:ff
    inet 192.168.225.30/24 brd 192.168.225.255 scope global dynamic noprefixroute usb0
       valid_lft 43004sec preferred_lft 43004sec
    inet6 fe80::4859:ebff:fe24:8fca/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
...

And finally here’s the /sys/kernel/debug/usb/devices output (relevant part):

P:  Vendor=2c7c ProdID=0125 Rev= 3.18
S:  Manufacturer=Quectel
S:  Product=EG25-G
C:* #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=500mA
A:  FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=03
I:* If#= 0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host
E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
C:  #Ifs= 2 Cfg#= 2 Atr=a0 MxPwr=500mA
A:  FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=06 Prot=00
I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=
E:  Ad=82(I) Atr=03(Int.) MxPS=  16 Ivl=32ms
I:  If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=
I:  If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

Is there a way to bring back the ttyUSB* ports? Or is there a way to send any AT commands to the modem now?

For anyone interested, I fixed (?) the problem by using a sixfab rpi hat and connecting to the UART port on the EG25 directly. See the guide UART Configuration

1 Like

The log is not complete.
Please show the
cat /sys/kernel/debug/usb/devices

Are you able to assist with the logs? I have two EM12 modems that experience this same issue but the EM160R-GL I have works fine.

root@GL-AX1800:~# cat /sys/kernel/debug/usb/devices

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=5000 MxCh= 1
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 3.00 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev= 4.04
S:  Manufacturer=Linux 4.4.60 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=xhci-hcd.0.auto
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  4 Spd=5000 MxCh= 0
D:  Ver= 3.10 Cls=00(>ifc ) Sub=02 Prot=01 MxPS= 9 #Cfgs=  1
P:  Vendor=2c7c ProdID=0512 Rev= 3.18
S:  Manufacturer=Quectel
S:  Product=EM12-G
S:  SerialNumber=0123456789ABCDEF
C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=896mA
A:  FirstIf#= 8 IfCount= 2 Cls=02(comm.) Sub=0e Prot=00
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E:  Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
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=00 Prot=00 Driver=(none)
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=00 Prot=00 Driver=(none)
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#= 8 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=cdc_mbim
E:  Ad=88(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
I:  If#= 9 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
I:* If#= 9 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
E:  Ad=8e(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=0f(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 1
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 4.04
S:  Manufacturer=Linux 4.4.60 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=xhci-hcd.0.auto
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

Please check whether option loaded or not.

ls /sys/bus/usb-serial/drivers/option1/new_id

Could you see it?
If yes plese try:

echo 2c7c 0512 FF > /sys/bus/usb-serial/drivers/option1/new_id

If not, please recompile the linux kernel and add the option.c and usb_wwan.c in.

try
modrobe option; echo 2c7c 0512 FF > /sys/bus/usb-serial/drivers/option1/new_id