TECHSHIP IS A GLOBAL SUPPLIER OF WIRELESS COMPONENTS
The SIM7000A is a CAT-M1 (eMTC) Multi-Band LTE-FDD module solution on mPCIe card.
This module is for the North American market.
It is designed for applications that need low latency, medium throughput data communication in a variety of radio propagation conditions. Due to the unique combination of performance, security and flexibility, this module is ideally suited for M2M applications, such as metering, telematics, asset tracking, remote monitoring , E-health and mobile pos terminals.
Guide describing the technical details and parameters for the hardware of SIM7000 series miniPCIe variants
This manual describes the AT commands valid for controlling the Simcom SIM7000 Series modules.
This archive contains the Windows operating system drivers for the SIM7xxx series Qualcomm chipset based cellular modules. Please refer to the included PDF manual for installation instructions for each system and USB endpoint selection.
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 use the Simcom SIM7000 series with ECM network interface over USB in Linux systems?
In the recent firmware releases for the Simcom SIM7000 series it is possible to take advantage of the ECM network interface type over USB in order to establish data connectivity to host system instead of using Modem/PPP protocol or QMI. This how-to FAQ shows how it can be done.
The Simcom SIM7000 series expose a set of serial and QMI/RMNET interface over USB in default configuration.
By sending command:
The USB QMI/RMNET network interface can be configured to become a ECM interface instead. If this is supported in your current firmware version the module will re-enumerate in the host system with a ECM interface.
T: Bus=03 Lev=01 Prnt=01 Port=01 Cnt=03 Dev#= 16 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=1e0e ProdID=9001 Rev=00.00
S: Manufacturer=SimTech, Incorporated
S: Product=SimTech SIM7000
C: #Ifs= 7 Cfg#= 1 Atr=e0 MxPwr=500mA
I: If#=0x0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I: If#=0x1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
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=ff Prot=ff Driver=option
I: If#=0x4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fe Prot=ff Driver=option
I: If#=0x5 Alt= 0 #EPs= 1 Cls=02(commc) Sub=06 Prot=00 Driver=cdc_ether
I: If#=0x6 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
Activate the related network interface in Linux
(check assigned interface name e.g. in dmesg output)
root@linux:~# ip link set dev enx00a0c6047450 up
Run a DHCP client on the network interface:
root@linux:~# dhclient -v enx00a0c6047450
Listening on LPF/enx00a0c6047450/00:a0:c6:04:74:50
Sending on LPF/enx00a0c6047450/00:a0:c6:04:74:50
Sending on Socket/fallback
DHCPREQUEST for 192.168.225.20 on enx00a0c6047450 to 255.255.255.255 port 67 (xid=0x301a9d68)
DHCPACK of 192.168.225.20 from 192.168.225.1 (xid=0x689d1a30)
bound to 192.168.225.20 -- renewal in 16549 seconds.
The only thing needed now is to make sure that you have defined a APN for the subscription and are registered to a cellular network.
If APN name, IP etc. is returned with AT+CGCONTRDP, you should now be able to use the ECM network interface.
root@linux:~# ping -I enx00a0c6047450 18.104.22.168
PING 22.214.171.124 (126.96.36.199) from 192.168.225.20 enx00a0c6047450: 56(84) bytes of data.
64 bytes from 188.8.131.52: icmp_seq=1 ttl=54 time=696 ms
64 bytes from 184.108.40.206: icmp_seq=2 ttl=54 time=155 ms
64 bytes from 220.127.116.11: icmp_seq=3 ttl=54 time=150 ms
64 bytes from 18.104.22.168: icmp_seq=4 ttl=54 time=151 ms
64 bytes from 22.214.171.124: icmp_seq=5 ttl=54 time=127 ms
64 bytes from 126.96.36.199: icmp_seq=6 ttl=54 time=146 ms
--- 188.8.131.52 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 12ms
rtt min/avg/max/mdev = 127.379/237.402/695.622/205.108 ms
Tested on SIM7000G miniPCIe with firmware: