Receiving "NO CARRIER" error while tring to make a call using GSM modem in Python
I found the origin of the error :
The syntax is ATD+98xxxxxxxxxx;
followed by terminating string. I was forgotten to put semicolon at the end after the number.
So I replace
phone.write(b'ATD"'+recipient.encode() +b'"\r')
with
phone.write(b'ATD"'+recipient.encode() +b';"\r')
And now it works fine.
Based on the brackets in this documents, I thought that using ";" is optional. But it seems that I was wrong.
Ebrahim Ghasemi
Passionate Java Card programmer with +6 years of experience in different security related topics, including cryptography, web application and network penetration testing and also reverse engineering. Having strong background in network traffic analysis, deep packet inspection,networking protocols and high-performance system programming.
Updated on July 09, 2022Comments
-
Ebrahim Ghasemi almost 2 years
I want to make a call using my GSM modem. So I wrote the below program:
import time import serial recipient = "+98xxxxxxxxxx" phone = serial.Serial("COM10", 115200, timeout=5) try: time.sleep(0.5) phone.write(b'ATZ\r') time.sleep(1) phone.write(b'ATD"'+recipient.encode() +b'"\r') while(1): print(phone.readline()) time.sleep(0.5) finally: phone.close()
But when I run it I receive this output:
>>> ================================ RESTART ================================ >>> b'ATZ\r\r\n' b'OK\r\n' b'ATDxxxxxxxxxx\r\r\n' b'NO CARRIER\r\n'
What does this "NO CARRIER" error means?
Note that I can send SMS successfully.
This is the program that I use to send SMS:
import time import serial recipient = "+98xxxxxxxxxx" message = "Test" phone = serial.Serial("COM10", 115200, timeout=5) try: time.sleep(0.5) phone.write(b'ATZ\r') time.sleep(0.5) phone.write(b'AT+CMGF=1\r') time.sleep(0.5) phone.write(b'AT+CMGS="' + recipient.encode() + b'"\r') time.sleep(0.5) phone.write(message.encode() + b"\r") time.sleep(0.5) phone.write(bytes([26])) time.sleep(0.5) finally: phone.close()