GM500 U1A MPCIE
Supplier number:
Welink GM500 U1A mPCIe (US) is a LTE CAT-4 module with download speeds of up to 150Mbps and upload speed of up to 50Mbps. It is fully backward compatible with existing 3G networks.
A rich set of internet protocols (PAP and CHAP used for PPP connections) and abundant functions (GNSS, Remote wakeup, MMS, SMS,FOTA) extend the applicability of the module to a wide range of M2M applications. ME3630 PCIE can be widely used in M2M industries such as smart meter, Security and monitor, Industrial router, DTU, CPE, Telematics etc.
What Linux kernel modules and configs are commonly used for communicating with cellular modules over their USB interface?
Most cellular modules can be supported in Linux by using som of the in-kernel drivers. The physical data interface to the host Linux system is usually done over USB which enumerates a set of different endpoints/interfaces. A set of serial interfaces for Modem/PPP, AT commands, NMEA location data and chipset debug information are almost always available in all configurations.
In addition some type of network endpoint/interface are also available and exposed. This can vary between manufacturers and chipset vendors and can also commonly be configurable by using USB configuration mode switching or through vendor specific AT commands.
Recommended kernel configurations to enable are listed bellow. Many cellular modules base their Linux support on these modules and drivers. Once included in the kernel build, the USB interfaces will be detected and bound correctly out-of-the-box or after applying source code patches to the driver modules.
Configs for USB serial drivers:
CONFIG_USB_SERIAL
CONFIG_USB_SERIAL_GENERIC
CONFIG_USB_SERIAL_WWAN
CONFIG_USB_SERIAL_OPTION
CONFIG_USB_SERIAL_QUALCOMM
CONFIG_USB_ACM
Configs for Modem/PPP support:
CONFIG_PPP
CONFIG_PPP_BSDCOMP
CONFIG_PPP_DEFLATE
CONFIG_PPP_FILTER
CONFIG_PPP_MPPE
CONFIG_PPP_MULTILINK
CONFIG_PPPOE
CONFIG_PPP_ASYNC
CONFIG_PPP_SYNC_TTY
Configs for USB network drivers:
CONFIG_USB_USBNET
CONFIG_USB_NET_QMI_WWAN
CONFIG_USB_NET_CDCETHER
CONFIG_USB_NET_RNDIS_HOST
CONFIG_USB_NET_CDC_NCM
CONFIG_USB_NET_HUAWEI_CDC_NCM
CONFIG_USB_NET_CDC_MBIM
Please relate to the Techship product specific web pages for vendor specific Linux integration guides.
Below is a selection of kernel commits relating to cellular module support in Linux kernels:
qmi_wwan: Add support for Fibocom NL678 series
qmi_wwan: Added support for Telit LN940 series
qmi_wwan: Added support for Fibocom NL668 series
USB: serial: option: add support for GosunCn ME3630 RNDIS mode
USB: serial: option: add support for Simcom SIM7500/SIM7600 RNDIS mode
USB: serial: option: add Simcom SIM7500/SIM7600 (MBIM mode)
USB: serial: option: add Fibocom NL678 series
USB: serial: option: add Telit LN940 series
USB: serial: option: add Fibocom NL668 series
USB: serial: option: add GosunCn ZTE WeLink ME3630
qmi_wwan: apply SET_DTR quirk to the SIMCOM shared device ID
If you use any of the listed cellular modules, drivers and specified USB modes in the commits above, ensure that your kernel version already include the patch or apply it to your build.
How can we establish data connection for cellular modules in Windows 8 and Windows 10 systems?
Microsoft Windows desktop versions starting from Windows 8 and newer have built in data connection manager for WWAN, Wifi etc. that can be used to configure, control and establish the data connection of cellular module that support MBIM interface, which most cellular modules do.
The connection managers settings and controls can be found and accessed on Windows desktop start menu through the network icon (see picture).
The Cellular tab can be found in Windows system settings and if needed the connection APN details can be manually entered through "Advanced options".
How-to change the cellular modulesUSB composition mode to Mobile Broadband Interface Model (MBIM) used by Windows 8 and 10 systems for controlling and establishing data connectivity through the built-in connection manager in Windows?
This is done by sending a set of AT commands to the cellular modules Modem or AT serial interface found in Windows Device Manager. Please see list below for associated AT commands.
(For additional details, refer to the product specific software, ports, and AT commands guides found on the Techship product web pages under technical documentation tab).
After the AT commands have been received by the module and has restarted, the USB interface endpoint composition should have changed to include MBIM interface as well.
You can find the correct Serial COM port number by checking Windows Device Manager, under the Modems drop down -> (right click and see properties for selected COM port info) or under the Ports (COM & LPT) drop down.
Vendor specific commands to use:
Sierra Wireless EM74x0, MC74x0 series module:
AT!ENTERCND=”A710”
AT!USBCOMP=1,1,100D
AT!RESET
(See test command AT!USBCOMP=? for full usage description)
Sierra Wireless EM75xx, EM74x1, MC74x1 series module:
AT!ENTERCND=”A710”
AT!USBCOMP=1,3,100D
AT!RESET
(See test command AT!USBCOMP=? for full usage description)
Sierra Wireless EM73xx, MC73xx series module:
AT!ENTERCND=”A710”
AT!UDUSBCOMP=8
AT!RESET
Simcom SIM7100, SIM7500 and SIM7600 series modules:
AT+CUSBPIDSWITCH=9003,1,1
AT+CRESET
ZTE Welink ME3630 series:
AT+ZSWITCH=8
AT+ZRST
Telit LE910C1 and LE910C4 series:
AT#USBCFG=2
AT#REBOOT
Telit LM940 and LM940A11:
AT#USBCFG=2
AT#REBOOT
Telit LM960 and LM960A18:
AT#USBCFG=2
AT#REBOOT
Telit LE910 V2 series:
AT#USBCFG=3
AT#REBOOT
On Huawei and Telit LN94x series modules the USB mode changing is done automatically by the modules Windows drivers based on current Windows version.
Please be aware that some USB mode configurations do not include any serial interfaces, making it impossible to revert the changes using AT commands.
How to collect initial diagnostics data for Gosuncn ZTE WeLink cellular modules when requesting technical support?
Solution: In order to troubleshoot and solve a technical problem, we ask you to please provide information about your system and logs from the related cellular module when creating a technical support ticket via Techship.com.
Include a problem description of what exact problem is and in what precise situations it is present/occurring.
Describe the host system:
-Hardware (system board, peripherals...)
-Operating system and detailed versions (E.g. Windows, Linux release, kernel...)
-Drivers and driver versions
Identify the precise details of the cellular module found on product label:
-Model
-SKU/BOM or P/N code
(For RMA returns the IMEI number is also required)
If you are running on a Linux based system, please capture the terminal logs bellow:
uname -a
lsusb
lsusb -t
ifconfig -a
ls -l /dev/serial/by-id
ls -l /sys/bus/usb-serial/devices
dmesg
The log output requested from the commands bellow, can be acquired from the module by accessing one of the USB enumerated serial (COM) interfaces accepting AT commands. (In Windows this is generally found listed as a Modem interface or AT commands serial interface in the device manager and in Linux it is usually found on some of the /dev/ttyUSB* interfaces). Send the following commands to module and capture the text output and include them when creating the the technical support ticket.
Enable input command echo:
ATE1
Request general vendor, type and unique ID about module:
ATI
Enable verbose error reporting:
AT+CMEE=2
Firmware version:
AT+CGMR
Sub firmware version:
AT+ZVN
IMEI Code:
AT+CGSN
USB endpoint configuration:
AT+ZSWITCH?
AT+ZADSET?
Operational mode:
AT+CFUN?
Allowed network bands:
AT+ZBAND?
List network operator info:
AT+COPS?
Network registration status:
AT+CREG=2
AT+CREG?
AT+CEREG=2
AT+CEREG?
Signal strength:
AT+CSQ
AT+ZSRSP?
Serving network & cell information:
AT+ZCELLINFO
AT+ZCDS?
Network Selection configuration and order:
AT+ZSNT?
AT+ZSNTE?
Service domains status:
AT+ZPAS?
System info:
AT^SYSINFO
List APN details:
AT+CGDCONT?
Show APN authentication details:
AT$QCPDPP?
Attach UE to default PDP Context:
AT+CGATT=1
List PDP profiles status:
AT+CGACT?
List default bearer and data connection details:
AT+CGCONTRDP
List IP addresses:
AT+CGPADDR
Show data call and host data ECM interface status:
AT+ZECMCALL?
Show chipset temperature:
AT+ZCHIPTEMP?
List configured temperature limit:
AT+ZTEMPCTRL?
The support ticket can be created after login at: https://techship.com/technical_support/
How can we activate and use dual stack IPv4 and IPv6 functionality on the Gosuncn ZTE Welink ME3630 series cellular modules in Linux?
This can be done by configuring and using the Gosuncn ZTE Welink ME3630 module in Linux the following way:
Check with AT commands that you are using the most recent firmware version on the cellular module:
AT+ZVN
ME3630E1CV1.0B19 [Jan 15 2019 16:03:19]
The module have to be switched from default USB mode in order to support this, in this mode it uses RNDIS interface and drivers instead in host.
This mode can be switched with AT commands:
AT+ZSWITCH=x
AT+ZADSET=r
Restart module:
AT+ZRST
The module will restart now and appear in system with the following USB IDs:
usb-devices
T: Bus=03 Lev=01 Prnt=01 Port=01 Cnt=03 Dev#= 9 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=19d2 ProdID=0601 Rev=03.18
S: Manufacturer=Android
S: Product=Android
S: SerialNumber=b950269c
C: #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
I: If#=0x0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host
I: If#=0x1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
I: If#=0x2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I: If#=0x3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I: If#=0x4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
If the option driver is not attached initially it can be done so by force loading the driver:
modprobe option
echo 19d2 0601 > /sys/bus/usb-serial/drivers/option1/new_id
Activate the network interface in the Linux host system (check e.g. with dmesg what system named it to):
ip link set enp0s20u2 up
Make sure you have a cellular subscription and APN that allow usage of IPV4 and IPV6 functionality combined.
Default configuration with setting a empty string lets the module subscribe for an APN from cellular network:
AT+CGDCONT=1,"IPV4V6",""
With defined APN:
AT+CGDCONT=1,"IPV4V6","my.apn"
If you have to modify/set AT+CGDCONT, please re-register in cellular network e.g. by toggling:
AT+CFUN=0
AT+CFUN=1
(Enter PIN again with AT+CPIN if necessary)
Check that you are registered in the cellular network and module are attached on packet switched network and have got an IP:
AT+CGCONTRDP
+CGCONTRDP: 1,5,BREDBAND.TRE.SE,2.70.254.24,,80.251.201.177,80.251.201.178
Now start the network interface data connection:
With empty string APN details in second parameter, then module try to request them from network:
AT+ZECMCALL=1,"",3
Or with APN defined:
AT+ZECMCALL=1,"my.apn",3
You should receive bellow if successful:
+ZECMCALL: CONNECT
OK
Check the status of the network interface activation, both IPV4 and IPV6 information should be listed as bellow if successful:
AT+ZECMCALL?
+ZECMCALL: IPV4, 2.70.254.24, 2.70.254.25, 80.251.201.177, 80.251.201.178
+ZECMCALL: IPV6, 2a02:aa1:1018:5fc2:b532:a78c:7e20:fedb, , 2a02:aa0::55, 2a02:a6
OK
In Linux you should now run a DHCP client on the network interface in order to acquire an IPV4 adress:
dhclient -v enp0s20u2
Listening on LPF/enp0s20u2/56:60:35:1b:9f:7f
Sending on LPF/enp0s20u2/56:60:35:1b:9f:7f
Sending on Socket/fallback
DHCPDISCOVER on enp0s20u2 to 255.255.255.255 port 67 interval 3 (xid=0x914b302a)
DHCPOFFER of 2.70.254.24 from 2.70.254.25
DHCPREQUEST for 2.70.254.24 on enp0s20u2 to 255.255.255.255 port 67 (xid=0x2a304b91)
DHCPACK of 2.70.254.24 from 2.70.254.25 (xid=0x914b302a)
bound to 2.70.254.24 -- renewal in 19393 seconds.
Try ping an IPv4 address using the module network interface:
ping -4 -I enp0s20u2 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 2.70.254.24 enp0s20u2: 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=55 time=31.1 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=55 time=26.8 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=55 time=44.7 ms
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 5ms
rtt min/avg/max/mdev = 26.776/34.198/44.722/7.650 ms
Try ping an IPv6 address over the module interface:
ping -6 -I enp0s20u2 2600::
PING 2600::(2600::) from 2a02:aa1:1018:5fc2:c2:afb2:2c6e:66f3 enp0s20u2: 56 data bytes
64 bytes from 2600::: icmp_seq=1 ttl=47 time=200 ms
64 bytes from 2600::: icmp_seq=2 ttl=47 time=177 ms
64 bytes from 2600::: icmp_seq=3 ttl=47 time=177 ms
64 bytes from 2600::: icmp_seq=4 ttl=47 time=176 ms
64 bytes from 2600::: icmp_seq=5 ttl=47 time=175 ms
64 bytes from 2600::: icmp_seq=6 ttl=47 time=174 ms
^C
--- 2600:: ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 12ms
rtt min/avg/max/mdev = 174.342/180.176/200.333/9.096 ms
Please note that this functionality is not supported in all firmware versions and target regional variants of the ME3630 series yet. Here tested on the ME3630 E1C version for European target region using ME3630E1CV1.0B19