Quectel BG96

Sebastian Sjoholm sebastian.sjoholm at gmail.com
Sun Oct 22 08:50:52 UTC 2017


Hi,

I have tested Quectel BG96 (DevKit) with libqmi 1.16.5 and it seems to work, made some additions in qmi_wwan.c and option.c, modelled it after EC21/EC25. The chipset is MDM9206. I have no RF yet, so cannot test data connection, but I will get back on that.

I tried also libqmi 1.18 branch as well master branch but received “qmicli: symbol lookup error: qmicli: undefined symbol: qmi_message_uim_power_off_sim_input_unref” error, maybe it is my setup so I will dig further on that.

root at 6560b:/opt/libqmi-1-18# qmicli
qmicli: symbol lookup error: qmicli: undefined symbol: qmi_message_uim_power_off_sim_input_unref
root at 6560b:/opt/libqmi-1-18#

-Sebastian

root at 6560b:/opt/libqmi-1-16# qmicli -V

qmicli 1.16.5
Copyright (C) 2015 Aleksander Morgado
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl-2.0.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

root at 6560b:/opt/libqmi-1-16#

root at 6560b:/opt/libqmi-1-16# qmicli -d /dev/cdc-wdm0 --dms-get-capabilities
[/dev/cdc-wdm0] Device capabilities retrieved:
	Max TX channel rate: '50000000'
	Max RX channel rate: '100000000'
	       Data Service: 'cs'
	                SIM: 'supported'
	           Networks: 'gsm, lte'
root at 6560b:/opt/libqmi-1-16# qmicli -d /dev/cdc-wdm0 --nas-get-signal-strength
[/dev/cdc-wdm0] Successfully got signal strength
Current:
	Network 'none': '-128 dBm'
RSSI:
	Network 'none': '-128 dBm'
ECIO:
	Network 'none': '-2,5 dBm'
IO: '-106 dBm'
SINR (8): '9,0 dB'
root at 6560b:/opt/libqmi-1-16# qmicli -d /dev/cdc-wdm0 --dms-get-band-capabilities
[/dev/cdc-wdm0] Device band capabilities retrieved:
	Bands: 'gsm-dcs-1800, gsm-900-extended, gsm-900-primary, gsm-850, gsm-pcs-1900'
	LTE bands: '1, 2, 3, 4, 5, 8, 12, 13, 17, 18, 19, 20, 39'
root at 6560b:/opt/libqmi-1-16#

AT Port is OK:

ati
Quectel
BG96
Revision: BG96MAR02A02M1G

OK

USB info:

root at 6560b:/opt/libqmi-1-16# lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
   |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
       |__ Port 1: Dev 3, If 2, Class=Vendor Specific Class, Driver=option, 480M
       |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=option, 480M
       |__ Port 1: Dev 3, If 3, Class=Vendor Specific Class, Driver=option, 480M
       |__ Port 1: Dev 3, If 1, Class=Vendor Specific Class, Driver=option, 480M
       |__ Port 1: Dev 3, If 4, Class=Vendor Specific Class, Driver=qmi_wwan, 480M
       |__ Port 2: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
       |__ Port 4: Dev 5, If 1, Class=Video, Driver=uvcvideo, 480M
       |__ Port 4: Dev 5, If 0, Class=Video, Driver=uvcvideo, 480M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
   |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
       |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=, 12M
root at 6560b:/opt/libqmi-1-16# lsusb
Bus 002 Device 005: ID 0461:4dc7 Primax Electronics, Ltd 
Bus 002 Device 004: ID 046d:c00e Logitech, Inc. M-BJ58/M-BJ69 Optical Wheel Mouse
Bus 002 Device 003: ID 2c7c:0296  
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 138a:003c Validity Sensors, Inc. VFS471 Fingerprint Reader
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root at 6560b:/opt/libqmi-1-16#

root at 6560b:/opt/libqmi-1-16# lsusb -v -d 2c7c:0296

