Modem

RB700 Advance has one M.2 3042 key B socket for a modem with dual SIM support. Linux has support for a lot of the M.2 modems so usually no additional drivers are needed. M.2 modems usually provide a few serial ports (appears as /dev/ttyUSBx or /dev/ttyACMx) for communicating with the modem via AT commands. The MODEM LED blue indicates the state of a modem. Modem control signals are presented in Table 1.

Table 1. Modem control signals

GPIO DESRIPTION DEFAULT
GPIO22 M.2 MODEM FULL_CARD_POWER_OFF: 1 – off, 0 – on on
GPIO26 M.2 MODEM RESET: 1 – active, 0 – inactive inactive

M.2 modem reset active:

raspi-gpio set 26 dh

M.2 modem reset inactive :

raspi-gpio set 26 dl

M.2 modem power off:

raspi-gpio set 22 dh

M.2 modem power on:

raspi-gpio set 22 dl

Sierra Wireless EM7455 module will be used to demonstrate communication with the modem. To check if the modem is properly connected, use the command:

lsusb
Bus 001 Device 007: ID 1199:9079 Sierra Wireless, Inc. EM7455

Example AT-Commands

Accessing the modem with picocom:

apt-get install -y picocom
picocom -b 115200 /dev/ttyUSB6

ate1
OK

at+gmi
Sierra Wireless, Incorporated

OK
at+gmm
EM7455

OK
at!entercnd="A710"
OK
at!custom="UIM2ENABLE",1
OK
at!custom?
!CUSTOM:
GPSENABLE 0x01
GPSSEL 0x01
IPV6ENABLE 0x01
UIM2ENABLE 0x01
SIMLPM 0x01
USBSERIALENABLE 0x01
FASTENUMEN 0x01
SINGLEAPNSWITCH 0x01

OK
at!uims=0
OK
at!uims?
!UIMS: 0

OK
at+cpin?
+CPIN: READY

OK
at!uims=1
OK
at!uims?
!UIMS: 1

OK
at+cpin?
+CPIN: READY

OK

To exit use Ctrl-a, Ctrl-x.

NetworkManager

NetworkManager is a system network service that manages your network devices and connections, attempting to keep active network connectivity when available. The point of NetworkManager is to make networking configuration and setup as painless and automatic as possible.

apt-get install network-manager
...
reboot
...
systemctl status NetworkManager
...
mmcli --scan-modems
successfully requested to scan devices
mmcli --list-modems
/org/freedesktop/ModemManager1/Modem/0 [Sierra Wireless, Incorporated] Sierra Wireless EM7455 Qualcomm Snapdragon X7 LTE-A
mmcli --modem=0
--------------------------------
General | dbus path: /org/freedesktop/ModemManager1/Modem/0
| device id: 5dd7f4e1cc49dfa3d60190877386a8e9a3dc0db1
--------------------------------
Hardware | manufacturer: Sierra Wireless, Incorporated
| model: Sierra Wireless EM7455 Qualcomm Snapdragon X7 LTE-A
| firmware revision: SWI9X30C_02.24.05.06
| carrier config: default
| h/w revision: EM7455
| supported: gsm-umts, lte
| current: gsm-umts, lte
| equipment id: 014582006287727
--------------------------------
System | device: /sys/devices/platform/soc/fe980000.usb/usb1/1-1/1-1.2
| drivers: cdc_mbim, qcserial
| plugin: sierra
| primary port: cdc-wdm0
| ports: cdc-wdm0 (mbim), ttyUSB4 (qcdm), ttyUSB6 (at), wwan0 (net)
--------------------------------
Status | unlock retries: sim-pin2 (3)
| state: registered
| power state: on
| access tech: lte
| signal quality: 19% (cached)
--------------------------------
Modes | supported: allowed: 3g; preferred: none
| allowed: 4g; preferred: none
| allowed: 3g, 4g; preferred: 4g
| allowed: 3g, 4g; preferred: 3g
| current: allowed: 3g, 4g; preferred: 4g
--------------------------------
Bands | supported: utran-1, utran-3, utran-4, utran-5, utran-8, utran-2,
| eutran-1, eutran-2, eutran-3, eutran-4, eutran-5, eutran-7, eutran-8,
| eutran-12, eutran-13, eutran-20, eutran-25, eutran-26, eutran-41
| current: utran-1, utran-3, utran-4, utran-5, utran-8, utran-2,
| eutran-1, eutran-2, eutran-3, eutran-4, eutran-5, eutran-7, eutran-8,
| eutran-12, eutran-13, eutran-20, eutran-25, eutran-26, eutran-41
--------------------------------
IP | supported: ipv4, ipv6, ipv4v6
--------------------------------
3GPP | imei: ***************
| enabled locks: fixed-dialing
| operator id: 26006
| operator name: Play
| registration: home
--------------------------------
3GPP EPS | ue mode of operation: csps-2
--------------------------------
SIM | dbus path: /org/freedesktop/ModemManager1/SIM/0

3GPP networks scan:

mmcli -m 0 --3gpp-scan --timeout=300
---------------------
3GPP scan | networks: 26003 - Orange PL (gprs, available)
| 26002 - T-Mobile.pl (gprs, unknown)
| 26001 - Plus (gprs, unknown)
| 26006 - Play (gprs, unknown)

Creating a new SMS message and send it:

mmcli -m 0 --messaging-create-sms="text='Pigeon RB700 send SMS test',number='+48*********'"
Successfully created new SMS: /org/freedesktop/ModemManager1/SMS/12
mmcli -s 12 --send
successfully sent the SMS
mmcli -s 12
-------------------------------
General | dbus path: /org/freedesktop/ModemManager1/SMS/12
-------------------------------
Content | number: +48*********
| text: Pigeon RB700 send SMS test
-------------------------------
Properties | pdu type: submit
| state: sent
| delivery report: not requested
| message reference: 14

Receive SMS:

mmcli -m 0 --messaging-list-sms
/org/freedesktop/ModemManager1/SMS/14 (received)
/org/freedesktop/ModemManager1/SMS/13 (received)
/org/freedesktop/ModemManager1/SMS/12 (sent)

mmcli -s 14
-----------------------
General | dbus path: /org/freedesktop/ModemManager1/SMS/14
-----------------------
Content | number: +48*********
| text: Pigeon RB700 receive SMS test
-----------------------
Properties | pdu type: deliver
| state: received
| storage: mt
| smsc: +48*********
| timestamp: 2022-02-04T11:51:28+01:00

Delete SMS:

mmcli -m 0 --messaging-delete-sms=/org/freedesktop/ModemManager1/SMS/11
successfully deleted SMS from modem

Connecting using MBIM

For details on how to use modems like EM7455 using MBIM see the link.

Example commands:

apt install libmbim-utils
...
service NetworkManager stop
mbimcli -d /dev/cdc-wdm0 -p --query-device-caps
[/dev/cdc-wdm0] Device capabilities retrieved:
Device type: 'remote'
Cellular class: 'gsm'
Voice class: 'no-voice'
SIM class: 'removable'
Data class: 'umts, hsdpa, hsupa, lte'
SMS caps: 'pdu-receive, pdu-send'
Ctrl caps: 'reg-manual'
Max sessions: '8'
Custom data class: 'unknown'
Device ID: '015105000453498'
Firmware info: 'SWI9X30C_02.20.03.00'
Hardware info: 'EM7455'

links