EM060K-GL no gps port on linux/modemmanager

Hi,

currently we are using 1000+ pieces of the EM06 module for our digital signage solution.
We would like looking forward to the EM060K-GL module, when testing this module, the gps port is not available on modemmanager.
The EM06 has these ports:
cdc-wdm0 (mbim), ttyUSB1 (qcdm), ttyUSB2 (gps), ttyUSB3 (at), ttyUSB4 (at), wwan0 (net)

the EM060K only these:
cdc-wdm0 (mbim), ttyUSB2 (at), ttyUSB3 (at), wwan0 (net)

Though, gps is working through the AT port of the EM06K, having the gps port available is vital for our application.

I am not sure, if this is an issue with modemmanager (missing mapping?), the underlaying linux driver or a firmware issue of the EM060K

model: EM060K-GL
firmware revision: EM060KGLAAR01A12M2G
kernel version: 6.5.0-17-generic x86_64
modemmanager: 1.20.6

cheers

Does the gps ttyUSB port exist or not?
Maybe you could try the rmnet mode.

yes, they are shown

[ 6164.459642] usb 1-2: config 1 has an invalid interface number: 8 but max is 6
[ 6164.459651] usb 1-2: config 1 has an invalid interface number: 9 but max is 6
[ 6164.459655] usb 1-2: config 1 has an invalid interface number: 9 but max is 6
[ 6164.459658] usb 1-2: config 1 has an invalid interface number: 12 but max is 6
[ 6164.459662] usb 1-2: config 1 has no interface number 4
[ 6164.459665] usb 1-2: config 1 has no interface number 5
[ 6164.459668] usb 1-2: config 1 has no interface number 6
[ 6164.462251] usb 1-2: New USB device found, idVendor=2c7c, idProduct=030b, bcdDevice= 5.04
[ 6164.462254] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 6164.462256] usb 1-2: Product: EM060K-GL
[ 6164.462257] usb 1-2: Manufacturer: Quectel
[ 6164.462259] usb 1-2: SerialNumber: d3eb7e52
[ 6164.599637] option 1-2:1.0: GSM modem (1-port) converter detected
[ 6164.599991] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB0
[ 6164.600334] option 1-2:1.1: GSM modem (1-port) converter detected
[ 6164.600552] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB1
[ 6164.600869] option 1-2:1.2: GSM modem (1-port) converter detected
[ 6164.601069] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB2
[ 6164.601226] option 1-2:1.3: GSM modem (1-port) converter detected
[ 6164.601333] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB3
[ 6165.081592] cdc_mbim 1-2:1.8: setting rx_max = 16384
[ 6165.082588] cdc_mbim 1-2:1.8: cdc-wdm0: USB WDM device
[ 6165.082932] cdc_mbim 1-2:1.8 wwan0: register 'cdc_mbim' at usb-0000:64:00.3-2, CDC MBIM, c6:d5:1e:7c:67:c9

don’t know if the invalid interface number errors are an issue in this case?

lsusb -t
/:  Bus 08.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 10000M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
        |__ Port 2: Dev 3, If 0, Class=Vendor Specific Class, Driver=ax88179_178a, 5000M