Bus 002 Device 003: ID 2c7c:0296  
Device Descriptor:
 bLength                18
 bDescriptorType         1
 bcdUSB               2.00
 bDeviceClass            0 (Defined at Interface level)
 bDeviceSubClass         0 
 bDeviceProtocol         0 
 bMaxPacketSize0        64
 idVendor           0x2c7c 
 idProduct          0x0296 
 bcdDevice            0.00
 iManufacturer           3 Qualcomm, Incorporated
 iProduct                2 Qualcomm CDMA Technologies MSM
 iSerial                 4 d1098243
 bNumConfigurations      1
 Configuration Descriptor:
   bLength                 9
   bDescriptorType         2
   wTotalLength          145
   bNumInterfaces          5
   bConfigurationValue     1
   iConfiguration          1 Qualcomm Configuration
   bmAttributes         0xe0
     Self Powered
     Remote Wakeup
   MaxPower              500mA
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        0
     bAlternateSetting       0
     bNumEndpoints           2
     bInterfaceClass       255 Vendor Specific Class
     bInterfaceSubClass    255 Vendor Specific Subclass
     bInterfaceProtocol    255 Vendor Specific Protocol
     iInterface              0 
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x81  EP 1 IN
       bmAttributes            2
         Transfer Type            Bulk
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0200  1x 512 bytes
       bInterval               0
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x01  EP 1 OUT
       bmAttributes            2
         Transfer Type            Bulk
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0200  1x 512 bytes
       bInterval               0
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        1
     bAlternateSetting       0
     bNumEndpoints           2
     bInterfaceClass       255 Vendor Specific Class
     bInterfaceSubClass    255 Vendor Specific Subclass
     bInterfaceProtocol    255 Vendor Specific Protocol
     iInterface              0 
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x82  EP 2 IN
       bmAttributes            2
         Transfer Type            Bulk
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0200  1x 512 bytes
       bInterval               0
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x02  EP 2 OUT
       bmAttributes            2
         Transfer Type            Bulk
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0200  1x 512 bytes
       bInterval               0
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        2
     bAlternateSetting       0
     bNumEndpoints           3
     bInterfaceClass       255 Vendor Specific Class
     bInterfaceSubClass    255 Vendor Specific Subclass
     bInterfaceProtocol    255 Vendor Specific Protocol
     iInterface              0 
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x83  EP 3 IN
       bmAttributes            3
         Transfer Type            Interrupt
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0040  1x 64 bytes
       bInterval               5
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x84  EP 4 IN
       bmAttributes            2
         Transfer Type            Bulk
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0200  1x 512 bytes
       bInterval               0
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x03  EP 3 OUT
       bmAttributes            2
         Transfer Type            Bulk
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0200  1x 512 bytes
       bInterval               0
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        3
     bAlternateSetting       0
     bNumEndpoints           3
     bInterfaceClass       255 Vendor Specific Class
     bInterfaceSubClass    254 
     bInterfaceProtocol    255 
     iInterface              0 
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x85  EP 5 IN
       bmAttributes            3
         Transfer Type            Interrupt
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0040  1x 64 bytes
       bInterval               5
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x86  EP 6 IN
       bmAttributes            2
         Transfer Type            Bulk
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0200  1x 512 bytes
       bInterval               0
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x04  EP 4 OUT
       bmAttributes            2
         Transfer Type            Bulk
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0200  1x 512 bytes
       bInterval               0
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        4
     bAlternateSetting       0
     bNumEndpoints           3
     bInterfaceClass       255 Vendor Specific Class
     bInterfaceSubClass    255 Vendor Specific Subclass
     bInterfaceProtocol    255 Vendor Specific Protocol
     iInterface              0 
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x87  EP 7 IN
       bmAttributes            3
         Transfer Type            Interrupt
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0040  1x 64 bytes
       bInterval               5
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x88  EP 8 IN
       bmAttributes            2
         Transfer Type            Bulk
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0200  1x 512 bytes
       bInterval               0
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x05  EP 5 OUT
       bmAttributes            2
         Transfer Type            Bulk
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0200  1x 512 bytes
       bInterval               0
