Gemalto is now part of the Thales Group, find out more.

You are here

Thales IoT Developer Community

5G show case: Build up a powerful 5G router with multiple MV3x modules

Showcase, August 25, 2022 - 9:35pm, 2243 views

For building up a powerful 5G router,  many customers choose to have multiple 5G modules connected to their host SoC, with multiple MNO coverages and multiple IP connections

Below is an example of 5G show case which we did in our lab, showing a HW setup with 3 pieces of MV3x modules (one MV31-W, one MV32-W-A and one MV32-W-B) on a single LINUX host. Each of the MV3x modules has a different SIM card from a different MNO, so that the LINUX host could have 3 different network coverages and 3 different mobile data connections

=====================================

root@tester-OptiPlex-5080:~# lsusb
Bus 002 Device 004: ID 1e2d:00b8 Gemalto M2M GmbH Cinterion PID 0x00B8 USB Mobile Broadband
Bus 002 Device 003: ID 1e2d:00f1 Gemalto M2M GmbH Cinterion PID 0x00F1 USB Mobile Broadband
Bus 002 Device 002: ID 1e2d:00f2 Gemalto M2M GmbH Cinterion PID 0x00F2 USB Mobile Broadband
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 413c:2107 Dell Computer Corp. KB212-B Quiet Key Keyboard
Bus 001 Device 003: ID 046d:c05a Logitech, Inc. M90/M100 Optical Mouse
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
 
root@tester-OptiPlex-5080:~# mbimcli -d /dev/cdc-wdm0 -p --ms-query-firmware-id
[/dev/cdc-wdm0] Firmware ID retrieved: '31453244-3030-4631-3035-303446583030'

root@tester-OptiPlex-5080:~# mbimcli -d /dev/cdc-wdm1 -p --ms-query-firmware-id
[/dev/cdc-wdm1] Firmware ID retrieved: '31453244-3030-4631-3035-303446583030'

root@tester-OptiPlex-5080:~# mbimcli -d /dev/cdc-wdm2 -p --ms-query-firmware-id
[/dev/cdc-wdm2] Firmware ID retrieved: '31453244-3030-4238-3034-3134464f5843'

root@tester-OptiPlex-5080:~# mbimcli -d /dev/cdc-wdm0 -p --query-device-caps
[/dev/cdc-wdm0] Device capabilities retrieved:
          Device type: 'embedded'
       Cellular class: 'gsm'
          Voice class: 'no-voice'
            SIM class: 'removable'
           Data class: 'umts, hsdpa, hsupa, lte, custom'
             SMS caps: 'pdu-receive, pdu-send'
            Ctrl caps: 'hw-radio-switch'
         *** sessions: '15'
    Custom data class: '5G'
            Device ID: '355532870001404'
        Firmware info: 'FDE.F0.0.0.1.3.GC.001.006'
        Hardware info: 'Cinterion Snapdragon X62'
root@tester-OptiPlex-5080:~# mbimcli -d /dev/cdc-wdm1 -p --query-device-caps
[/dev/cdc-wdm1] Device capabilities retrieved:
          Device type: 'embedded'
       Cellular class: 'gsm'
          Voice class: 'no-voice'
            SIM class: 'removable'
           Data class: 'umts, hsdpa, hsupa, lte, custom'
             SMS caps: 'pdu-receive, pdu-send'
            Ctrl caps: 'hw-radio-switch'
         *** sessions: '15'
    Custom data class: '5G'
            Device ID: '352264110060346'
        Firmware info: 'FDE.F0.0.0.1.1.DT.001.004'
        Hardware info: 'Cinterion Snapdragon X65'
root@tester-OptiPlex-5080:~# mbimcli -d /dev/cdc-wdm2 -p --query-device-caps
[/dev/cdc-wdm2] Device capabilities retrieved:
          Device type: 'embedded'
       Cellular class: 'gsm'
          Voice class: 'no-voice'
            SIM class: 'removable'
           Data class: 'umts, hsdpa, hsupa, lte, custom'
             SMS caps: 'pdu-receive, pdu-send'
            Ctrl caps: 'reg-manual'
         *** sessions: '15'
    Custom data class: '5G'
            Device ID: '355979860367446'
        Firmware info: 'T99W175.F0.6.0.0.6.VF.009.024'
        Hardware info: 'Thales Snapdragon X55'
