how to support EM7565 modem

Sebastian Sjoholm sebastian.sjoholm at gmail.com
Fri Dec 8 03:42:00 UTC 2017


> 
> On Dec 7, 2017, at 22:33 , Reinhard Speyerer <rspmn at arcor.de> wrote:
> 
> 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.

This is same version as my EM7565 arrived with.

I associate the “jenkins” to the CI framework, which makes me thinking that this might still be work in progress on the firmware.

> 
> 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

I have not forwarded the patch yet, and I guess that was good, since it seems that we need to add more, right?

-Sebastian





More information about the libqmi-devel mailing list