/:  Bus 07.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
        |__ Port 1: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 4: Dev 4, If 0, Class=Video, Driver=uvcvideo, 480M
        |__ Port 4: Dev 4, If 1, Class=Video, Driver=uvcvideo, 480M
        |__ Port 4: Dev 4, If 2, Class=Audio, Driver=snd-usb-audio, 480M
        |__ Port 4: Dev 4, If 3, Class=Audio, Driver=snd-usb-audio, 480M
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 10000M
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 10000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 1: Dev 2, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 1: Dev 2, If 2, Class=Video, Driver=uvcvideo, 480M
    |__ Port 1: Dev 2, If 3, Class=Video, Driver=uvcvideo, 480M
    |__ Port 1: Dev 2, If 4, Class=Application Specific Interface, Driver=, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 10000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/5p, 480M
    |__ Port 2: Dev 7, If 0, Class=Vendor Specific Class, Driver=option, 480M
    |__ Port 2: Dev 7, If 1, Class=Vendor Specific Class, Driver=option, 480M
    |__ Port 2: Dev 7, If 2, Class=Vendor Specific Class, Driver=option, 480M
    |__ Port 2: Dev 7, If 3, Class=Vendor Specific Class, Driver=option, 480M
    |__ Port 2: Dev 7, If 8, Class=Communications, Driver=cdc_mbim, 480M
    |__ Port 2: Dev 7, If 9, Class=CDC Data, Driver=cdc_mbim, 480M
    |__ Port 2: Dev 7, If 12, Class=Vendor Specific Class, Driver=, 480M
    |__ Port 3: Dev 3, If 0, Class=Hub, Driver=hub/2p, 480M
        |__ Port 1: Dev 5, If 0, Class=Wireless, Driver=btusb, 12M
        |__ Port 1: Dev 5, If 1, Class=Wireless, Driver=btusb, 12M
        |__ Port 2: Dev 6, If 0, Class=Chip/SmartCard, Driver=, 12M
    |__ Port 5: Dev 4, If 0, Class=Vendor Specific Class, Driver=, 12M

Maybe this card needs some additional mappings in the /lib/udev/rules.d/77-mm-quectel-port-types.rules file?

Yes. I think also.

ATTRS{idVendor}==“2c7c”, ATTRS{idProduct}==“030b”, ENV{.MM_USBIFNUM}==“00”, SUBSYSTEM==“tty”, ENV{ID_MM_PORT_TYPE_QCDM}=“1”,ENV{ID_MM_DEVICE_IGNORE}=“1”
ATTRS{idVendor}==“2c7c”, ATTRS{idProduct}==“030b”, ENV{.MM_USBIFNUM}==“01”, SUBSYSTEM==“tty”, ENV{ID_MM_PORT_TYPE_GPS}=“1”
ATTRS{idVendor}==“2c7c”, ATTRS{idProduct}==“030b”, ENV{.MM_USBIFNUM}==“02”, SUBSYSTEM==“tty”, ENV{ID_MM_PORT_TYPE_AT_PRIMARY}=“1”
ATTRS{idVendor}==“2c7c”, ATTRS{idProduct}==“030b”, ENV{.MM_USBIFNUM}==“03”, SUBSYSTEM==“tty”, ENV{ID_MM_PORT_TYPE_AT_SECONDARY}=“1”

great, your udev rules are working:
ports: cdc-wdm0 (mbim), ttyUSB1 (gps), ttyUSB2 (at), ttyUSB3 (at), wwan0 (net)

gps port is now available, so I can continue with my testing.

Weird, because I have just tried the new rules file from modemmanager, they also have added udev rules in their newes version, but they do not work:

thank you
cheers

Thanks for your notice. I will check it with him.

What it mentioned is the device 2C7C;0128 but not the same one with yours.
ATTRS{idVendor}==“2c7c”, ATTRS{idProduct}==“0128”, ENV{.MM_USBIFNUM}==“03”, SUBSYSTEM==“tty”, ENV{ID_MM_PORT_TYPE_QCDM}=“1”
ATTRS{idVendor}==“2c7c”, ATTRS{idProduct}==“0128”, ENV{.MM_USBIFNUM}==“04”, SUBSYSTEM==“tty”, ENV{ID_MM_PORT_TYPE_GPS}=“1”
ATTRS{idVendor}==“2c7c”, ATTRS{idProduct}==“0128”, ENV{.MM_USBIFNUM}==“05”, SUBSYSTEM==“tty”, ENV{ID_MM_PORT_TYPE_AT_PRIMARY}=“1”

ah right, I have looked at the comment only, not at the product id

cheers