<div dir="ltr">Hi again,<div><br></div><div>I think I solved this. The Quectel BG96 does not need the QMI_QUIRK as EC21/EC25.</div><div><br></div><div><div># git diff</div><div>diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c</div><div>index 8c37336..4682a93 100644</div><div>--- a/drivers/net/usb/qmi_wwan.c</div><div>+++ b/drivers/net/usb/qmi_wwan.c</div><div>@@ -1238,6 +1238,7 @@ static const struct usb_device_id products[] = {</div><div> {QMI_FIXED_INTF(0x1e0e, 0x9001, 5)}, /* SIMCom 7230E */</div><div> {QMI_QUIRK_SET_DTR(0x2c7c, 0x0125, 4)}, /* Quectel EC25, EC20 R2.0 Mini PCIe */</div><div> {QMI_QUIRK_SET_DTR(0x2c7c, 0x0121, 4)}, /* Quectel EC21 Mini PCIe */</div><div>+ {QMI_FIXED_INTF(0x2c7c, 0x0296, 4)}, /* Quectel ECBG96 */</div><div> </div><div> /* 4. Gobi 1000 devices */</div><div> {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */</div><div>diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c</div><div>index db3d34c..c0ddfef 100644</div><div>--- a/drivers/usb/serial/option.c</div><div>+++ b/drivers/usb/serial/option.c</div><div>@@ -241,6 +241,7 @@ static void option_instat_callback(struct urb *urb);</div><div> /* These Quectel products use Quectel's vendor ID */</div><div> #define QUECTEL_PRODUCT_EC21 0x0121</div><div> #define QUECTEL_PRODUCT_EC25 0x0125</div><div>+#define QUECTEL_PRODUCT_BG96 0x0296</div><div> </div><div> #define CMOTECH_VENDOR_ID 0x16d8</div><div> #define CMOTECH_PRODUCT_6001 0x6001</div><div>@@ -1185,6 +1186,8 @@ static const struct usb_device_id option_ids[] = {</div><div> .driver_info = (kernel_ulong_t)&net_intf4_blacklist },</div><div> { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25),</div><div> .driver_info = (kernel_ulong_t)&net_intf4_blacklist },</div><div>+ { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),</div><div>+ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },</div><div> { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) },</div><div> { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_300) },</div><div> { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6003),</div><div>#</div></div><div><br></div><div><div># qmicli -d /dev/cdc-wdm0 -p --device-open-qmi --dms-get-ids</div><div>[/dev/cdc-wdm0] Device IDs retrieved:</div><div><span style="white-space:pre"> </span> ESN: '0'</div><div><span style="white-space:pre"> </span>IMEI: '866425030013702'</div><div><span style="white-space:pre"> </span>MEID: 'unknown'</div><div># </div></div><div><br></div><div><div># qmicli -d /dev/cdc-wdm0 --nas-get-signal-strength</div><div>[/dev/cdc-wdm0] Successfully got signal strength</div><div>Current:</div><div><span style="white-space:pre"> </span>Network 'lte': '-47 dBm'</div><div>RSSI:</div><div><span style="white-space:pre"> </span>Network 'lte': '-47 dBm'</div><div>ECIO:</div><div><span style="white-space:pre"> </span>Network 'lte': '-31.5 dBm'</div><div>IO: '-106 dBm'</div><div>SINR (8): '9.0 dB'</div><div>RSRQ:</div><div><span style="white-space:pre"> </span>Network 'lte': '-8 dB'</div><div>SNR:</div><div><span style="white-space:pre"> </span>Network 'lte': '21.2 dB'</div><div>RSRP:</div><div><span style="white-space:pre"> </span>Network 'lte': '-56 dBm'</div><div>#</div></div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra"># qmicli -d /dev/cdc-wdm0 --dms-get-revision</div><div class="gmail_extra">[/dev/cdc-wdm0] Device revision retrieved:</div><div class="gmail_extra"><span style="white-space:pre"> </span>Revision: 'BG96MAR02A04M1G 1 [Sep 06 2017 08:00:00]'</div><div class="gmail_extra">#</div></div><div class="gmail_extra"><br></div><div class="gmail_extra">Regards,</div><div class="gmail_extra">Sebastian</div><div class="gmail_extra"><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Nov 13, 2017 at 8:28 AM, Sebastian Sjoholm <span dir="ltr"><<a href="mailto:sebastian.sjoholm@gmail.com" target="_blank">sebastian.sjoholm@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi,<div><br></div><div>I am trying to get Quectel BG96 to work with qmicli. I have added the BG96 to option.c and qmi_wwan.c (see at the end of the email).</div><div><br></div><div>AT port works OK, also the DIAG port.</div><div><br></div><div>But I get timeout on qmi commands, which makes me suspect that maybe my addition to the qmi_wwan.c might not be correct. I have assumed that it would have been handled in the same way as EC21/EC25 and that might not be correct. The BG96 is based on Qualcomm MDM9206 which is different from the EC21/EC25 which uses Qualcomm MDM9207.</div><div><br></div><div>I can from QXDM see that I don't get any incoming QMI commands on the BG96.</div><div><br></div><div>Any hints how to proceed with this?</div><div><br></div><div>Regards,</div><div>Sebastian</div><div><br></div><div><div>root@sbc-bg96:/opt/libqmi# qmicli -d /dev/cdc-wdm0 -p --device-open-qmi --dms-get-ids -v</div><div>[13 Nov 2017, 07:46:43] [Debug] [/dev/cdc-wdm0] Opening device with flags 'proxy'...</div><div>[13 Nov 2017, 07:46:43] [Debug] [/dev/cdc-wdm0] loaded driver of cdc-wdm port: qmi_wwan</div><div>[13 Nov 2017, 07:46:43] [Debug] [/dev/cdc-wdm0] sent message...</div><div><<<<<< RAW:</div><div><<<<<< length = 28</div><div><<<<<< data = 01:1B:00:00:00:00:00:01:00:FF:<wbr>10:00:01:0D:00:2F:64:65:76:2F:<wbr>63:64:63:2D:77:64:6D:30</div><div><br></div><div>[13 Nov 2017, 07:46:43] [Debug] [/dev/cdc-wdm0] sent generic request (translated)...</div><div><<<<<< QMUX:</div><div><<<<<< length = 27</div><div><<<<<< flags = 0x00</div><div><<<<<< service = "ctl"</div><div><<<<<< client = 0</div><div><<<<<< QMI:</div><div><<<<<< flags = "none"</div><div><<<<<< transaction = 1</div><div><<<<<< tlv_length = 16</div><div><<<<<< message = "Internal Proxy Open" (0xFF00)</div><div><<<<<< TLV:</div><div><<<<<< type = "Device Path" (0x01)</div><div><<<<<< length = 13</div><div><<<<<< value = 2F:64:65:76:2F:63:64:63:2D:77:<wbr>64:6D:30</div><div><<<<<< translated = /dev/cdc-wdm0</div><div><br></div><div>[13 Nov 2017, 07:46:43] [Debug] [/dev/cdc-wdm0] received message...</div><div><<<<<< RAW:</div><div><<<<<< length = 19</div><div><<<<<< data = 01:12:00:00:00:00:01:01:00:FF:<wbr>07:00:02:04:00:00:00:00:00</div><div><br></div><div>[13 Nov 2017, 07:46:43] [Debug] [/dev/cdc-wdm0] received generic response (translated)...</div><div><<<<<< QMUX:</div><div><<<<<< length = 18</div><div><<<<<< flags = 0x00</div><div><<<<<< service = "ctl"</div><div><<<<<< client = 0</div><div><<<<<< QMI:</div><div><<<<<< flags = "response"</div><div><<<<<< transaction = 1</div><div><<<<<< tlv_length = 7</div><div><<<<<< message = "Internal Proxy Open" (0xFF00)</div><div><<<<<< TLV:</div><div><<<<<< type = "Result" (0x02)</div><div><<<<<< length = 4</div><div><<<<<< value = 00:00:00:00</div><div><<<<<< translated = SUCCESS</div><div><br></div><div>[13 Nov 2017, 07:46:43] [Debug] QMI Device at '/dev/cdc-wdm0' ready</div><div>[13 Nov 2017, 07:46:43] [Debug] [/dev/cdc-wdm0] Assuming service 'dms' is supported...</div><div>[13 Nov 2017, 07:46:43] [Debug] [/dev/cdc-wdm0] Allocating new client ID...</div><div>[13 Nov 2017, 07:46:43] [Debug] [/dev/cdc-wdm0] sent message...</div><div><<<<<< RAW:</div><div><<<<<< length = 16</div><div><<<<<< data = 01:0F:00:00:00:00:00:02:22:00:<wbr>04:00:01:01:00:02</div><div><br></div><div>[13 Nov 2017, 07:46:43] [Debug] [/dev/cdc-wdm0] sent generic request (translated)...</div><div><<<<<< QMUX:</div><div><<<<<< length = 15</div><div><<<<<< flags = 0x00</div><div><<<<<< service = "ctl"</div><div><<<<<< client = 0</div><div><<<<<< QMI:</div><div><<<<<< flags = "none"</div><div><<<<<< transaction = 2</div><div><<<<<< tlv_length = 4</div><div><<<<<< message = "Allocate CID" (0x0022)</div><div><<<<<< TLV:</div><div><<<<<< type = "Service" (0x01)</div><div><<<<<< length = 1</div><div><<<<<< value = 02</div><div><<<<<< translated = dms</div><div><br></div><div>error: couldn't create client for the 'dms' service: CID allocation failed in the CTL client: Transaction timed out</div><div>#</div></div><div><br></div><div><div class="gmail-m_-1195598867642588862gmail_signature"><div dir="ltr"><div><span style="font-size:12.8px"># lsusb -t</span><br style="font-size:12.8px"><span style="font-size:12.8px">/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ci_hdrc/1p, 480M</span><br style="font-size:12.8px"><span style="font-size:12.8px"> |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M</span><br style="font-size:12.8px"><span style="font-size:12.8px"> |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=option, 480M</span><br style="font-size:12.8px"><span style="font-size:12.8px"> |__ Port 1: Dev 3, If 1, Class=Vendor Specific Class, Driver=option, 480M</span><br style="font-size:12.8px"><span style="font-size:12.8px"> |__ Port 1: Dev 3, If 2, Class=Vendor Specific Class, Driver=option, 480M</span><br style="font-size:12.8px"><span style="font-size:12.8px"> |__ Port 1: Dev 3, If 3, Class=Vendor Specific Class, Driver=option, 480M</span><br style="font-size:12.8px"><span style="font-size:12.8px"> |__ Port 1: Dev 3, If 4, Class=Vendor Specific Class, Driver=qmi_wwan, 480M</span><br style="font-size:12.8px"><span style="font-size:12.8px">/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ci_hdrc/1p, 480M </span></div><div><span style="font-size:12.8px">#</span><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px">lsusb -v printout:</span><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px">Bus 002 Device 003: ID 2c7c:0296</span><br style="font-size:12.8px"><span style="font-size:12.8px">Device Descriptor:</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bLength 18</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDescriptorType 1</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bcdUSB 2.00</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDeviceClass 0 (Defined at Interface level)</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDeviceSubClass 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDeviceProtocol 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bMaxPacketSize0 64</span><br style="font-size:12.8px"><span style="font-size:12.8px"> idVendor 0x2c7c</span><br style="font-size:12.8px"><span style="font-size:12.8px"> idProduct 0x0296</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bcdDevice 0.00</span><br style="font-size:12.8px"><span style="font-size:12.8px"> iManufacturer 3 Qualcomm, Incorporated</span><br style="font-size:12.8px"><span style="font-size:12.8px"> iProduct 2 Qualcomm CDMA Technologies MSM</span><br style="font-size:12.8px"><span style="font-size:12.8px"> iSerial 4 d1098243</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bNumConfigurations 1</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Configuration Descriptor:</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bLength 9</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDescriptorType 2</span><br style="font-size:12.8px"><span style="font-size:12.8px"> wTotalLength 145</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bNumInterfaces 5</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bConfigurationValue 1</span><br style="font-size:12.8px"><span style="font-size:12.8px"> iConfiguration 1 Qualcomm Configuration</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bmAttributes 0xe0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Self Powered</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Remote Wakeup</span><br style="font-size:12.8px"><span style="font-size:12.8px"> MaxPower 500mA</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Interface Descriptor:</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bLength 9</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDescriptorType 4</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterfaceNumber 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bAlternateSetting 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bNumEndpoints 2</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterfaceClass 255 Vendor Specific Class</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterfaceSubClass 255 Vendor Specific Subclass</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterfaceProtocol 255 Vendor Specific Protocol</span><br style="font-size:12.8px"><span style="font-size:12.8px"> iInterface 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Endpoint Descriptor:</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bLength 7</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDescriptorType 5</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bEndpointAddress 0x81 EP 1 IN</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bmAttributes 2</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Transfer Type Bulk</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Synch Type None</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Usage Type Data</span><br style="font-size:12.8px"><span style="font-size:12.8px"> wMaxPacketSize 0x0200 1x 512 bytes</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterval 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Endpoint Descriptor:</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bLength 7</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDescriptorType 5</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bEndpointAddress 0x01 EP 1 OUT</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bmAttributes 2</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Transfer Type Bulk</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Synch Type None</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Usage Type Data</span><br style="font-size:12.8px"><span style="font-size:12.8px"> wMaxPacketSize 0x0200 1x 512 bytes</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterval 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Interface Descriptor:</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bLength 9</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDescriptorType 4</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterfaceNumber 1</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bAlternateSetting 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bNumEndpoints 2</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterfaceClass 255 Vendor Specific Class</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterfaceSubClass 255 Vendor Specific Subclass</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterfaceProtocol 255 Vendor Specific Protocol</span><br style="font-size:12.8px"><span style="font-size:12.8px"> iInterface 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Endpoint Descriptor:</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bLength 7</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDescriptorType 5</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bEndpointAddress 0x82 EP 2 IN</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bmAttributes 2</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Transfer Type Bulk</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Synch Type None</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Usage Type Data</span><br style="font-size:12.8px"><span style="font-size:12.8px"> wMaxPacketSize 0x0200 1x 512 bytes</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterval 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Endpoint Descriptor:</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bLength 7</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDescriptorType 5</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bEndpointAddress 0x02 EP 2 OUT</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bmAttributes 2</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Transfer Type Bulk</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Synch Type None</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Usage Type Data</span><br style="font-size:12.8px"><span style="font-size:12.8px"> wMaxPacketSize 0x0200 1x 512 bytes</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterval 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Interface Descriptor:</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bLength 9</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDescriptorType 4</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterfaceNumber 2</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bAlternateSetting 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bNumEndpoints 3</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterfaceClass 255 Vendor Specific Class</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterfaceSubClass 255 Vendor Specific Subclass</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterfaceProtocol 255 Vendor Specific Protocol</span><br style="font-size:12.8px"><span style="font-size:12.8px"> iInterface 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Endpoint Descriptor:</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bLength 7</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDescriptorType 5</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bEndpointAddress 0x83 EP 3 IN</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bmAttributes 3</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Transfer Type Interrupt</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Synch Type None</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Usage Type Data</span><br style="font-size:12.8px"><span style="font-size:12.8px"> wMaxPacketSize 0x0040 1x 64 bytes</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterval 5</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Endpoint Descriptor:</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bLength 7</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDescriptorType 5</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bEndpointAddress 0x84 EP 4 IN</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bmAttributes 2</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Transfer Type Bulk</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Synch Type None</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Usage Type Data</span><br style="font-size:12.8px"><span style="font-size:12.8px"> wMaxPacketSize 0x0200 1x 512 bytes</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterval 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Endpoint Descriptor:</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bLength 7</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDescriptorType 5</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bEndpointAddress 0x03 EP 3 OUT</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bmAttributes 2</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Transfer Type Bulk</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Synch Type None</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Usage Type Data</span><br style="font-size:12.8px"><span style="font-size:12.8px"> wMaxPacketSize 0x0200 1x 512 bytes</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterval 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Interface Descriptor:</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bLength 9</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDescriptorType 4</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterfaceNumber 3</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bAlternateSetting 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bNumEndpoints 3</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterfaceClass 255 Vendor Specific Class</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterfaceSubClass 254</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterfaceProtocol 255</span><br style="font-size:12.8px"><span style="font-size:12.8px"> iInterface 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Endpoint Descriptor:</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bLength 7</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDescriptorType 5</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bEndpointAddress 0x85 EP 5 IN</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bmAttributes 3</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Transfer Type Interrupt</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Synch Type None</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Usage Type Data</span><br style="font-size:12.8px"><span style="font-size:12.8px"> wMaxPacketSize 0x0040 1x 64 bytes</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterval 5</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Endpoint Descriptor:</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bLength 7</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDescriptorType 5</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bEndpointAddress 0x86 EP 6 IN</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bmAttributes 2</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Transfer Type Bulk</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Synch Type None</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Usage Type Data</span><br style="font-size:12.8px"><span style="font-size:12.8px"> wMaxPacketSize 0x0200 1x 512 bytes</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterval 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Endpoint Descriptor:</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bLength 7</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDescriptorType 5</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bEndpointAddress 0x04 EP 4 OUT</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bmAttributes 2</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Transfer Type Bulk</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Synch Type None</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Usage Type Data</span><br style="font-size:12.8px"><span style="font-size:12.8px"> wMaxPacketSize 0x0200 1x 512 bytes</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterval 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Interface Descriptor:</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bLength 9</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDescriptorType 4</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterfaceNumber 4</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bAlternateSetting 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bNumEndpoints 3</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterfaceClass 255 Vendor Specific Class</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterfaceSubClass 255 Vendor Specific Subclass</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterfaceProtocol 255 Vendor Specific Protocol</span><br style="font-size:12.8px"><span style="font-size:12.8px"> iInterface 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Endpoint Descriptor:</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bLength 7</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDescriptorType 5</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bEndpointAddress 0x87 EP 7 IN</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bmAttributes 3</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Transfer Type Interrupt</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Synch Type None</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Usage Type Data</span><br style="font-size:12.8px"><span style="font-size:12.8px"> wMaxPacketSize 0x0040 1x 64 bytes</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterval 5</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Endpoint Descriptor:</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bLength 7</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDescriptorType 5</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bEndpointAddress 0x88 EP 8 IN</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bmAttributes 2</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Transfer Type Bulk</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Synch Type None</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Usage Type Data</span><br style="font-size:12.8px"><span style="font-size:12.8px"> wMaxPacketSize 0x0200 1x 512 bytes</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterval 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Endpoint Descriptor:</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bLength 7</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDescriptorType 5</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bEndpointAddress 0x05 EP 5 OUT</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bmAttributes 2</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Transfer Type Bulk</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Synch Type None</span><br style="font-size:12.8px"><span style="font-size:12.8px"> Usage Type Data</span><br style="font-size:12.8px"><span style="font-size:12.8px"> wMaxPacketSize 0x0200 1x 512 bytes</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bInterval 0</span><br style="font-size:12.8px"><span style="font-size:12.8px">Device Qualifier (for other device speed):</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bLength 10</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDescriptorType 6</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bcdUSB 2.00</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDeviceClass 0 (Defined at Interface level)</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDeviceSubClass 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bDeviceProtocol 0</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bMaxPacketSize0 64</span><br style="font-size:12.8px"><span style="font-size:12.8px"> bNumConfigurations 1</span><br style="font-size:12.8px"><span style="font-size:12.8px">Device Status: 0x0000</span><br style="font-size:12.8px"><span style="font-size:12.8px"> (Bus Powered)</span><br style="font-size:12.8px"><br style="font-size:12.8px"><div><span style="font-size:12.8px"># uname -a</span></div><div><span style="font-size:12.8px">Linux sbc-bg96 4.13.12-BG96-dirty #1 SMP Sun Nov 12 16:33:31 CET 2017 armv7l GNU/Linux</span></div><div><span style="font-size:12.8px"># </span></div><br style="font-size:12.8px"><span style="font-size:12.8px">diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c index 8c37336..feb11fc 100644</span><br style="font-size:12.8px"><span style="font-size:12.8px">--- a/drivers/net/usb/qmi_wwan.c</span><br style="font-size:12.8px"><span style="font-size:12.8px">+++ b/drivers/net/usb/qmi_wwan.c</span><br style="font-size:12.8px"><span style="font-size:12.8px">@@ -1238,6 +1238,7 @@ static const struct usb_device_id products[] = {</span><br style="font-size:12.8px"><span style="font-size:12.8px"> {QMI_FIXED_INTF(0x1e0e, 0x9001, 5)}, /* SIMCom 7230E */</span><br style="font-size:12.8px"><span style="font-size:12.8px"> {QMI_QUIRK_SET_DTR(0x2c7c, 0x0125, 4)}, /* Quectel EC25, EC20 R2.0 Mini PCIe */</span><br style="font-size:12.8px"><span style="font-size:12.8px"> {QMI_QUIRK_SET_DTR(0x2c7c, 0x0121, 4)}, /* Quectel EC21 Mini PCIe */</span><br style="font-size:12.8px"><span style="font-size:12.8px">+ {QMI_QUIRK_SET_DTR(0x2c7c, 0x0296, 4)}, /* Quectel ECBG96 */</span><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px"> /* 4. Gobi 1000 devices */</span><br style="font-size:12.8px"><span style="font-size:12.8px"> {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */</span><br style="font-size:12.8px"><span style="font-size:12.8px">diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index db3d34c..c0ddfef 100644</span><br style="font-size:12.8px"><span style="font-size:12.8px">--- a/drivers/usb/serial/option.c</span><br style="font-size:12.8px"><span style="font-size:12.8px">+++ b/drivers/usb/serial/option.c</span><br style="font-size:12.8px"><span style="font-size:12.8px">@@ -241,6 +241,7 @@ static void option_instat_callback(struct urb *urb);</span><br style="font-size:12.8px"><span style="font-size:12.8px"> /* These Quectel products use Quectel's vendor ID */</span><br style="font-size:12.8px"><span style="font-size:12.8px"> #define QUECTEL_PRODUCT_EC21 0x0121</span><br style="font-size:12.8px"><span style="font-size:12.8px"> #define QUECTEL_PRODUCT_EC25 0x0125</span><br style="font-size:12.8px"><span style="font-size:12.8px">+#define QUECTEL_PRODUCT_BG96 0x0296</span><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px"> #define CMOTECH_VENDOR_ID 0x16d8</span><br style="font-size:12.8px"><span style="font-size:12.8px"> #define CMOTECH_PRODUCT_6001 0x6001</span><br style="font-size:12.8px"><span style="font-size:12.8px">@@ -1185,6 +1186,8 @@ static const struct usb_device_id option_ids[] = {</span><br style="font-size:12.8px"><span style="font-size:12.8px"> .driver_info = (kernel_ulong_t)&net_intf4_bla</span><span style="font-size:12.8px"><wbr>cklist },</span><br style="font-size:12.8px"><span style="font-size:12.8px"> { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25),</span><br style="font-size:12.8px"><span style="font-size:12.8px"> .driver_info = (kernel_ulong_t)&net_intf4_bla</span><span style="font-size:12.8px"><wbr>cklist },</span><br style="font-size:12.8px"><span style="font-size:12.8px">+ { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),</span><br style="font-size:12.8px"><span style="font-size:12.8px">+ .driver_info = (kernel_ulong_t)&net_intf4_bla</span><span style="font-size:12.8px"><wbr>cklist },</span><br style="font-size:12.8px"><span style="font-size:12.8px"> { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) },</span><br style="font-size:12.8px"><span style="font-size:12.8px"> { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_300) },</span><br style="font-size:12.8px"><span style="font-size:12.8px"> { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6003),</span><br style="font-size:12.8px"></div></div></div>
</div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><span style="font-size:small">Sebastian Sjöholm</span><br style="font-size:small"><br style="font-size:small"><span style="font-size:small">Simborgarvägen 116</span><br style="font-size:small"><span style="font-size:small">SE-18439 Åkersberga</span><br style="font-size:small"><span style="font-size:small">Sverige</span><br style="font-size:small"><br style="font-size:small"><span style="font-size:small">Mobile : +46 76 335 0667</span><br style="font-size:small"><span style="font-size:small">Email : </span><a href="mailto:sebastian.sjoholm@gmail.com" style="color:rgb(17,85,204);font-size:small" target="_blank">sebastian.sjoholm@gmail.com</a><br style="font-size:small"><span style="font-size:small">Skype : ssjoholm</span><br></div></div></div>
</div></div>