how to support EM7565 modem

Reinhard Speyerer rspmn at arcor.de
Thu Dec 7 21:33:24 UTC 2017


On Sat, Nov 25, 2017 at 02:12:50PM +0100, Bjørn Mork wrote:
> Maybe the function configuration changed, removing the additional rmnet functions, but Sierra didn't update their AT command cli yet? I assume this is still an early firmware version.
> 

Hi all,

the EM7565 I received yesterday has firmware version
SWI9X50C_01.00.02.00 6ff48a jenkins 2017/09/29 05:54:26 and also shows
the AT!USBCOMP?/QMI interface mismatches described by Sebastian. Don't
know if 01.00.02.00 (ATI reports IMEI SV: 2) still should be
considered an early firmware version.

The DMS version of the EM7565 differs from previous Sierra Wireless
devices it has been reset to 1.0 similar to what has been observed for
some/all(?) newer Quectel devices:

# qmicli -d /dev/cdc-wdm0 --get-service-version-info
[/dev/cdc-wdm0] Supported versions:
	ctl (1.5)
	wds (1.119)
	dms (1.0)
	nas (1.25)
	qos (1.12)
	wms (1.10)
	auth (1.3)
	at (1.4)
	voice (2.1)
	cat2 (2.24)
	uim (1.77)
	pbm (1.4)
	test (1.0)
	loc (2.0)
	sar (1.0)
	ts (1.0)
	tmd (1.0)
	wda (1.16)
	csvt (1.1)
	coex (1.0)
	pdc (1.0)
	rfrpe (1.0)
	dsd (1.0)
	unknown [0x30] (1.0)
	unknown [0x31] (1.0)
	unknown [0x36] (1.0)
	unknown [0x44] (1.0)
	unknown [0x47] (1.0)
	unknown [0xf0] (1.0)
	unknown [0xf3] (1.0)
	unknown [0xf5] (1.0)
	unknown [0xf6] (1.0)
	unknown [0xfc] (1.0)

> The help text is similar to the EM7455 text, including the bugs.. Only the config type has been updated with the PCIE  setting. Notice the claimed default. You aren't even allowed to select that value anymore. But you can probably enable adb by other methods, or maybe by unlocking more advanced AT features.
> 
> 
> Bjørn 
> 
> On November 25, 2017 1:02:32 AM GMT+01:00, Sebastian Sjoholm <sebastian.sjoholm at gmail.com> wrote:
> >Hi,
> >
> >Here is some printouts from EM7565 that might be of interest. The
> >addition
> >in qcserial/qmi_wwan was enough, but I will do some more testing before
> >I
> >settle for the changes (and post them here).
> >

When trying to use the GPS port of the EM7565 I noticed that it would
not send NMEA data after activating them with echo '$GPS_START' >
/dev/ttyUSB1 when only using {DEVICE_SWI(0x1199, 0x9091)} in the
qcserial driver. At least for firmware version 01.00.02.00 send_setup
on USB interface 2 has to be added too like this

--- drivers/usb/serial/qcserial.c.orig	2017-07-27 18:10:39.000000000 -0400
+++ drivers/usb/serial/qcserial.c	2017-12-07 15:22:05.106625551 -0500
@@ -30,6 +30,7 @@ enum qcserial_layouts {
 	QCSERIAL_G1K = 1,	/* Gobi 1000 */
 	QCSERIAL_SWI = 2,	/* Sierra Wireless */
 	QCSERIAL_HWI = 3,	/* Huawei */
+	QCSERIAL_SW2 = 4,	/* SWI with send_setup for GPS port too */
 };
 
 #define DEVICE_G1K(v, p) \
@@ -38,6 +39,8 @@ enum qcserial_layouts {
 	USB_DEVICE(v, p), .driver_info = QCSERIAL_SWI
 #define DEVICE_HWI(v, p) \
 	USB_DEVICE(v, p), .driver_info = QCSERIAL_HWI
+#define DEVICE_SW2(v, p) \
+	USB_DEVICE(v, p), .driver_info = QCSERIAL_SW2
 
 static const struct usb_device_id id_table[] = {
 	/* Gobi 1000 devices */
@@ -165,6 +168,8 @@ static const struct usb_device_id id_tab
 	{DEVICE_SWI(0x1199, 0x9079)},	/* Sierra Wireless EM74xx */
 	{DEVICE_SWI(0x1199, 0x907a)},	/* Sierra Wireless EM74xx QDL */
 	{DEVICE_SWI(0x1199, 0x907b)},	/* Sierra Wireless EM74xx */
+	{DEVICE_SWI(0x1199, 0x9090)},	/* Sierra Wireless EM7565 QDL */
+	{DEVICE_SW2(0x1199, 0x9091)},	/* Sierra Wireless EM7565 */
 	{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 */
@@ -328,6 +333,7 @@ static int qcprobe(struct usb_serial *se
 		}
 		break;
 	case QCSERIAL_SWI:
+	case QCSERIAL_SW2:
 		/*
 		 * Sierra Wireless layout:
 		 * 0: DM/DIAG (use libqcdm from ModemManager for communication)
@@ -341,6 +347,8 @@ static int qcprobe(struct usb_serial *se
 			break;
 		case 2:
 			dev_dbg(dev, "NMEA GPS interface found\n");
+			if (id->driver_info == QCSERIAL_SW2)
+				sendsetup = true;
 			break;
 		case 3:
 			dev_dbg(dev, "Modem port found\n");

to make the GPS port work.

Regards,
Reinhard


More information about the libqmi-devel mailing list