I’m trying to bring up a single EM7565 modem on a Linux system.
The modem appears to have nonstandard VID:PID of 1199:90c3
:
$ lsusb
<...>
Bus 002 Device 007: ID 1199:90c3 Sierra Wireless, Inc. Sierra Wireless EM7565 with Qualcomm Snapdragon X16 LTE
<...>
I patched qcserial and qmi_wwan to accept this PID:
diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
index 8b4ad10cf940..225a57ecb2ef 100644
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -1320,6 +1320,7 @@ static const struct usb_device_id products[] = {
{QMI_QUIRK_SET_DTR(0x1199, 0x907b, 8)}, /* Sierra Wireless EM74xx */
{QMI_QUIRK_SET_DTR(0x1199, 0x907b, 10)},/* Sierra Wireless EM74xx */
{QMI_QUIRK_SET_DTR(0x1199, 0x9091, 8)}, /* Sierra Wireless EM7565 */
+ {QMI_QUIRK_SET_DTR(0x1199, 0x90c3, 8)}, /* Sierra Wireless EM7565 (Lenovo) */
{QMI_FIXED_INTF(0x1bbb, 0x011e, 4)}, /* Telekom Speedstick LTE II (Alcatel One Touch L100V LTE) */
{QMI_FIXED_INTF(0x1bbb, 0x0203, 2)}, /* Alcatel L800MA */
{QMI_FIXED_INTF(0x2357, 0x0201, 4)}, /* TP-LINK HSUPA Modem MA180 */
diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c
index 613f91add03d..f7512f8daa4d 100644
--- a/drivers/usb/serial/qcserial.c
+++ b/drivers/usb/serial/qcserial.c
@@ -164,6 +164,8 @@ static const struct usb_device_id id_table[] = {
{DEVICE_SWI(0x1199, 0x907b)}, /* Sierra Wireless EM74xx */
{DEVICE_SWI(0x1199, 0x9090)}, /* Sierra Wireless EM7565 QDL */
{DEVICE_SWI(0x1199, 0x9091)}, /* Sierra Wireless EM7565 */
+ {DEVICE_SWI(0x1199, 0x90c2)}, /* Sierra Wireless EM7565 (Lenovo) QDL */
+ {DEVICE_SWI(0x1199, 0x90c3)}, /* Sierra Wireless EM7565 (Lenovo) */
{DEVICE_SWI(0x413c, 0x81a2)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card */
{DEVICE_SWI(0x413c, 0x81a3)}, /* Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card */
{DEVICE_SWI(0x413c, 0x81a4)}, /* Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card */
The problem is that the module appears to be locked in a USB composition without QMI/MBIM or AT interfaces:
lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/15p, 480M
<...>
|__ Port 10: Dev 7, If 2, Class=Vendor Specific Class, Driver=qcserial, 480M
|__ Port 10: Dev 7, If 0, Class=Vendor Specific Class, Driver=qcserial, 480M
|__ Port 10: Dev 7, If 1, Class=Vendor Specific Class, Driver=, 480M
<...>
Is it possible to change the USB composition using only the diagnostic port?