Need your support on changing configuration for EM060K-EA from mbim mode to qmi

We have ported the qmi_wwan driver and made the wwan worked with EM060K-EA as the log below:

T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 5 Spd=480 MxCh= 0

D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1

P: Vendor=2c7c ProdID=030b Rev= 5.04

S: Manufacturer=Quectel

S: Product=EM060K-EA

S: SerialNumber=4867cc3a

C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA

I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=(none)

E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 Driver=(none)

E: Ad=83(I) Atr=03(Int.) MxPS= 10 Ivl=32ms

E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E: Ad=02(O) Atr=02(Bulk) MxPS= 512 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= 512 Ivl=0ms

E: Ad=03(O) Atr=02(Bulk) MxPS= 512 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= 512 Ivl=0ms

E: Ad=04(O) Atr=02(Bulk) MxPS= 512 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= 512 Ivl=0ms

E: Ad=0f(O) Atr=02(Bulk) MxPS= 512 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= 512 Ivl=0ms

However, when buying new chip EM060K-EA for new devices, we got something different. We expect to use if 4 for qui_wwan but now it’s removed and replaced by if 8 & 9.

T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=480 MxCh= 0

D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1

P: Vendor=2c7c ProdID=030b Rev= 5.04

S: Manufacturer=Quectel

S: Product=EM060K-EA

S: SerialNumber=d010f1fe

C:* #Ifs= 7 Cfg#= 1 Atr=a0 MxPwr=500mA

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=30 Driver=(none)

E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 Driver=(none)

E: Ad=83(I) Atr=03(Int.) MxPS= 10 Ivl=32ms

E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E: Ad=02(O) Atr=02(Bulk) MxPS= 512 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= 512 Ivl=0ms

E: Ad=03(O) Atr=02(Bulk) MxPS= 512 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= 512 Ivl=0ms

E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

I:* If#= 8 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=(none)

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=(none)

I: If#= 9 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=(none)

E: Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E: Ad=0f(O) Atr=02(Bulk) MxPS= 512 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= 512 Ivl=0ms

It seems the new devices are setting working in different modes (I think). When booting up with these cards, I also got invalid error messages below.

[ 7.040226] mmc0: new high speed SDIO card at address 0001

[ 7.415903] usb 1-1: new high-speed USB device number 2 using xhci-mtk

[ 7.607249] usb 1-1: config 1 has an invalid interface number: 8 but max is 6

[ 7.621524] usb 1-1: config 1 has an invalid interface number: 9 but max is 6

[ 7.635749] usb 1-1: config 1 has an invalid interface number: 9 but max is 6

[ 7.650001] usb 1-1: config 1 has an invalid interface number: 12 but max is 6

[ 7.664399] usb 1-1: config 1 has no interface number 4

[ 7.674810] usb 1-1: config 1 has no interface number 5

[ 7.685280] usb 1-1: config 1 has no interface number 6

I have try to use AT command and change the usbnet value from 2 to 0 and the current value is 0. Rebooted already but not work.

+QCFG: “usbnet”,0

Could you please let me know if I need to make some more configuration changes? We expect to have previous mode with QMI.

BR
MEQ

It means that it is MBIM mode but not RMNET(QMI) mode.

If you already have set the usbnet to 0 and reboot the EM060K and the usb interfaces still be the same.
Please provide the firmware version. Maybe it don’t support the QMI mode.
Please check it with AT
ATI

It is just warnnings and does not affect the feature. Some usb interface is hiden and for other use.

The version is
ATI

Quectel

EM060K-EA

Revision: EM060KEAAAR01A02M2G

OK

What about the another one which QMI works fine? And what’s the firmware version?

EM060KEAAAR01A02M2G_01.001.01.001 is already the lastest firmware version.

Please provide the log
cat /sys/kernel/debug/usb/devices

Make sure
AT+QCFG=“usbnet” return 0.

echo ‘AT+QCFG=“usbnet”’ | socat -t0.02 - "/dev/ttyUSB0,c

r,nonblock,echo=0"

+CPIN: PIN DISABLED

+CPIN: READY

+QUSIM: 1

+QIND: SMS DONE

+QIND: PB DONE

AT+QCFG

ERROR

AT+QCFG=“usbnet”

