Configuring 4G mPCIe Modems on Siemens IOT2050 Gateway

David Krause11 min read
PLC HardwareSiemensTechnical Reference
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Overview

The SIMATIC IOT2050 is Siemens' industrial IoT gateway based on the Texas Instruments ARM SoC platform with two mPCIe slots exposed on the main board. One slot is wired for the optional Wi-Fi/Bluetooth card, and the second slot accepts a full-size Mini PCIe (mPCIe) cellular modem with an attached SIM card holder. Because the firmware is shipped as a customized Debian-based image, the IOT2050 can use any USB-based or PCIe-based mPCIe modem that ships with a Linux kernel-mode driver (cdc_mbim, cdc_ncm, qmi_wwan, option, sierra, or GobiNet) already in the upstream kernel tree or provided as a vendor DKMS module.

Cellular connectivity is the deployment option of choice for brown-field industrial sites that lack Ethernet and where running additional wiring for a Wi-Fi AP is impractical. The key constraint is that the mPCIe slot must supply both 3.3 V auxiliary power and the SIM card signals, and the modem must enumerate as a USB or PCI device that the IOT2050's default iot2050-image-V1.x.y user-space can manage through NetworkManager or ofono with ModemManager.

Hardware Variants: IOT2050 vs. IOT2050 Advanced

Siemens ships two hardware variants that share the same mPCIe wiring topology but differ in CPU performance and supported Debian versions:

Variant CPU RAM Supported Debian Image mPCIe Slot 1 mPCIe Slot 0 (Cellular)
IOT2050 Basic TI AM6528 dual-core ARM Cortex-A53 @ 1.0 GHz 1 GB DDR4 iot2050-image-V1.0.x / Example Image V1.0.2 Wi-Fi/BT card (optional) USB 2.0 + PCIe Gen 2.1 x1, SIM holder on board
IOT2050 Advanced TI AM6548 quad-core ARM Cortex-A53 @ 1.2 GHz 2 GB DDR4 iot2050-image-V1.1.x / V1.2.x Wi-Fi/BT card (optional) USB 2.0 + PCIe Gen 2.1 x1, SIM holder on board

The cellular mPCIe connector exposes both USB 2.0 data lines and a single PCIe lane. Most 4G modems ship with a USB 2.0 interface on pins 36/38 of the mPCIe edge connector and use the PCIe lane only as a mechanical retention feature; this means the slot is electrically backward-compatible with the older Sierra Wireless MC-series and Huawei ME-series cards that lack PCIe.

Confirmed-Working 4G/3G mPCIe Modems

Field testing performed on the IOT2050 Example Image V1.0.2 and later confirmed the following modems enumerate and bring up a WWAN interface without kernel recompilation:

Module Category Bands / RAT Driver Notes
Qualcomm MC7304 LTE Cat 3 LTE FDD B1/B2/B3/B4/B5/B7/B8/B13/B17/B20; UMTS B1/B2/B5/B8 qcserial + qmi_wwan (kernel >= 4.9) Plug-and-play, GPS shared via NMEA over /dev/ttyUSB*
Quectel EC20CEFAG-512-SGNS LTE Cat 4 LTE FDD B1/B3/B5/B7/B8/B20; UMTS B1/B5/B8; GSM 900/1800 option + qmi_wwan EU/Asia bands; GNSS accessible via AT+QGPS
Telit HE910-D 3.5G HSPA+ UMTS 850/900/2100; GSM 850/900/1800/1900 option 3G-only fallback module; useful where LTE coverage is unavailable
U9300C TD-LTE LTE Cat 4 LTE TDD B38/B39/B40/B41; LTE FDD B1/B3/B5/B7/B8; UMTS B1/B8 option China-region bands; works on IOT2050 with default kernel

Additional candidates that have been discussed in vendor PoC scenarios but not formally validated on the IOT2050 firmware stream include the Telit HE910-NA1 (3G) for North-American carriers and the Telit LE910-NA1 (V2) LTE Cat 1 module with multi-carrier firmware switching via AT#FWSWITCH (AT&T / Verizon / T-Mobile profiles). The Sierra Wireless MC7455 (LTE Cat 6, PCIe-based with USB fallback) is not plug-and-play on the Example Image because it requires the Sierra Wireless GobiSerial/GobiNet proprietary drivers to expose its QMI port; this module is suitable only for integrators willing to build a vendor kernel module against the IOT2050 kernel headers.

Verification Caveat: The Telit LE910-NA1 (V2) is referenced by integrators for North American deployments (Canada/USA) where the customer needs multi-carrier SIM portability. Switching carrier profiles requires issuing the AT#FWSWITCH=ATT (or VZW, TMO) AT command before booting the LTE radio, then power-cycling the modem. This step is firmware-side, not driver-side, and is documented in the Telit LE910 AT Command Reference Guide.

Prerequisites

  1. SIMATIC IOT2050 with a Siemens-supplied or community Debian image flashed to the eMMC. The minimum recommended image for cellular use is Example Image V1.0.2 or later, which bundles ModemManager 1.12.x and NetworkManager 1.14.x or newer.
  2. Activated nano-SIM or micro-SIM with a data plan. For LTE Cat-4 modules, a Cat-4-capable APN profile is required to achieve >100 Mbit/s downlink.
  3. Confirmed antenna connectors. The IOT2050 board ships with one or two U.FL antenna pads labeled MAIN and AUX/DIV; both must be terminated with 50 Ω antennas on LTE bands for proper MIMO 2x2.
  4. An mPCIe 4G modem from the validated list above. Insert the card into the slot closest to the SIM holder, then insert the SIM with contacts facing down.
  5. Root or sudo access on the IOT2050 console (HDMI + USB keyboard or SSH over Ethernet).

Hardware Installation

  1. Power down the IOT2050 and disconnect the 24 V terminal block.
  2. Open the right-side service cover (four Torx T10 screws) to access the mPCIe area.
  3. Insert the modem at a 30° angle into the mPCIe slot labeled for cellular, then press flat and secure with the supplied M2.5 screw.
  4. Attach the U.FL antenna pigtails: MAIN (Primary TX/RX) and AUX (Diversity RX only).
  5. Insert the SIM card into the holder with chip-side down. The holder is a push-push type; push until it clicks.
  6. Reinstall the cover and torque the screws to 0.5 Nm to maintain IP20 sealing.
Anti-static Warning: The mPCIe socket and the SIM holder are not hot-pluggable on the IOT2050. Inserting or removing the card with power applied can corrupt the SIM's EEPROM and, in rare cases, latch the modem's USB stack. Always power down completely before service.

Driver and Enumeration Verification

After first boot with the modem installed, verify the kernel sees the device:

root@iot2050:~# dmesg | grep -iE 'usb|qcserial|qmi_wwan|option'
[    3.412] usb 1-1.2: new high-speed USB device number 4 using xhci-hcd
[    3.560] usb 1-1.2: Quectel EC20CEFAG-512-SGNS detected
[    3.610] qmi_wwan 1-1.2:1.4: cdc-wdm0: USB WDM device
[    3.612] qmi_wwan 1-1.2:1.4 wwan0: register 'qmi_wwan' at usb-0000:01:00.0-1.2
[    3.700] usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB0
[    3.701] usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB1
[    3.702] usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB2

Expected endpoints on a Cat-4 module are typically:

/dev node Purpose Typical Use
ttyUSB0 DM (Diagnostic) Firmware update, log capture
ttyUSB1 GPS NMEA Direct GNSS stream (if module supports GPS)
ttyUSB2 AT command Manual AT control
cdc-wdm0 QMI control ModemManager / libqmi data path

If the modem enumerates but only a single ttyUSB device appears, the kernel may be loading the generic option driver without the qmi_wwan binding. This is a known issue on older IOT2050 images and is fixed by either upgrading to Example Image V1.0.2+ or by blacklisting option for the device's VID/PID:

# /etc/modprobe.d/qmi-blacklist.conf
options option blacklist=1
install qmi_wwan /sbin/modprobe --ignore-install qmi_wwan $CMDLINE_OPTS
install option /bin/false

ModemManager and APN Configuration

ModemManager auto-detects the modem once the cdc-wdm node is present. To configure a bearer with the operator APN:

root@iot2050:~# mmcli -L
    /org/freedesktop/ModemManager1/Modem/0 [Quectel] EC20CEFAG-512-SGNS

root@iot2050:~# mmcli -m 0 --simple-connect="apn=internet.provider.com,ip-type=ipv4v6"
    successfully connected the modem

root@iot2050:~# ip link show wwan0
    wwan0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
        link/ppp

For persistent APN settings across reboots, create a NetworkManager connection file /etc/NetworkManager/system-connections/wwan0.nmconnection:

[connection]
id=cellular-wwan
type=gsm
interface-name=wwan0

[gsm]
apn=internet.provider.com
number=*99#

[ipv4]
method=auto

[serial]
baud=115200

Reload NetworkManager and bring the link up:

root@iot2050:~# nmcli connection reload
root@iot2050:~# nmcli connection up cellular-wwan

AT Command Reference for Field Diagnostics

Command Module Purpose
ATI All Module identification (manufacturer, model, firmware)
AT+CSQ All RSSI and BER: +CSQ: 12,99 means RSSI = -89 dBm
AT+COPS? All Currently registered operator
AT+QENG="servingcell" Quectel EC20 Detailed serving-cell info: EARFCN, RSRP, RSRQ, SINR
AT!GSTATUS? Sierra MC7455 Sierra proprietary cell-status query (PCI, SINR, band)
AT#FWSWITCH=VZW Telit LE910-NA1 V2 Switch firmware profile to Verizon
AT#REBOOT Telit HE910/LE910 Reboot modem after AT profile changes

RSSI thresholds to track for troubleshooting:

  • Excellent: AT+CSQ returns 21-31 (RSSI > -71 dBm)
  • Good: 14-20 (RSSI -71 to -83 dBm)
  • Marginal: 7-13 (RSSI -84 to -97 dBm) - latency will rise
  • Unusable: 0-6 (RSSI < -97 dBm)

MQTT over Cellular

Because MQTT sits on top of TCP/IP and is transported over a TCP connection (default port 1883) or a TLS-encrypted session (default port 8883), the protocol imposes no additional cellular-specific requirements. A correctly bridged WWAN interface presents a normal IP stack to mosquitto_pub, paho-mqtt, or any OPC UA Pub/Sub client. Common deployment mistakes are:

  1. Not extending the MQTT keep-alive interval. The default 60 s keep-alive can be too aggressive on a 3G/HSPA link with intermittent RRC state transitions; raise to 300 s for slow links.
  2. Not enabling MQTT over TLS. Cellular traffic is plaintext by default; use port 8883 with a CA bundle and a device certificate.
  3. Not handling NAT rebind. Carrier NAT can re-bind a TCP socket; configure the MQTT client to reconnect on SIGPIPE or socket close, with exponential back-off starting at 1 s and capped at 60 s.

Sample mosquitto publish from an IOT2050 over LTE:

root@iot2050:~# mosquitto_pub -h broker.example.com -p 8883 \
    --cafile /etc/ssl/certs/ca-certificates.crt \
    -t iot2050/line1/temp -m "$(printf '%.2f' $(cat /sys/class/thermal/thermal_zone0/temp | awk '{print $1/1000}'))"

Regional Carrier Matrix

Region Recommended Module Bands Used Multi-Carrier Capable
North America (USA/Canada) Telit LE910-NA1 (V2) LTE B2/B4/B5/B12/B13/B17 Yes - AT&T / Verizon / T-Mobile
Europe (EU/UK) Quectel EC20CEFAG-512-SGNS LTE B1/B3/B7/B8/B20 Yes - any EU operator
Asia-Pacific (China, India) U9300C TD-LTE TDD B38/B39/B40/B41 Yes - China Mobile, Reliance Jio
Global fallback (3G only) Telit HE910-D UMTS 850/900/2100 Yes - any HSPA+ operator

Troubleshooting Matrix

Symptom Likely Root Cause Diagnostic Step Remediation
Modem does not appear in lsusb Insufficient mPCIe auxiliary power or bad insertion Power down, reseat, verify both U.FL antennas are terminated Reseat card; verify PSU supplies 1.5 A on 3.3 Vaux
Modem enumerates but no cdc-wdm node option driver bound before qmi_wwan ls /dev/cdc-wdm* Add VID/PID to qmi_wwan or blacklist option
wwan0 interface present but no IP APN mismatch or SIM PIN locked mmcli -m 0 -e; mmcli -m 0 --pin=1234 Disable PIN or unlock with --pin; correct APN
IP obtained but no internet Carrier NAT / firewall blocking ICMP ping 8.8.8.8 vs ping 8.8.4.4 Switch DNS to carrier-provided resolvers
Frequent disconnects after 30 s of idle RRC state transition dropping PPP mmcli -m 0 --bearer=0 --timeout=0 Set ModemManager idle-timeout=0 to keep PDP always-on
Throughput < 5 Mbit/s on LTE Cat-4 Single-antenna configuration (no MIMO) AT+QENG="servingcell" - check RxM mode Connect both MAIN and AUX antennas; re-orient
Sierra MC7455 not detected Kernel lacks GobiNet/Sierra driver dmesg | grep -i sierra Build vendor module against kernel headers, or substitute MC7304

Verification Checklist

  1. lsusb shows the modem VID/PID (e.g., Quectel = 2c7c:0125).
  2. mmcli -L lists at least one modem.
  3. mmcli -m 0 reports State: connected and a bearer IP address.
  4. ip route shows the default route via the wwan0 interface.
  5. ping -c 3 1.1.1.1 succeeds.
  6. nslookup siemens.com returns a valid IP, confirming DNS over LTE.
  7. iperf3 -c iperf.example.com -p 5201 reports > 10 Mbit/s on Cat-4 link.
  8. An end-to-end MQTT publish from the IOT2050 reaches the broker and is observable on a subscriber console.

Field-Commissioning Notes

  • Power budget: An LTE Cat-4 modem can draw up to 1.5 A peak on the 3.3 Vaux rail during a transmit burst. The IOT2050's internal PSU is rated to supply this, but if the gateway is fitted with both a Wi-Fi card and a cellular card, expect a 1-2 °C rise in the CPU heatsink temperature; verify the cabinet's thermal envelope.
  • Antenna selection: For LTE Cat-4 with 2x2 MIMO, use identical gain antennas on both MAIN and AUX ports. Mismatched antennas degrade rank-2 throughput by 30-50 %.
  • SIM lifecycle: Carrier-provided SIMs often have a 12-24 month shelf life. Provision the SIM within 90 days of receipt or activate a roaming plan if the device will sit idle for commissioning.
  • Watchdog: Use systemd to monitor the ModemManager service and restart it if the bearer drops more than three times in 60 s.

Reference Material

The following manufacturer resources were used to compile this guide:

  • SIMATIC IOT2050 product page - Siemens Industry Online Support
  • Siemens Example Image V1.0.2 release notes for IOT2050
  • Quectel EC20 AT Commands Manual (Rev. 1.8)
  • Telit LE910-NA1 V2 AT Command Reference Guide
  • Sierra Wireless MC7455 Linux Driver Integration Note

FAQ

Which mPCIe 4G modems are confirmed to work on the Siemens IOT2050?

The validated list is: Qualcomm MC7304 (LTE Cat 3), Quectel EC20CEFAG-512-SGNS (LTE Cat 4), Telit HE910-D (3G/HSPA+), and U9300C TD-LTE (LTE Cat 4 with TDD bands). The Sierra Wireless MC7455 is not plug-and-play because it requires Sierra's proprietary GobiNet driver that is not in the default IOT2050 kernel.

Does the IOT2050 ship with a SIM card holder?

Yes. Both the IOT2050 Basic and Advanced variants include a push-push nano-SIM holder on the main board, located adjacent to the cellular mPCIe slot. The holder is not pre-wired for a specific operator and accepts any standard SIM once the correct APN is configured in NetworkManager or ModemManager.

Can MQTT be used over a 4G cellular link on the IOT2050?

Yes. MQTT is a TCP/IP application-layer protocol and is fully transparent to the underlying bearer. For best results over LTE, raise the MQTT keep-alive to 300 seconds, use TLS on port 8883, and configure your client to reconnect with exponential back-off (1 s to 60 s cap) to absorb carrier NAT rebinds.

What is the best 4G modem for a Canadian deployment?

For Canada and the broader North-American market, the Telit LE910-NA1 (V2) is recommended. It supports LTE bands B2, B4, B5, B12, B13, and B17, and supports firmware-profile switching via the AT command AT#FWSWITCH so the same hardware can be used on AT&T, Verizon, or T-Mobile networks without re-flashing.

Why does my modem enumerate but the wwan0 interface never receives an IP?

The three most common causes are: (1) the SIM PIN is enabled and must be unlocked via mmcli -m 0 --pin=XXXX; (2) the APN string is incorrect for your operator - verify against the carrier's published APN list; (3) the option driver has bound the modem before qmi_wwan, leaving no cdc-wdm node for ModemManager to control. Blacklist option and confirm /dev/cdc-wdm0 exists before re-attempting the connection.

Back to blog