Where can I find the details on the double enumeration of the USB interface on the EM7411?

I have a question in regard to the Sierra Wireless EM7411 module that I’m testing out. In the production technical specifications, it calls out the power and timing differences between a single enumeration and a double enumeration on the USB interface. I have not been able to find anything about there being a configuration for that and have only found a very few references to double enumeration and the diagnostics/debug modes. Could you help me understand that function a bit better. Is it as simple as if I enable the Diag (DM) in the USBCOMP settings, it does a double and if I don’t, it does a single?

If you connect to Windows, it will show the port name

BTW, what is the current setting for AT!USBCOMP?

Yes, I understand that I can tell what ports are running but what I don’t know is how to tell which, if any, will have the double enumeration. My current setting is 1,3,100D. (Diag, NMEA, Modem, MBIM)

I’m asking about the single versus double enumeration because we are planning out the power circuit for our next pcb that will have the cellular module plugged into it.

when you say single enumeration, does this mean only one serial port is enumerated?
when you say double enumeration, does this mean only two serial ports are enumerated?

That’s just it. I’m not sure what is meant in the documentation. I found this terminology in the 41113694 EM7411 Product Specification r5-3.pdf, pages 50 and 51. I was really hoping someone would be able to explain to me what this is and how and when it is used.


When you connect to linux, does it have two times of enumeration in dmesg?

Ok. Here is the log from me plugging in the module once.

root@imx6ul-var-dart:~# usb 2-1: new high-speed USB device number 2 using ci_hdrc
usb 2-1: config 1 has an invalid interface number: 12 but max is 3
usb 2-1: config 1 has an invalid interface number: 13 but max is 3
usb 2-1: config 1 has an invalid interface number: 13 but max is 3
usb 2-1: config 1 has no interface number 1
usb 2-1: config 1 has no interface number 2
usbcore: registered new interface driver cdc_ncm
usbcore: registered new interface driver cdc_wdm
cdc_mbim 2-1:1.12: cdc-wdm0: USB WDM device
cdc_mbim 2-1:1.12 wwan0: register 'cdc_mbim' at usb-ci_hdrc.1-1, CDC MBIM, 06:f2:ac:62:a3:da
usbcore: registered new interface driver cdc_mbim

root@imx6ul-var-dart:~# lsusb
Bus 002 Device 002: ID 1199:9091 Sierra Wireless, Inc.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@imx6ul-var-dart:~# dmesg | grep tty
[    0.000000] Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw
[    0.602025] 2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 18, base_baud = 5000000) is a IMX
[    1.153692] console [ttymxc0] enabled
[    1.158075] 21e8000.serial: ttymxc1 at MMIO 0x21e8000 (irq = 69, base_baud = 5000000) is a IMX
[    1.167041] 21ec000.serial: ttymxc2 at MMIO 0x21ec000 (irq = 70, base_baud = 5000000) is a IMX
[   13.707097] usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0
root@imx6ul-var-dart:~# dmesg | grep cdc*
[    0.114844] OF: Duplicate name in lcdif@021c8000, renamed to "display#1"
[    0.414442] mxsfb 21c8000.lcdif: 21c8000.lcdif supply lcd not found, using dummy regulator
[    0.527083] sii902x bound to mxs-lcdif from 21c8000.lcdif
[    0.592181] mxsfb 21c8000.lcdif: initialized
[    1.604193] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[  231.788655] usbcore: registered new interface driver cdc_ncm
[  231.825026] usbcore: registered new interface driver cdc_wdm
[  231.888268] cdc_mbim 2-1:1.12: cdc-wdm0: USB WDM device
[  231.916792] cdc_mbim 2-1:1.12 wwan0: register 'cdc_mbim' at usb-ci_hdrc.1-1, CDC MBIM, 06:f2:ac:62:a3:da
[  231.953968] usbcore: registered new interface driver cdc_mbim
root@imx6ul-var-dart:~# dmesg | grep USB
[    1.604193] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.655649] ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1
[    1.683021] ci_hdrc ci_hdrc.0: USB 2.0 started, EHCI 1.00
[    1.688994] hub 1-0:1.0: USB hub found
[    1.721727] ci_hdrc ci_hdrc.1: new USB bus registered, assigned bus number 2
[    1.753024] ci_hdrc ci_hdrc.1: USB 2.0 started, EHCI 1.00
[    1.758969] hub 2-0:1.0: USB hub found
[    2.031875] usbhid: USB HID core driver
[    2.077002] usb 1-1: new full-speed USB device number 2 using ci_hdrc
[   13.328216] usbserial: USB Serial support registered for generic
[   13.497644] usbserial: USB Serial support registered for FTDI USB Serial Device
[   13.593308] ftdi_sio 1-1:1.0: FTDI USB Serial Device converter detected
[   13.707097] usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0
[  231.303099] usb 2-1: new high-speed USB device number 2 using ci_hdrc
[  231.888268] cdc_mbim 2-1:1.12: cdc-wdm0: USB WDM device
root@imx6ul-var-dart:~#


Verified USBCOMP too:

OK
AT!USBCOMP?
Config Index: 1
Config Type:  3 (Generic)
Interface bitmask: 00001009 (diag,modem,mbim)

OK

Is it only one enumeration?

I only plugged it in once and this is everything see. I was really hoping someone could tell me.

Did you capture the signal with scope?

No because I was hoping the answer wouldn’t require that. I’m really trying to find out what causes either the single or double enumeration to happen (from the configuration/driver) side of things. Is there no other information on this function?

Actually what is the problem you are seeing now?
No dm port? No AT port?

I’m not having a problem at all. Everything is working. My issue/question is how do I know if and when to expect double versus single enumeration. And why there are two approaches. Is there a configuration? Basically, why is this a thing that is called out in one, and only one document. We are trying to make sure that we have all of the power circuit components sized correctly and our timing expected correctly.
I’m trying to find the details around this.

Users that use BIOS Locking always require a double enumeration feature.
Without the double enumeration feature, the laptop BIOS will hang until the module enumerates.

I think the feature actually not related to your power circuit components

Ok. Thank you. I’ll look more into BIOS locking to understand this better.