EM05-E with strange PID / EC25-EUX Firmware

Hello

Since I wasn’t satisfied with the hardware reliability of the Simcom modules, I have bought some Quectel EM05-E on Aliexpress for a personal project using the MQTTprotocol.
Unfortunately the driver on linux nor the Quectel driver on Windows recognized the module correctly. The serial port wasn’t available for instance, but the wwan interface was there at least.
I actually need the serial interface to send the required MQTT commands.

Then I checked the PID number of the module to find out why the official Quectel drivers didn’t like this module, and it was 0309 instead of 0125 according to a Quectel document (see picture).

What’s wrong with my module? It looks like a generic Quectel EM05-E not a specific Lenovo or whatever custom version.

em05-2

em05-3

em05

I then took a EM06-E that I also had, and I realized they don’t support the MQTT AT-command set at all, that was very disappointing. I didn’t try with my EM12-G and EM160R but I imagine that they don’t support the MQTT protocol neither.

This morning, I ordered two EC25-EUX, do you confirm that they support MQTT/MQTTS AT-commands? (on some recent datasheets it’s not listed)

May I ask you the latest stable firmware for the EC25-EUX please?

Thank you

In Linux you can manually add it to the standard option driver:
# echo "2c7c 0309" > /sys/bus/usb-serial/drivers/option1/new_id

I’m curious to see the output of cat /sys/kernel/debug/usb/devices afterwards.

I unplugged the modem, and then executed the command you suggested:
echo "2c7c 0309" > /sys/bus/usb-serial/drivers/option1/new_id

I then connected the modem again, but no changes, still no additional serial connection.

I assume it was no error message after echo ...
Please show what I asked for.

No error

modprobe option
echo “2c7c 0309” > /sys/bus/usb-serial/drivers/option1/new_id

Now the USB modem isn’t listed anymore with the command lsusb.

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=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev= 5.15
S: Manufacturer=Linux 5.15.93-sunxi64 ehci_hcd
S: Product=EHCI Host Controller
S: SerialNumber=1c1a000.usb
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=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 1
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0001 Rev= 5.15
S: Manufacturer=Linux 5.15.93-sunxi64 ohci_hcd
S: Product=Generic Platform OHCI controller
S: SerialNumber=1c1a400.usb
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= 2 Ivl=255ms

T: Bus=03 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=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev= 5.15
S: Manufacturer=Linux 5.15.93-sunxi64 ehci_hcd
S: Product=EHCI Host Controller
S: SerialNumber=1c1b000.usb
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=04 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=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev= 5.15
S: Manufacturer=Linux 5.15.93-sunxi64 ehci_hcd
S: Product=EHCI Host Controller
S: SerialNumber=1c1c000.usb
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=05 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=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev= 5.15
S: Manufacturer=Linux 5.15.93-sunxi64 ehci_hcd
S: Product=EHCI Host Controller
S: SerialNumber=1c1d000.usb
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=06 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 1
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0001 Rev= 5.15
S: Manufacturer=Linux 5.15.93-sunxi64 ohci_hcd
S: Product=Generic Platform OHCI controller
S: SerialNumber=1c1b400.usb
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= 2 Ivl=255ms

T: Bus=07 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 1
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0001 Rev= 5.15
S: Manufacturer=Linux 5.15.93-sunxi64 ohci_hcd
S: Product=Generic Platform OHCI controller
S: SerialNumber=1c1c400.usb
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= 2 Ivl=255ms

T: Bus=08 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 1
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0001 Rev= 5.15
S: Manufacturer=Linux 5.15.93-sunxi64 ohci_hcd
S: Product=Generic Platform OHCI controller
S: SerialNumber=1c1d400.usb
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= 2 Ivl=255ms

T: Bus=09 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= 5.15
S: Manufacturer=Linux 5.15.93-sunxi64 musb-hcd
S: Product=MUSB HDRC host driver
S: SerialNumber=musb-hdrc.2.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

technically you have no modem now
Disconnect your adapter and run dmesg -w then plug it back. If any output will appear on the screen - please post it.

[ 887.043168] usb 5-1: New USB device found, idVendor=2c7c, idProduct=0309, bcdDevice= 3.18
[ 887.043224] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 887.043245] usb 5-1: Product: EM05-E
[ 887.043261] usb 5-1: Manufacturer: Quectel
[ 887.074617] cdc_mbim 5-1:1.0: cdc-wdm0: USB WDM device
[ 887.076533] cdc_mbim 5-1:1.0 wwan0: register ‘cdc_mbim’ at usb-1c1d000.usb-1, CDC MBIM, 0a:5a:fc:a4:66:1a
[ 888.084302] usb 5-1: USB disconnect, device number 6
[ 888.086614] cdc_mbim 5-1:1.0 wwan0: unregister ‘cdc_mbim’ usb-1c1d000.usb-1, CDC MBIM
[ 1002.581680] usb 5-1: new high-speed USB device number 7 using ehci-platform
[ 1002.747843] usb 5-1: New USB device found, idVendor=2c7c, idProduct=0309, bcdDevice= 3.18
[ 1002.747901] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 1002.747923] usb 5-1: Product: EM05-E
[ 1002.747939] usb 5-1: Manufacturer: Quectel
[ 1002.783335] cdc_mbim 5-1:1.0: cdc-wdm0: USB WDM device
[ 1002.785218] cdc_mbim 5-1:1.0 wwan0: register ‘cdc_mbim’ at usb-1c1d000.usb-1, CDC MBIM, 0a:5a:fc:a4:66:1a
[ 1003.468815] usb 5-1: USB disconnect, device number 7
[ 1003.471102] cdc_mbim 5-1:1.0 wwan0: unregister ‘cdc_mbim’ usb-1c1d000.usb-1, CDC MBIM
[ 1320.162469] usb 5-1: new high-speed USB device number 8 using ehci-platform
[ 1320.328564] usb 5-1: New USB device found, idVendor=2c7c, idProduct=0309, bcdDevice= 3.18
[ 1320.328628] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 1320.328650] usb 5-1: Product: EM05-E
[ 1320.328665] usb 5-1: Manufacturer: Quectel
[ 1320.359734] cdc_mbim 5-1:1.0: cdc-wdm0: USB WDM device
[ 1320.361618] cdc_mbim 5-1:1.0 wwan0: register ‘cdc_mbim’ at usb-1c1d000.usb-1, CDC MBIM, 0a:5a:fc:a4:66:1a
[ 1323.759749] usb 5-1: USB disconnect, device number 8

Please make sure the host system can provide enough power to the USB and/or use a powered USB hub to connect your modem.
You should try to get rid of USB disconnect

But the EM06 works great in the same conditions :-S

Well anyway.
I will wait for the EC25-EUX.

I hope Quectel will provide me a recent firmware.

I changed the M.2-USB adapter for another one, and it works now.
The serial port is available on ttyUSB2.

Many thanks jfrog.

Is this modification persistent or do I have to apply this command after every boot?
(which will cause a problem since the modem has to been unplugged and re-plugged again)

Well I still will use the EC25-EUX in the future, but at least I can test my MQTT command scripts for now with this EM05.

edit:
Yeah, it’s not persistent.
Well actually no need to unplug/replug the modem. Great.

There is always a possibility that on some adapters some pins are floating or grounded or something like that.
You need to send this echo once after reboot, you can put it into some startup script or to the cron configuration as explained here.