root@tester-OptiPlex-5080:~# 
root@tester-OptiPlex-5080:~# mbimcli -d /dev/cdc-wdm0 -p --query-radio-state
[/dev/cdc-wdm0] Radio state retrieved:
         Hardware radio state: 'on'
         Software radio state: 'on'
root@tester-OptiPlex-5080:~# mbimcli -d /dev/cdc-wdm0 -p --ms-query-lte-attach-info
[/dev/cdc-wdm0] Successfully queried LTE attach info
  Attach state:  attached
  IP type:       ipv4
  Access string: iot.1nce.net
  Username:      n/a
  Password:      n/a
  Compression:   none
  Auth protocol: none
root@tester-OptiPlex-5080:~# mbimcli -d /dev/cdc-wdm1 -p --ms-query-lte-attach-info
[/dev/cdc-wdm1] Successfully queried LTE attach info
  Attach state:  attached
  IP type:       ipv4v6
  Access string: ims
  Username:      n/a
  Password:      n/a
  Compression:   none
  Auth protocol: none
root@tester-OptiPlex-5080:~# mbimcli -d /dev/cdc-wdm2 -p --ms-query-lte-attach-info
[/dev/cdc-wdm2] Successfully queried LTE attach info
  Attach state:  attached
  IP type:       default
  Access string: web.vodafone.de
  Username:      n/a
  Password:      n/a
  Compression:   none
  Auth protocol: none
root@tester-OptiPlex-5080:~# mbimcli -d /dev/cdc-wdm0 -p --query-packet-service-state
[/dev/cdc-wdm0] Packet service status:
             Network error: 'unknown'
      Packet service state: 'attached'
    Available data classes: 'lte'
              Uplink speed: '1250000000 bps'
            Downlink speed: '3781000000 bps'
root@tester-OptiPlex-5080:~# mbimcli -d /dev/cdc-wdm1 -p --query-packet-service-state
[/dev/cdc-wdm1] Packet service status:
             Network error: 'unknown'
      Packet service state: 'attached'
    Available data classes: 'lte'
              Uplink speed: '3023000000 bps'
            Downlink speed: '4239000000 bps'
root@tester-OptiPlex-5080:~# mbimcli -d /dev/cdc-wdm2 -p --query-packet-service-state
[/dev/cdc-wdm2] Packet service status:
             Network error: 'unknown'
      Packet service state: 'attached'
    Available data classes: 'lte'
              Uplink speed: '1200000000 bps'
            Downlink speed: '3200000000 bps'
root@tester-OptiPlex-5080:~# 

root@tester-OptiPlex-5080:~# mbimcli -d /dev/cdc-wdm0 -p --query-visible-providers
[/dev/cdc-wdm0] Visible providers (3):
    Provider [0]:
            Provider ID: '26201'
          Provider name: 'Telekom.de'
                  State: 'preferred, visible, registered'
         Cellular class: 'gsm'
                   RSSI: '99'
             Error rate: '99'
    Provider [1]:
            Provider ID: '26203'
          Provider name: 'o2 - de'
                  State: 'visible'
         Cellular class: 'gsm'
                   RSSI: '99'
             Error rate: '99'
    Provider [2]:
            Provider ID: '26202'
          Provider name: 'vodafone.de'
                  State: 'visible'
         Cellular class: 'gsm'
                   RSSI: '99'
             Error rate: '99'
root@tester-OptiPlex-5080:~# mbimcli -d /dev/cdc-wdm1 -p --query-visible-providers
[/dev/cdc-wdm1] Visible providers (3):
    Provider [0]:
            Provider ID: '26201'
          Provider name: 'Telekom.de'
                  State: 'home, preferred, visible, registered'
         Cellular class: 'gsm'
                   RSSI: '99'
             Error rate: '99'
    Provider [1]:
            Provider ID: '26203'
          Provider name: 'o2 - de'
                  State: 'visible'
         Cellular class: 'gsm'
                   RSSI: '99'
             Error rate: '99'
    Provider [2]:
            Provider ID: '26202'
          Provider name: 'vodafone.de'
                  State: 'forbidden, visible'
         Cellular class: 'gsm'
                   RSSI: '99'
             Error rate: '99'
