High CPU usage of ksoftirqd caused by USB Audio of EC20CEFAG

The EC20 (firmware EC20CEFAGR06A15M4G) seems to send excessive interrupts to the host computer (Debian 11, kernel 5.10.162-1) after running for some time, leading ksoftirqd to consume nearly 100% CPU. The rate seen from /proc/interrupts is 27652.7 times/s for xhci_hcd. The possible kernel call stack can be seen in the below flame graph (usb_giveback_urb_bh>snd_complete_urb>usb_hcd_submit_urb>xhci_urb_enqueue>xhci_irq).

The symptom seems related to the USB audio feature of this module. The high CPU usage goes immediately away after alsa’s snd_pcm_close() is called for the module’s audio endpoint. The AT console is responsive throughout the incident.

Steps used to enable the USB audio device can be seen from soundcard_init() and alsa_card_init() at asterisk-chan-quectel/chan_quectel.c at master · IchthysMaranatha/asterisk-chan-quectel · GitHub

The symptom won’t happen if the code for setting up the USB audio device is not executed.

This symptom has been discovered several times on this module. Resetting the device through AT console (AT+CFUN=1,1) or unplug and plug it again doesn’t make USB Audio function work normally. Rebooting the host system fixes this problem.

I wonder if this has been fixed in some newer firmware versions, or what should be supplied to help with debugging.

By the way, I realized that quectel have released a new firmware for EC20 (EC20CEFAGR06A16M4G or newer) ,

however, the link in the post seems to be invalid. Can you help to send me a latest firmware update for EC20?

Thanks in advanced.

OK,can you give your e-mail?

Sure, I’ve sent the email address to you via direct message.

Hi,send to you,pls chk.

1 Like