+QCFG: “usbnet”,0

OK

echo ‘AT+QCFG=“usbnet”’ | socat -t0.02 - "/dev/ttyUSB1,c

r,nonblock,echo=0"
AT+QCFG=“usbnet”

+QCFG: “usbnet”,0

OK

echo ‘AT+QCFG=“usbnet”’ | socat -t0.02 - "/dev/ttyUSB2,c

r,nonblock,echo=0"
AT+QCFG=“usbnet”

+QCFG: “usbnet”,0

OK

echo ‘AT+QCFG=“usbnet”’ | socat -t0.02 - "/dev/ttyUSB3,c

r,nonblock,echo=0"
AT+QCFG=“usbnet”

+QCFG: “usbnet”,0
///////

cat /sys/kernel/debug/usb/devices

T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 2
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.10
S: Manufacturer=Linux 5.10.176 xhci-hcd
S: Product=xHCI Host Controller
S: SerialNumber=1e1c0000.xhci
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=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=2c7c ProdID=030b Rev= 5.04
S: Manufacturer=Quectel
S: Product=EM060K-EA
S: SerialNumber=f07d7429
C:* #Ifs= 7 Cfg#= 1 Atr=a0 MxPwr=500mA
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=30 Driver=(none)
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 Driver=(none)
E: Ad=83(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 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= 512 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 512 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= 512 Ivl=0ms
E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 8 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=(none)
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=(none)
I: If#= 9 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=(none)
E: Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=0f(O) Atr=02(Bulk) MxPS= 512 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= 512 Ivl=0ms

T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=2c7c ProdID=030b Rev= 5.04
S: Manufacturer=Quectel
S: Product=EM060K-EA
S: SerialNumber=d010f1fe
C:* #Ifs= 7 Cfg#= 1 Atr=a0 MxPwr=500mA
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=30 Driver=(none)
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 Driver=(none)
E: Ad=83(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 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= 512 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 512 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= 512 Ivl=0ms
E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 8 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=(none)
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=(none)
I: If#= 9 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=(none)
E: Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=0f(O) Atr=02(Bulk) MxPS= 512 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= 512 Ivl=0ms

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= 5.10
S: Manufacturer=Linux 5.10.176 xhci-hcd
S: Product=xHCI Host Controller
S: SerialNumber=1e1c0000.xhci
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

OK

echo ‘ATI’ | socat -t0.02 - “/dev/ttyUSB0,cr,nonblock,echo=0”

ATI
Quectel
EM060K-EA
Revision: EM060KEAAAR01A01M2G
OK

lsusb -t

/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-mtk/1p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-mtk/2p, 480M
|__ Port 1: Dev 5, If 0, Class=, Driver=, 480M
|__ Port 1: Dev 5, If 1, Class=, Driver=, 480M
|__ Port 1: Dev 5, If 2, Class=, Driver=option, 480M
|__ Port 1: Dev 5, If 3, Class=, Driver=option, 480M
|__ Port 1: Dev 5, If 4, Class=, Driver=qmi_wwan, 480M
|__ Port 1: Dev 5, If 12, Class=, Driver=, 480M
|__ Port 2: Dev 3, If 0, Class=, Driver=, 480M
|__ Port 2: Dev 3, If 3, Class=, Driver=option, 480M
|__ Port 2: Dev 3, If 1, Class=, Driver=, 480M
|__ Port 2: Dev 3, If 12, Class=, Driver=, 480M
|__ Port 2: Dev 3, If 4, Class=, Driver=qmi_wwan, 480M
|__ Port 2: Dev 3, If 2, Class=, Driver=option, 480M

So the firmware version is different.
The one QMI works is EM060KEAAAR01A01M2G, but the new one won’t work is EM060KEAAAR01A02M2G.

How can I flash my new chip with the old FW?

Normally the older version support the lastest version should also support.
I will provide both version of the firmware.

Is there guideline doc to flash the driver to the card?

On Linux you could try QFirehose. I will send it also.

It’s back to work with configuration commands. I need to do a hard reset the board to apply these configuration changes.

Quectel could not provide MACOS drivers for Quectel modems.

The command to change
‘AT+QCFG=“usbnet”,0’

is affected after a hardreset.

Now my modems are working with newest FW version.