root@tester-OptiPlex-5080:~# mbimcli -d /dev/cdc-wdm2 -p --query-visible-providers
[/dev/cdc-wdm2] Visible providers (3):
    Provider [0]:
            Provider ID: '26202'
          Provider name: 'vodafone.de'
                  State: 'home, preferred, visible, registered'
         Cellular class: 'gsm'
                   RSSI: '99'
             Error rate: '99'
    Provider [1]:
            Provider ID: '26203'
          Provider name: 'o2 - de'
                  State: 'forbidden, visible'
         Cellular class: 'gsm'
                   RSSI: '99'
             Error rate: '99'
    Provider [2]:
            Provider ID: '26201'
          Provider name: 'Telekom.de'
                  State: 'forbidden, visible'
         Cellular class: 'gsm'
                   RSSI: '99'
             Error rate: '99'
root@tester-OptiPlex-5080:~# mbim-network /dev/cdc-wdm0 start
Loading profile at /etc/mbim-network.conf...
    APN: unset
    APN auth protocol: unset
    APN user: unset
    APN password: unset
    mbim-proxy: yes
Querying subscriber ready status 'mbimcli -d /dev/cdc-wdm0 --query-subscriber-ready-status --device-open-proxy'...
[/dev/cdc-wdm0] Subscriber ready status retrieved: Ready state: 'initialized' Subscriber ID: '901405101098088' SIM ICCID: '89882806660010980888' Ready info: 'none' Telephone numbers: (0) 'unknown'
Querying registration state 'mbimcli -d /dev/cdc-wdm0 --query-registration-state --device-open-proxy'...
[/dev/cdc-wdm0] Registration status: Network error: 'unknown' Register state: 'roaming' Register mode: 'automatic' Available data classes: 'lte' Current cellular class: 'gsm' Provider ID: '26201' Provider name: 'Telekom.de' Roaming text: 'unknown' Registration flags: 'packet-service-automatic-attach'
Attaching to packet service with 'mbimcli -d /dev/cdc-wdm0 --attach-packet-service --device-open-proxy'...
[/dev/cdc-wdm0] Successfully attached to packet service [/dev/cdc-wdm0] Packet service status: Network error: 'unknown' Packet service state: 'attached' Available data classes: 'lte' Uplink speed: '1250000000 bps' Downlink speed: '3781000000 bps'
Starting network with 'mbimcli -d /dev/cdc-wdm0 --connect=apn='' --device-open-proxy'...
Network started successfully
root@tester-OptiPlex-5080:~# 

root@tester-OptiPlex-5080:~# mbim-network /dev/cdc-wdm1 start
Loading profile at /etc/mbim-network.conf...
    APN: unset
    APN auth protocol: unset
    APN user: unset
    APN password: unset
    mbim-proxy: yes
Querying subscriber ready status 'mbimcli -d /dev/cdc-wdm1 --query-subscriber-ready-status --device-open-proxy'...
[/dev/cdc-wdm1] Subscriber ready status retrieved: Ready state: 'initialized' Subscriber ID: '262011409193877' SIM ICCID: '89490200001487545165' Ready info: 'none' Telephone numbers: (1) '+491755860176'
Querying registration state 'mbimcli -d /dev/cdc-wdm1 --query-registration-state --device-open-proxy'...
[/dev/cdc-wdm1] Registration status: Network error: 'unknown' Register state: 'home' Register mode: 'automatic' Available data classes: 'lte' Current cellular class: 'gsm' Provider ID: '26201' Provider name: 'Telekom.de' Roaming text: 'unknown' Registration flags: 'packet-service-automatic-attach'
Attaching to packet service with 'mbimcli -d /dev/cdc-wdm1 --attach-packet-service --device-open-proxy'...
[/dev/cdc-wdm1] Successfully attached to packet service [/dev/cdc-wdm1] Packet service status: Network error: 'unknown' Packet service state: 'attached' Available data classes: 'lte' Uplink speed: '3023000000 bps' Downlink speed: '4239000000 bps'
Starting network with 'mbimcli -d /dev/cdc-wdm1 --connect=apn='' --device-open-proxy'...
Network started successfully
root@tester-OptiPlex-5080:~# mbim-network /dev/cdc-wdm2 start
Loading profile at /etc/mbim-network.conf...
    APN: unset
    APN auth protocol: unset
    APN user: unset
    APN password: unset
    mbim-proxy: yes
