TECHSHIP IS A GLOBAL SUPPLIER OF WIRELESS COMPONENTS
The SIM8202E-M2 is a Multi-Band 5G NR/LTE-FDD/LTETDD/HSPA+ module which supports R15 5G NSA/SA up to 2.4Gbps data transfer.
It has strong extension capability with abundant interfaces including PCIe, USB3.1, GPIO etc. The module provides much flexibility and ease of integration forcustomer's applications.
The SIM8202E-M2 adopts M.2 form factor, TYPE 3042-S3-B. AT commands of SIM8202E-M2 are compatible with SIM7912G/SIM8200X-M2 series modules. This also minimizes the investments of customers and enables a short time-to-market.
It is designed for applications that need high 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 many applications.
How-to guide for setting up a always on data connection over the Simcom SIM8202x-M2 series modules network interface when used in USB RNDIS mode
Both Windows and Linux systems can support RNDIS interface drivers for the SIM8202 series modules, this example demonstrates how it can be set up in a Linux environment.
There is a open source Linux in-kernel driver supporting RNDIS USB network interfaces called rndis_host.
Make sure to have the kernel config for rndis host driver support enabled.
Read more about the kernel configs in this FAQ:
Common Linux kernel modules and configs necessary for communicating with cellular modules over USB interface
By default the Simcom modules are delivered with QMI/RMNET network interface enabled, lsusb output can look like following:
Bus 002 Device 002: ID 1e0e:9001 Qualcomm / Option SDXPRAIRIE-MTP
So you will need to change the USB mode by sending a AT commands on the Modem/AT serial ports exposed over the USB interface, typically found as ttyUSB devices if option driver is loaded correctly.
E.g. minicom serial terminal tool can be used to open the USB serial interface and send AT commands to the module:
minicom -D /dev/ttyUSB2
Switch the module from USB PID 9001 to USB PID 9011 mode for RNDIS interface by sending below command followed by enter (CR LF):
The module will now restart automatically and re-enumerate with a new USB ID.
Check dmesg or with lsusb that you have the Simcom SIM7600 module detected with VID: 1e0e PID: 9011
Bus 002 Device 003: ID 1e0e:9011 Qualcomm / Option SDXPRAIRIE-MTP
Verify with lsusb -t that the Linux in-kernel driver rndis_host driver is loaded correctly for interface 0 and 1.
It can look e.g. like this:
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/7p, 5000M
|__ Port 4: Dev 3, If 0, Class=Miscellaneous Device, Driver=rndis_host, 5000M
|__ Port 4: Dev 3, If 1, Class=CDC Data, Driver=rndis_host, 5000M
|__ Port 4: Dev 3, If 2, Class=Vendor Specific Class, Driver=option, 5000M
|__ Port 4: Dev 3, If 3, Class=Vendor Specific Class, Driver=option, 5000M
|__ Port 4: Dev 3, If 4, Class=Vendor Specific Class, Driver=option, 5000M
|__ Port 4: Dev 3, If 5, Class=Vendor Specific Class, Driver=option, 5000M
|__ Port 4: Dev 3, If 6, Class=Vendor Specific Class, Driver=option, 5000M
If your system don't load the option serial interfaces correctly, then they can be forcefully loaded as bellow (not reboot persistent):
echo 1e0e 9011 > /sys/bus/usb-serial/drivers/option1/new_id
Relate to the following Linux kernel commit for details on how to modify the usb serial option driver source code in order to auto load the drivers:
USB: serial: option: add support for Simcom SIM7500/SIM7600 RNDIS mode
In order to enable the automatic network connection establishment, the SIM card should have PIN code check disabled. If it isn't disabled, the Linux host system need to provide the PIN code over AT commands to module after each modem restart.
Refer to AT command: AT+CPIN=xxxx for further details.
The Access Point Name (APN) related to your cellular subscription needs to be configured once to the module so the automatic connection establishment can be established on the correct data bearer.
Defining an empty string as value on the AT+CGDCONT profile, will make the module try to subscribe for a APN, however this may not always work e.g. in roaming conditions, so best procedure is to always configure the correct APNs for the network and your subscription.
Check the currently configured APN profiles:
If you do not know the correct APN for your network and subscription, you should at least have profile 1 and 6 defined to empty strings ("") so the module will try to subscribe for the correct APN details from network:
+CGDCONT Profile 1 is used for the cellular network registration process and APN at profile 6 will be tied to the RNDIS network interface for the data connection to host system.
Define both APN profiles according to the details you have obtained for your cellular subscription.
Most often the APN details are same for both network registration and the actual data connection, then you define same details to both profile 1 and 6:
Some APN names require additional authentication also, please refer to the AT command: AT+CGAUTH in the AT commands guide for details on how to define auth details correctly.
Current auth configurations can be checked with AT command:
Typically no auth details are needed for the profiles and they should be empty, profiles can be cleared by defining the profile number in question and zero in the second parameter:
If you have modified the APN information, username and passwords it is necessary to disconnect and reconnect to cellular network and packet data service to activate the new settings.
It can easily be done with toggling AT+CFUN=0 command followed by AT+CFUN=1 to switch modules operation mode (SIM card will also be re-initialized, so PIN code have to be given again if the PIN code check is activated).
The module will now try to establish and maintain the data connection automatically with the new settings.
The cellular module is now configured. The Linux RNDIS host system drivers should also have been detected already and a network interface is available. The interface name given can be checked e.g. from dmesg out:
dmesg | grep "RNDIS device"
rndis_host 2-4:1.0 usb0: register 'rndis_host' at usb-0000:00:15.0-4, RNDIS device, b2:44:25:5d:21:86
Typically it is named usb0 and disabled by default, activate the interface with command:
ip link set usb0 up
To acquire an NAT IP address from the module, please activate a dhcp client on the network interface (if not already running), for example here using dhclient:
dhclient -v usb0
It will bind to a IP address if successful:
Listening on LPF/usb0/b2:44:25:5d:21:86
Sending on LPF/usb0/b2:44:25:5d:21:86
Sending on Socket/fallback
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 3 (xid=0x386d3770)
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 7 (xid=0x386d3770)
DHCPOFFER of 192.168.225.23 from 192.168.225.1
DHCPREQUEST for 192.168.225.23 on usb0 to 255.255.255.255 port 67 (xid=0x70376d38)
DHCPACK of 192.168.225.23 from 192.168.225.1 (xid=0x386d3770)
bound to 192.168.225.23 -- renewal in 20968 seconds.
If everything was configured correctly and the connection established successfully on the given APN, then the host system will have internet access on the RNDIS network interface now:
It can be tested e.g. by pinging a remote host over the RNDIS network interface:
ping -4 -I usb0 22.214.171.124
PING 126.96.36.199 (188.8.131.52) from 192.168.225.46 usb0: 56(84) bytes of data.
64 bytes from 184.108.40.206: icmp_seq=1 ttl=52 time=167 ms
64 bytes from 220.127.116.11: icmp_seq=2 ttl=52 time=37.6 ms
64 bytes from 18.104.22.168: icmp_seq=3 ttl=52 time=44.4 ms
64 bytes from 22.214.171.124: icmp_seq=4 ttl=52 time=33.6 ms
--- 126.96.36.199 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 8ms
rtt min/avg/max/mdev = 33.600/70.635/166.972/55.753 ms
ping -6 -I usb0 2600::
PING 2600::(2600::) from 2a02:aa1:1021:2c5e:552b:a8cb:532c:bcac usb0: 56 data bytes
64 bytes from 2600::: icmp_seq=1 ttl=51 time=179 ms
64 bytes from 2600::: icmp_seq=2 ttl=51 time=171 ms
64 bytes from 2600::: icmp_seq=3 ttl=51 time=171 ms
--- 2600:: ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 170.776/173.535/178.854/3.761 ms
Simcom SIM8202G-M2 with firmware version LE13B02SIM8202M44A-M2