Would you like to learn how to send SMS messages from Ubuntu Linux command-line? In this tutorial, we are going to show you all the steps required to send SMS messages using only the command-line of a computer running Ubuntu Linux and a USB GSM modem.
• Ubuntu version: 18.04
• USB GSM Modem: DWM-221
This tutorial will work only if you are using a USB GSM Modem.
Be careful, some devices look like a USB modem, but are USB Routers like the DWR-910.
Hardware List:
The following section presents the list of equipment used to create this Ubuntu tutorial.
Every piece of hardware listed above can be found at Amazon website.
Ubuntu Playlist:
On this page, we offer quick access to a list of videos related to Ubuntu installation.
Don’t forget to subscribe to our youtube channel named FKIT.
Ubuntu Related Tutorial:
On this page, we offer quick access to a list of tutorials related to Ubuntu installation.
Tutorial – Send SMS from Ubuntu Linux Command-line
First, we need to connect the USB GSM modem to the computer running Ubuntu Linux.
After connecting the USB GSM modem, you need to verify if the system detected the device.
Use the following command to verify if the system detected the USB GSM modem.
# lsusb
Bus 002 Device 002: ID 8087:8001 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 005: ID 2001:a406 D-Link Corp. ***HERE***
The system detected that a USB device from Dlink was connected to the computer.
Now, we need to verify which type of device the Linux kernel assigned to the device.
Use the following command to verify the type of device assigned by the system.
# dmesg
[ 615.241221] usb 3-1: USB disconnect, device number 4
[ 643.023683] usb 3-1: new high-speed USB device number 5 using xhci_hcd
[ 643.173168] usb 3-1: New USB device found, idVendor=2001, idProduct=a406
[ 643.173169] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 643.173170] usb 3-1: Product: Mobile Connect
[ 643.173171] usb 3-1: Manufacturer: Mobile Connect
[ 643.173172] usb 3-1: SerialNumber: 0123456789ABCDEF
[ 643.173939] usb-storage 3-1:1.0: USB Mass Storage device detected
[ 643.174216] scsi host6: usb-storage 3-1:1.0
[ 644.188294] scsi 6:0:0:0: Direct-Access SD Storage 0000 PQ: 0 ANSI: 2
[ 644.188982] scsi 6:0:0:1: CD-ROM Mass Storage 0000 PQ: 0 ANSI: 2
[ 644.189313] sd 6:0:0:0: Attached scsi generic sg1 type 0
[ 644.190462] sd 6:0:0:0: [sdb] Unit Not Ready
[ 644.190465] sd 6:0:0:0: [sdb] Sense Key : Illegal Request [current] [ 644.190467] sd 6:0:0:0: [sdb] Add. Sense: Invalid command operation code
[ 644.190785] sr 6:0:0:1: [sr0] scsi-1 drive
[ 644.190915] sr 6:0:0:1: Attached scsi CD-ROM sr0 ***
The system detected the USB GSM modem as a CDRom unity named sr0.
Use the following command to eject the CDRom unity sr0.
# eject sr0
After ejecting the fake CDRom drive, wait 10 seconds and use again the dmesg command.
# dmesg
[ 1270.366092] usb 3-1: New USB device found, idVendor=2001, idProduct=7e19
[ 1270.366094] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1270.366096] usb 3-1: Product: Mobile Connect
[ 1270.366098] usb 3-1: Manufacturer: Mobile Connect
[ 1270.366099] usb 3-1: SerialNumber: 0123456789ABCDEF
[ 1270.367882] option 3-1:1.0: GSM modem (1-port) converter detected
[ 1270.368033] usb 3-1: GSM modem (1-port) converter now attached to ttyUSB0 ***HERE***
[ 1270.368183] option 3-1:1.1: GSM modem (1-port) converter detected
[ 1270.368299] usb 3-1: GSM modem (1-port) converter now attached to ttyUSB1 ***HERE***
[ 1270.368437] option 3-1:1.2: GSM modem (1-port) converter detected
[ 1270.368541] usb 3-1: GSM modem (1-port) converter now attached to ttyUSB2 ***HERE***
[ 1270.368681] option 3-1:1.3: GSM modem (1-port) converter detected
[ 1270.368787] usb 3-1: GSM modem (1-port) converter now attached to ttyUSB3 ***HERE***
Use the following commands to install the required software.
# apt-get update
# apt install wvdial
Use the wvdialconf command to detect the GSM communication.
# wvdialconf
Scanning your serial ports for a modem.
ttyS0<*1>: ATQ0 V1 E1 — failed with 2400 baud, next try: 9600 baud
ttyS0<*1>: ATQ0 V1 E1 — failed with 9600 baud, next try: 115200 baud
ttyS0<*1>: ATQ0 V1 E1 — and failed too at 115200, giving up.
Modem Port Scan<*1>: S1 S2 S3 S4 S5 S6 S7 S8
Modem Port Scan<*1>: S9 S10 S11 S12 S13 S14 S15 S16
Modem Port Scan<*1>: S17 S18 S19 S20 S21 S22 S23 S24
Modem Port Scan<*1>: S25 S26 S27 S28 S29 S30 S31
ttyUSB0<*1>: ATQ0 V1 E1 — failed with 2400 baud, next try: 9600 baud
ttyUSB0<*1>: ATQ0 V1 E1 — failed with 9600 baud, next try: 9600 baud
ttyUSB0<*1>: ATQ0 V1 E1 — and failed too at 115200, giving up.
ttyUSB1<*1>: ATQ0 V1 E1 — OK
ttyUSB1<*1>: ATQ0 V1 E1 Z — OK
ttyUSB1<*1>: ATQ0 V1 E1 S0=0 — OK
ttyUSB1<*1>: ATQ0 V1 E1 S0=0 &C1 — OK
ttyUSB1<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 — OK
ttyUSB1<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
ttyUSB1<*1>: Modem Identifier: ATI — Manufacturer:
ttyUSB1<*1>: Speed 9600: AT — OK
ttyUSB1<*1>: Max speed is 9600; that should be safe.
ttyUSB1<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
ttyUSB2<*1>: ATQ0 V1 E1 — OK
ttyUSB2<*1>: ATQ0 V1 E1 Z — OK
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 — OK
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &C1 — OK
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 — OK
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
ttyUSB2<*1>: Modem Identifier: ATI — Manufacturer:
ttyUSB2<*1>: Speed 9600: AT — OK
ttyUSB2<*1>: Max speed is 9600; that should be safe.
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
ttyUSB3<*1>: ATQ0 V1 E1 — failed with 2400 baud, next try: 9600 baud
ttyUSB3<*1>: ATQ0 V1 E1 — failed with 9600 baud, next try: 9600 baud
ttyUSB3<*1>: ATQ0 V1 E1 — and failed too at 115200, giving up.
Found a modem on /dev/ttyUSB1.
Modem configuration written to /etc/wvdial.conf.
ttyUSB1: Speed 9600; init “ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0” ***HERE***
ttyUSB2: Speed 9600; init “ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0” ***HERE***
Here is a quick summary of what the wvdialconf command detected:
• Port ttyUSB1 using the 9600 speed and the AT communication is OK
• Port ttyUSB2 using the 9600 speed and the AT communication is OK
Now, we know that one of the following interfaces may work to send SMS:
• Port ttyUSB1
• Port ttyUSB2
Use the following command to install the Gammu software.
# apt-get install gammu
Use the gammu-config command to configure the communication with the GSM modem.
# gammu-config
Here is the original Gammu configuration.
Here is the new Gammu configuration.
Click on the save option to finish your configuration.
In our example, we are using the following configuration:
• Port – /dev/ttyUSB2
• Connection – at
• Synchronize time – No
Use the following command to send an SMS message:
# echo “Dragon Ball super is Awsome!” | gammu –sendsms TEXT 5521999998877
If you want break, press Ctrl+C…
Sending SMS 1/1….waiting for network answer..OK, message reference=233
If the test was successful you are good to go.
If the test was unsuccessful, you need to use the gammu-config command and change the ttyUSB2 to another ttyUSB interface.
Use the following command to read SMS messages:
# gammu getallsms
Location 100009, folder “Inbox”, phone memory, Inbox folder
SMS message
SMSC number : “+552183139914”
Sent : Wed 29 Aug 2018 10:04:46 AM -0300
Coding : Default GSM alphabet (no compression)
Remote number : “021999999999”
Status : UnRead
Yeah! Vegeto is the best
Congratulations! You are now able to send SMS using the command-line.