EM7355 Kernel configs

Hello,

We’re trying to use EM7355 in Jetson Nano. The kernel is 4.9.140. I’ve not been able to get the device working by enabling the following configs

CONFIG_USB_SIERRA_NET=y
CONFIG_USB_SERIAL_SIERRAWIRELESS=y
CONFIG_USB_SERIAL_QUALCOMM=y
CONFIG_USB_NET_QMI_WWAN=y
CONFIG_USB_SERIAL_WWAN=y
CONFIG_MII=y

I find the device ID is supported in CONFIG_USB_SERIAL_QUALCOMM, qcserial.c; but it fails to load the driver at “if (intf->desc.bInterfaceClass != USB_CLASS_VENDOR_SPEC)”;
the interface class it gets [USB_CLASS_COMM] and [USB_CLASS_CDC_DATA]. Then I add the device ID to another driver file CONFIG_USB_SERIAL_SIERRAWIRELESS, sierra.c and I can see that it installed two serial ports ttyUSB0 and ttyUSB1. I see in the dmesg log “sierra ttyUSB0: sierra_submit_rx_urbs: submit urb failed”. I also tried to talk to the modem at 9600bps using minicom and got no answer by typing ‘at’, it may be in data mode. I think this is not the correct driver.

Some information

lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/5p, 480M
|__ Port 1: Dev 2, If 12, Class=Communications, Driver=sierra, 480M
|__ Port 1: Dev 2, If 13, Class=CDC Data, Driver=sierra, 480M

cat /sys/kernel/debug/usb/devices

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= 2
P: Vendor=03f0 ProdID=4e1d Rev= 0.06
S: Manufacturer=Sierra Wireless, Incorporated
S: Product=HP lt4111 LTE/EV-DO/HSPA+ Gobi 4G Module
C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA
I: If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=
E: Ad=82(I) Atr=03(Int.) MxPS= 12 Ivl=32ms
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I: If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=
E: Ad=84(I) Atr=03(Int.) MxPS= 12 Ivl=32ms
E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I: If#= 8 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=
E: Ad=86(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=
E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
C:* #Ifs= 2 Cfg#= 2 Atr=e0 MxPwr=500mA
A: FirstIf#=12 IfCount= 2 Cls=02(comm.) Sub=0e Prot=00
I:* If#=12 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=sierra
E: Ad=82(I) Atr=03(Int.) MxPS= 64 Ivl=32ms
I: If#=13 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=02 Driver=sierra
I:* If#=13 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=sierra
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

I need some direction to move forward.

Any help is appreciated.

Thanks,
Hakim

Your modem is configured for MBIM without any serial functions. You need the cdc_mbim driver for that.

Or, since you have a dual config, you can switch to the qmi config by writing 1 to the /sys/bus/usb/devices/…/bConfiguration attribute. Then the qcserial and qmi_wwan drivers should bind

Thanks a lot, MBIM, cdc_mbim driver worked.