Querying subscriber ready status 'mbimcli -d /dev/cdc-wdm2 --query-subscriber-ready-status --device-open-proxy'...
[/dev/cdc-wdm2] Subscriber ready status retrieved: Ready state: 'initialized' Subscriber ID: '262029924625988' SIM ICCID: '89492099176012918275' Ready info: 'none' Telephone numbers: (1) '+491733917200'
Querying registration state 'mbimcli -d /dev/cdc-wdm2 --query-registration-state --device-open-proxy'...
[/dev/cdc-wdm2] Registration status: Network error: 'unknown' Register state: 'home' Register mode: 'automatic' Available data classes: 'lte' Current cellular class: 'gsm' Provider ID: '26202' Provider name: 'vodafone.de' Roaming text: 'unknown' Registration flags: 'packet-service-automatic-attach'
Attaching to packet service with 'mbimcli -d /dev/cdc-wdm2 --attach-packet-service --device-open-proxy'...
[/dev/cdc-wdm2] Successfully attached to packet service [/dev/cdc-wdm2] Packet service status: Network error: 'unknown' Packet service state: 'attached' Available data classes: 'lte' Uplink speed: '1200000000 bps' Downlink speed: '3200000000 bps'
Starting network with 'mbimcli -d /dev/cdc-wdm2 --connect=apn='' --device-open-proxy'...
Network started successfully
root@tester-OptiPlex-5080:~# ifconfig -a
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.178.96  netmask 255.255.255.0  broadcast 192.168.178.255
        inet6 fe80::ea39:bcfc:d18:5508  prefixlen 64  scopeid 0x20<link>
        inet6 2001:9e8:340:1500:fa1f:1ddf:3f52:67a7  prefixlen 64  scopeid 0x0<global>
        inet6 2001:9e8:340:1500:36b5:7b0:4759:325e  prefixlen 64  scopeid 0x0<global>
        ether 70:b5:e8:53:49:58  txqueuelen 1000  (Ethernet)
        RX packets 29918  bytes 41572987 (41.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 17210  bytes 1605410 (1.6 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  memory 0xd1200000-d1220000  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 706  bytes 79401 (79.4 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 706  bytes 79401 (79.4 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wwan0: flags=4226<BROADCAST,NOARP,MULTICAST>  mtu 1500
        ether e2:80:70:8d:78:18  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wwan1: flags=4226<BROADCAST,NOARP,MULTICAST>  mtu 1500
        ether e2:80:70:8d:78:18  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wwan2: flags=4226<BROADCAST,NOARP,MULTICAST>  mtu 1500
        ether e2:80:70:8d:78:18  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

root@tester-OptiPlex-5080:~# 

root@tester-OptiPlex-5080:/home/tester# ./mbim-set-ip /dev/cdc-wdm0 wwan0
Requesting IPv4 and IPv6 information through mbimcli proxy:

[/dev/cdc-wdm0] IPv4 configuration available: 'address, gateway, dns, mtu'
     IP [0]: '100.104.216.225/30'
    Gateway: '100.104.216.226'
    DNS [0]: '8.8.8.8'
    DNS [1]: '8.8.4.4'
        MTU: '1500'

[/dev/cdc-wdm0] IPv6 configuration available: 'none'
Applying the following network interface configurations:
ip link set wwan0 down
ip addr flush dev wwan0 
ip -6 addr flush dev wwan0 
ip link set wwan0 up
ip addr add 100.104.216.225/30 dev wwan0 broadcast +
ip route add default via 100.104.216.226 dev wwan0
ip link set mtu 1500 dev wwan0 
systemd-resolve -4 --interface=wwan0 --set-dns=8.8.8.8
systemd-resolve -4 --interface=wwan0 --set-dns=8.8.4.4
Network interface configurations completed.
root@tester-OptiPlex-5080:/home/tester# ping -I wwan0 -4 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 100.104.216.225 wwan0: 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=51 time=51.5 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=51 time=23.8 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=51 time=24.6 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=51 time=22.5 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=51 time=23.8 ms
^C
--- 8.8.8.8 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4008ms
rtt min/avg/***/mdev = 22.497/29.245/51.472/11.134 ms

root@tester-OptiPlex-5080:/home/tester# ./mbim-set-ip /dev/cdc-wdm2 wwan2
Requesting IPv4 and IPv6 information through mbimcli proxy:

[/dev/cdc-wdm2] IPv4 configuration available: 'address, gateway, dns, mtu'
     IP [0]: '100.104.91.168/28'
    Gateway: '100.104.91.169'
    DNS [0]: '139.7.30.125'
    DNS [1]: '139.7.30.126'
        MTU: '1500'

[/dev/cdc-wdm2] IPv6 configuration available: 'address, gateway, dns, mtu'
     IP [0]: '2a00:20:608c:4337:c94c:40d7:e0cb:95a8/64'
    Gateway: '2a00:20:608c:4337:787e:563c:97e1:5aae'
    DNS [0]: '2a01:860:0:300::153'
    DNS [1]: '2a01:860:0:300::53'
        MTU: '1500'
Applying the following network interface configurations:
ip link set wwan2 down
ip addr flush dev wwan2 
ip -6 addr flush dev wwan2 
ip link set wwan2 up
ip addr add 100.104.91.168/28 dev wwan2 broadcast +
ip route add default via 100.104.91.169 dev wwan2
ip link set mtu 1500 dev wwan2 
systemd-resolve -4 --interface=wwan2 --set-dns=139.7.30.125
systemd-resolve -4 --interface=wwan2 --set-dns=139.7.30.126
ip -6 addr add 2a00:20:608c:4337:98f3:f401:134c:1b2d/64 dev wwan2
ip -6 route add default via 2a00:20:608c:4337:787e:563c:97e1:5aae dev wwan2
ip -6 link set mtu 1500 dev wwan2
systemd-resolve -6 --interface=wwan2 --set-dns=2a01:860:0:300::153
systemd-resolve -6 --interface=wwan2 --set-dns=2a01:860:0:300::53
Network interface configurations completed.
root@tester-OptiPlex-5080:/home/tester# ping -I wwan2 -4 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 100.104.91.168 wwan2: 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=112 time=66.8 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=112 time=23.9 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=112 time=27.6 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=112 time=26.2 ms
^C
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/***/mdev = 23.902/36.126/66.794/17.754 ms

root@tester-OptiPlex-5080:/home/tester# ./mbim-set-ip /dev/cdc-wdm1 wwan1
Requesting IPv4 and IPv6 information through mbimcli proxy:

[/dev/cdc-wdm1] IPv4 configuration available: 'address, gateway, dns, mtu'
     IP [0]: '10.32.119.231/28'
    Gateway: '10.32.119.232'
    DNS [0]: '10.74.210.210'
    DNS [1]: '10.74.210.211'
        MTU: '1500'

[/dev/cdc-wdm1] IPv6 configuration available: 'address, gateway, dns, mtu'
     IP [0]: '2a01:59f:b10c:1a4d:8430:acc3:aeaa:e227/64'
    Gateway: '2a01:59f:b10c:1a4d:14d1:c288:738a:874f'
    DNS [0]: '2a01:598:7ff:0:10:74:210:210'
    DNS [1]: '2a01:598:7ff:0:10:74:210:211'
        MTU: '1500'
Applying the following network interface configurations:
ip link set wwan1 down
ip addr flush dev wwan1 
ip -6 addr flush dev wwan1 
ip link set wwan1 up
ip addr add 10.32.119.231/28 dev wwan1 broadcast +
ip route add default via 10.32.119.232 dev wwan1
ip link set mtu 1500 dev wwan1 
systemd-resolve -4 --interface=wwan1 --set-dns=10.74.210.210
systemd-resolve -4 --interface=wwan1 --set-dns=10.74.210.211
ip -6 addr add 2a01:59f:b10c:1a4d:6405:46ba:c115:79a5/64 dev wwan1
ip -6 route add default via 2a01:59f:b10c:1a4d:14d1:c288:738a:874f dev wwan1
ip -6 link set mtu 1500 dev wwan1
systemd-resolve -6 --interface=wwan1 --set-dns=2a01:598:7ff:0:10:74:210:210
systemd-resolve -6 --interface=wwan1 --set-dns=2a01:598:7ff:0:10:74:210:211
Network interface configurations completed.
root@tester-OptiPlex-5080:/home/tester# 

====================================================
 

see screenshot for 3 mobile network connections on LINUX host

Author

wemei's picture
wemei