Linux USB driver for Kernel 6.1 EM06-A

We are using a custom Linux board running on an AM3352 processor with kernel 6.1. The Quectel EM06A LTE module is permanently attached to our board and configured via a USB interface.

We want to update the host Linux OS from kernel 5.4 to kernel 6.1, but we are currently unable to bring up the LTE module on kernel 6.1. We can see the USB bus using the lsusb Linux command. We have followed the latest user guide provided by the Quectel Team via their ChatBot.

The point I want to highlight is that in kernel 6.1, if I add the following lines to /drivers/net/usb/Makefile, I get a compilation error while building the kernel image.

  • obj-${CONFIG_USB_NET_QMI_WWAN} += qmi_wwan_q.o
  • obj-${CONFIG_USB_NET_QMI_WWAN} += qmi_wwan.o

After adding the qmi_wwan_q.c file in kernel source code, able to compile the kernel but still I am not able to get the ttyUSB* entries in /dev directory

The LTE module works perfectly fine on kernel 5.4, so I don’t believe there is any hardware issue.

User Guide I have followed: UMTS/HSPA+/LTE/5G Module Series, Version: 3.3, Date: 2025-04-28.

Regards,
Shabana

This modem is supported by standard Linux drivers, in both MBIM and QMI modes.

Hi jfrog,

I am configuring it for QMI.

After boot up and Powering up the module, I am not able to get nodes in /dev/ttyUSB*
Attaching boot-up logs:

root@ST6E98FB438EE:~# dmesg | grep usb
[    0.221463] usbcore: registered new interface driver usbfs
[    0.221533] usbcore: registered new interface driver hub
[    0.221601] usbcore: registered new device driver usb
[    0.634519] usbcore: registered new interface driver pegasus
[    0.634587] usbcore: registered new interface driver asix
[    0.634638] usbcore: registered new interface driver ax88179_178a
[    0.634685] usbcore: registered new interface driver cdc_ether
[    0.634757] usbcore: registered new interface driver smsc75xx
[    0.634830] usbcore: registered new interface driver smsc95xx
[    0.634879] usbcore: registered new interface driver net1080
[    0.634929] usbcore: registered new interface driver rndis_host
[    0.634977] usbcore: registered new interface driver cdc_subset
[    0.635023] usbcore: registered new interface driver zaurus
[    0.635085] usbcore: registered new interface driver cdc_ncm
[    0.635165] usbcore: registered new interface driver qmi_wwan_q
[    0.635217] usbcore: registered new interface driver qmi_wwan
[    0.635265] usbcore: registered new interface driver cdc_mbim
[    0.636364] usbcore: registered new interface driver cdc_acm
[    0.636428] usbcore: registered new interface driver cdc_wdm
[    0.636498] usbcore: registered new interface driver usb-storage
[    0.636630] usbcore: registered new interface driver option
[    0.636675] usbserial: USB Serial support registered for GSM modem (1-port)
[    0.663827] usbcore: registered new interface driver usbhid
[    0.663854] usbhid: USB HID core driver
[   26.468204] am335x-phy-driver 47400000.target-module:usb-phy@47401300: supply vcc not found, using dummy regulator
[   26.474599] am335x-phy-driver 47400000.target-module:usb-phy@47401300: dummy supplies not allowed for exclusive requests
[   26.918115] am335x-phy-driver 47401b00.usb-phy: supply vcc not found, using dummy regulator
[   26.980254] musb-hdrc musb-hdrc.0: MUSB HDRC host driver
[   27.039132] am335x-phy-driver 47401b00.usb-phy: dummy supplies not allowed for exclusive requests
[   27.137879] musb-hdrc musb-hdrc.0: new USB bus registered, assigned bus number 1
[   28.979167] musb-hdrc musb-hdrc.1: MUSB HDRC host driver
[   29.130427] musb-hdrc musb-hdrc.1: new USB bus registered, assigned bus number 2
root@ST6E98FB438EE:~#

Regards,
Shabana.

Please show the output of cat /sys/kernel/debug/usb/devices

root@ST6E98FB438EE:~# cat /sys/kernel/debug/usb/devices

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= 6.01
S:  Manufacturer=Linux 6.1.119-ti-gc9d30cb299f9 musb-hcd
S:  Product=MUSB HDRC host driver
S:  SerialNumber=musb-hdrc.0
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=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= 6.01
S:  Manufacturer=Linux 6.1.119-ti-gc9d30cb299f9 musb-hcd
S:  Product=MUSB HDRC host driver
S:  SerialNumber=musb-hdrc.1
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
root@ST6E98FB438EE:~#

You have no USB modem.

I am sure that I have given power to the Modem.

What else I can check?

Hi jfrog,

I am using the same hardware that works perfectly fine with kernel version 5.4. I am only updating the kernel to version 6.1, so I don’t think this is a hardware or power supply issue.

How can I further debug this issue?

Best regards,
Shabana

The USB device is not recognized.
With lsusb, you can not see the 2C7C.

Hi Bean,

How can I debug further?

Best Regards,
Shabana

Could you show how the EM06 is connected?
Please also check
dmesg | grep -i usb

It seems hardware problem.

Hi Bean,

I was able to bring up the LTE modem with kernel 6.1. The issue was in the device tree (DTB). Power was not assigned to the usb_phy bus. After assigning power to the bus, the issue was resolved.

Thanks,
Shabana.