TECHSHIP IS A GLOBAL SUPPLIER OF WIRELESS COMPONENTS
GM500 U1A MPCIESupplier 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:
Configs for Modem/PPP support:
Configs for USB network drivers:
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:
(See test command AT!USBCOMP=? for full usage description)
Sierra Wireless EM75xx, EM74x1, MC74x1 series module:
(See test command AT!USBCOMP=? for full usage description)
Sierra Wireless EM73xx, MC73xx series module:
Simcom SIM7100, SIM7500 and SIM7600 series modules:
ZTE Welink ME3630 series:
Telit LE910C1 and LE910C4 series:
Telit LM940 and LM940A11:
Telit LM960 and LM960A18:
Telit LE910 V2 series:
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:
-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:
ls -l /dev/serial/by-id
ls -l /sys/bus/usb-serial/devices
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:
Request general vendor, type and unique ID about module:
Enable verbose error reporting:
Sub firmware version:
USB endpoint configuration:
Allowed network bands:
List network operator info:
Network registration status:
Serving network & cell information:
Network Selection configuration and order:
Service domains status:
List APN details:
Show APN authentication details:
Attach UE to default PDP Context:
List PDP profiles status:
List default bearer and data connection details:
List IP addresses:
Show data call and host data ECM interface status:
Show chipset temperature:
List configured temperature limit:
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:
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:
The module will restart now and appear in system with the following USB IDs:
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
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:
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:
With defined APN:
If you have to modify/set AT+CGDCONT, please re-register in cellular network e.g. by toggling:
(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:
Now start the network interface data connection:
With empty string APN details in second parameter, then module try to request them from network:
Or with APN defined:
You should receive bellow if successful:
Check the status of the network interface activation, both IPV4 and IPV6 information should be listed as bellow if successful:
+ZECMCALL: IPV4, 188.8.131.52, 184.108.40.206, 220.127.116.11, 18.104.22.168
+ZECMCALL: IPV6, 2a02:aa1:1018:5fc2:b532:a78c:7e20:fedb, , 2a02:aa0::55, 2a02:a6
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 22.214.171.124 from 126.96.36.199
DHCPREQUEST for 188.8.131.52 on enp0s20u2 to 255.255.255.255 port 67 (xid=0x2a304b91)
DHCPACK of 184.108.40.206 from 220.127.116.11 (xid=0x914b302a)
bound to 18.104.22.168 -- renewal in 19393 seconds.
Try ping an IPv4 address using the module network interface:
ping -4 -I enp0s20u2 22.214.171.124
PING 126.96.36.199 (188.8.131.52) from 184.108.40.206 enp0s20u2: 56(84) bytes of data.
64 bytes from 220.127.116.11: icmp_seq=1 ttl=55 time=31.1 ms
64 bytes from 18.104.22.168: icmp_seq=2 ttl=55 time=26.8 ms
64 bytes from 22.214.171.124: icmp_seq=3 ttl=55 time=44.7 ms
--- 126.96.36.199 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
--- 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