Raspberry Pi
Adding cellular connectivity to your Raspberry Pi 3 or 4
Adding cellular connectivity to your Raspberry Pi can be done in a few simple steps.

Quick Navigation
Prerequisites
Monogoto SIM
Raspberry Pi 3 or 4
USB adapter with mini PCIe and SIM slot (example)
Mini PCIE cellular modem, for example:
Sierra Wireless MC7700 (LTE)
Telit ME910C1-WW mini PCle (LTE-M & NB-IoT)
Quectel EC25 mini PCle (LTE)
Getting Started
Access the Raspberry Pi by connecting a screen and keyboard (recommended) or connect over SSH.
Install required packages
Open the terminal and validate if the NetworkManager and ModemManager are installed.
NetworkManager -V
ModemManager -VIn addition, install the libqmi-utils and udhcpc packages.
sudo apt install libqmi-utils udhcpcConnect the modem to the Raspberry Pi
Add the mini PCle cellular modem to the USB adapter
Add the Monogoto SIM to the USB adapter
Connect the cellular PCle card to the Raspberry Pi, using the USB port

Open the CLI (Command Line Interface) and see of the USB with cellular modem gets detected:
lsusbExample response:
Bus 001 Device 004: ID 1199:68a2 Sierra Wireless, Inc. MC7700The cellular modem requires the driver qmi_wwan, to verify if the driver is compatible with the modem, enter lsusb -t:
lsusb -t
|__ Port 2: Dev 4, If 8, Class=Vendor Specific Class, Driver=qmi_wwan, 480MCheck what USB port the cellular modem is connected to.
dmesg | grep ttyExample response:
[ 6.728605] usb 1-1.2: Qualcomm USB modem converter now attached to ttyUSB0
[ 6.823516] usb 1-1.2: Qualcomm USB modem converter now attached to ttyUSB1
[ 6.868118] usb 1-1.2: Qualcomm USB modem converter now attached to ttyUSB2Start and enable the NetworkManager:
Start and enable the NetworkManager, when doing so you will be asked to fill out your root password.
systemctl start NetworkManagersystemctl enable NetworkManagerAfter enabling the NetworkManager, the Wifi connection of your Raspberry Pi breaks.
To activate your Wifi again, enter:
nmcli device wifi connect "<SSID>" password "<PASSWORD>"Expected response:
Device 'wlan0' successfully activatedCreate a new connection interface
Create a new connection with name monogoto and set the APN to data.mono:
nmcli c add type gsm ifname '*' con-name monogoto apn data.mono connection.autoconnect yesExpected response:
Connection `monogoto` (...) successfully added.To test if the connection was successfully added, a new file with the name monogoto.nmconnection is created and added to the directory system-connections
ls /etc/NetworkManager/system-connectionsWhen opening this file (using sudo vi) it should show something like:
[connection]
id=monogoto
uuid=XXXXX
type=gsm
permissions=
autoconnect=true
[gsm]
apn=data.mono
[ipv4]
dns-search=
method=auto
[ipv6]
addr-gen-mode=stable-privacy
dns-search=
method=autoStart the connection
Manually start the connection using the command:
nmcli c up monogotoExpected response:
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/0)Validate the connection
The connection with name monogoto should be linked to the device called cdc-wdm0. If the connection is active, everything is displayed in green.
nmcli cExpected response:
NAME UUID TYPE DEVICE
monogoto ..... gsm cdc-wdm0
wifi-name ..... wifi wlan0Activate the device
Enter the following command to activate the cdc-wdm0 device:
sudo nmcli device connect cdc-wdm0Expected response:
Device 'cdc-wdm0' successfully activatView connection details
List the connected modems:
mmcli -LExpected response:
/org/freedesktop/ModemManager1/Modem/0 […]Request information about the connected modem.
Replace 0 with the value you found when running mmcli -L
mmcli -m 0Example response:
...
--------------------------------
Status | unlock retries: sim-pin (3), sim-puk (10), sim-pin2 (3), sim-puk2 (10)
| state: connected
| power state: on
| access tech: lte
| signal quality: 86% (recent)
...Check if the cellular interface is added, and if an IP address was derived. Look for the interface with name wwan0
ifconfigExpected response:
wwan0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet 10.XXX.XXX.XX netmask 255.255.255.252 destination 10.XXX.XXX.XX
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
RX packets 7 bytes 1050 (1.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 52 bytes 8118 (7.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0If no wwan0 interface is visible, disconnect the USB with PCIe and reboot the Raspberry Pi. Connect the USB dongle again after the Raspberry Pi has fully booted.
Check the default IP route:
ip routeExpected response:
default via 10.xxx.xxx.xx dev wlan0 proto static metric 600
default via 10.xxx.xxx.xx dev wwan0 proto static metric 700Change priority of the connections (optional)
To change the priorities of the connections, the metric numbers needs to be adapted. To do so, go to the directory: /etc/NetworkManager/system-connections
Open the file (using sudo vi) monogoto.nmconnection
Add the line route-metric=200 under the section [ipv4]. The file becomes:
[connection]
id=monogoto
uuid=.........
type=gsm
permissions=
autoconnect=true
[gsm]
apn=data.mono
[ipv4]
dns-search=
method=auto
route-metric=200
[ipv6]
addr-gen-mode=stable-privacy
dns-search=
method=autoRestart the NetworkManager
systemctl restart NetworkManagerValidate the connectivity priorities by entering:
ip routeExpected response:
default via 10.xxx.xxx.xx dev wwan0 proto static metric 200
default via 10.xxx.xxx.xx dev wlan0 proto static metric 600Test the connection by sending a PING
Ping IP address 8.8.8.8 to validate the data connection:
ping 8.8.8.8Example response:
PING 8.8.8.8 (8.8.8.8): 56(84) bytes of data
64 bytes from 8.8.8.8: icmp_seq=1 ttl=112 time=72.3 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=112 time=70.8 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=112 time=82.9 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=112 time=78.7 msIf no wwan0 interface is visible, or the pings result in errors, disconnect the USB with PCIe and reboot the Raspberry Pi. Connect the USB dongle again after the Raspberry Pi has fully booted.
Did you manage to connect your Raspberry Pi to Monogoto? Great work! Have a look at the Things logs in the Monogoto Hub to find more details about the established connection.
Last updated
Was this helpful?