Device Qualifier (for other device speed):
 bLength                10
 bDescriptorType         6
 bcdUSB               2.00
 bDeviceClass            0 (Defined at Interface level)
 bDeviceSubClass         0 
 bDeviceProtocol         0 
 bMaxPacketSize0        64
 bNumConfigurations      1
Device Status:     0x0000
 (Bus Powered)
root at 6560b:/opt/libqmi-1-16#

dmesg:

[    4.926988] usbcore: registered new interface driver option
[    4.927000] usbserial: USB Serial support registered for GSM modem (1-port)
[    4.927081] option 2-1.1:1.0: GSM modem (1-port) converter detected
[    4.937403] usb 2-1.1: GSM modem (1-port) converter now attached to ttyUSB0
[    4.937454] option 2-1.1:1.1: GSM modem (1-port) converter detected
[    4.937535] usb 2-1.1: GSM modem (1-port) converter now attached to ttyUSB1
[    4.937568] option 2-1.1:1.2: GSM modem (1-port) converter detected
[    4.937694] usb 2-1.1: GSM modem (1-port) converter now attached to ttyUSB2
[    4.937726] option 2-1.1:1.3: GSM modem (1-port) converter detected
[    4.937780] usbcore: registered new interface driver cdc_wdm
[    4.937824] usb 2-1.1: GSM modem (1-port) converter now attached to ttyUSB3
[    5.109465] qmi_wwan 2-1.1:1.4: cdc-wdm0: USB WDM device
[    5.115037] qmi_wwan 2-1.1:1.4 wwan0: register 'qmi_wwan' at usb-0000:00:1d.0-1.1, WWAN/QMI device, 3e:49:e1:62:29:62
[    5.115065] usbcore: registered new interface driver qmi_wwan

root at 6560b:~# uname -a
Linux 6560b 4.13.8 #1 SMP Sat Oct 21 11:05:10 CEST 2017 x86_64 x86_64 x86_64 GNU/Linux
root at 6560b:~#

Kernel module: qmi_wwan.c

root at 6560b:~/linux-4.13.8/drivers/net/usb# diff -u qmi_wwan.c qmi_wwan.c_original 
--- qmi_wwan.c	2017-10-21 16:21:59.595279857 +0200
+++ qmi_wwan.c_original	2017-10-21 16:21:22.335279277 +0200
@@ -1238,7 +1238,6 @@
	{QMI_FIXED_INTF(0x1e0e, 0x9001, 5)},	/* SIMCom 7230E */
	{QMI_QUIRK_SET_DTR(0x2c7c, 0x0125, 4)},	/* Quectel EC25, EC20 R2.0  Mini PCIe */
	{QMI_QUIRK_SET_DTR(0x2c7c, 0x0121, 4)},	/* Quectel EC21 Mini PCIe */
-	{QMI_QUIRK_SET_DTR(0x2c7c, 0x0296, 4)}, /* Quectel BG96 */

	/* 4. Gobi 1000 devices */
	{QMI_GOBI1K_DEVICE(0x05c6, 0x9212)},	/* Acer Gobi Modem Device */
root at 6560b:~/linux-4.13.8/drivers/net/usb#

Kernel module: option.c

root at 6560b:~/linux-4.13.8/drivers/usb/serial# diff -u option.c option.c_original 
--- option.c	2017-10-21 16:40:19.595244661 +0200
+++ option.c_original	2017-10-21 16:39:07.655246787 +0200
@@ -241,7 +241,6 @@
/* These Quectel products use Quectel's vendor ID */
#define QUECTEL_PRODUCT_EC21			0x0121
#define QUECTEL_PRODUCT_EC25			0x0125
-#define QUECTEL_PRODUCT_BG96			0x0296

#define CMOTECH_VENDOR_ID			0x16d8
#define CMOTECH_PRODUCT_6001			0x6001
@@ -1186,8 +1185,6 @@
	  .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
	{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25),
	  .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
-        { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
-          .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
	{ USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) },
	{ USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_300) },
	{ USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6003),
root at 6560b:~/linux-4.13.8/drivers/usb/serial#





More information about the libqmi-devel mailing list