I am currently working on a project for which it is required to receive SMS messages using a dongle. The dongle being used is a Huawei E3131 Hi-Link dongle, which is configured in serial mode via USB-modeswitch. Communication to the dongle is done via AT-commands.
The problem is that SMS messages are not being received. After alot of attempts to fix this I found that SMS messages are ony received after sending out an SMS on the dongle itself. I've also tested with another dongle (Huawei E173), but this works fine.
For testing purposes I am not using any code yet. I am manually execute the following AT-commands to initialize the dongle:
Pin is ready according to "AT+CPIN?".
Dongle is set to text mode via "AT+CMGF=1".
SIM storage is used via "AT+CPMS="SM","SM","SM"".
Message indicators (AT+CNMI) is set to "1,2", but "0,0,0,0,0" and other combinations have been tried as well.
After executing these commands I check the received SMS messages via "AT+CMGL" and none show up (as expected).
Then I will send an SMS to the dongle. After waiting for a while still no messages show up (though you'd expect them to). Then I will use the dongle to send an SMS to another device via the AT+"CMGS" command. This SMS is correctly received on the other device. After sending this SMS suddenly the SMS sent to the dongle show up via "AT+CMGL".
I've read through the Huawei AT commands manual but have still no clue what's going on. I've excluded the following possible issues:
According to "CFUN?" the dongle is in "Online" mode, like you'd expect.
The SIM is not full as "AT+CPMS?" shows.
Enabling mobile equipment errors does not produce any extra output ("AT+CMEE=2").
CREG shows that we are registered (on a roaming network).
CSQ shows a signal is available (strength of 16,99).
I've tested with another E3131 dongle, but this produces the same problems.
RSSI messages are still being received.
Sometimes switching on the internet on the dongle produces the same result as sending out an SMS.
In the SMS gateway which can be used for sending SMS, the SMS will stay in the "pending" state until the message is delivered in the storage on the dongle.
Does anyone know what's going on?
Related
Is there a way to receive SMS messages sent to a GSM module (like sim800) as soon as the module boots up?
Usually if the SMS is sent while the receiving module is off, and then boots up the SMS messages take tens of minutes to arrive. However if the module is turned on, the messages arrive almost immediately.
Is there a way to signal the network that we are now connected and request all SMS messages?
I have tried network deregistration/registration (AT+COPS=2 AT+COPS=0) with no results
Not having a lot of experience on this module, I believe this is rather a question about triggering the network provider to send SMS sooner (e.g. as soon as you're registered). This might depend on the network provider you're connecting to.
With a standard phone I've made the experience that triggering some network activity (e.g. calling someone or sending an SMS myself) seems to flush any SMS queues that they have waiting for me. You might try sending an SMS as soon as you're up
I am currently working on a project where I need to shut down my PC by sending an SMS from my phone.
My idea is:
I have a my cellphone/USB modem with simcard connected to my laptop. So can I shutdown my laptop by sending a message "shutdown"? Here I need to have a program that reads what all sms coming to my phone which is connected to laptop. If the content of the message is "shutdown", then I can call a batch file where my shutdown command is written.
How can I achieve this?
Yes this is possible but much easier using a SMS service like Esendex (www.esendex.com there are loads of others).
You can host a webservice on the machine (or another on the same network). The webservice recieves the SMS and process it depending on the message it contaions. When you send an SMS to your Esendex account this webservice is called and if the message reads Shutdown (or whatever keyword you choose to look for) you can simply call the shutdown batch file.
if you want to do it without using something like esendex you will need to write some code that monitors the SMS's coming into the attached phone. How you do this will depend on the type of phone you have connected I believe.
I would like to be able to output information from a quad band GSM modem. The modem would be connected to a computer, and the idea is that I could send AT commands or SMS from very large distances to the modem. The modem would receive the instructions and would reply in SMS to the sender with the proper information. I am a little overwhelmed in how to approach this however, does anyone have any experience or insight with this? In particular, I am pretty lost on how I would process the received instructions and have the computer execute them.
An example of what I'm trying to do:
Send SMS reading "Power info" to modem
Modem receives SMS, relays it to the computer
Computer sees instruction, fetches necessary data
Computer outputs data to the modem
Modem sends SMS to sender with the proper data (in this case volts/amps being used or something)
Please let me know if anything is unclear, it is my first time posting here.
I have an application which can only send SMS to a serial AT modem, but I want to send this SMS via an web service.
My idea is to connect a virtual software modem to the (virtual) serial port of the application and receive the SMS in software, then I would pass this SMS to the web API.
My problem is, that i nether find a software which can recieve SMS like a modem nor find a library which offers ability to act like a modem.
Any ideas?
Your existing application expects to connect to a serial port. That means you need some kind of virtual serial port. Google will give you perfectly usable hits for that term. Any of those libs should give you a character stream.
Parsing this stream should be fairly straightforward. You can toss out all modem initialization, and just focus on the SMS command. In theory, there's a "write" and a "send" command, but you can safely assume that a PC application will send any SMS that it writes. It's not like PC's make typo's. Hence, you just need to parse the AT+CMGW command; all other commands can get a standard OK response.
Grab the phone number and message from the AT+CMGW command, and pass it to the webservice. Done!
I've absolutely no idea if this is possible and how it would work.
is it possible to give users a phonenumber where they should send an sms to.
e.g. the sms contains
name
some code
i want to track how many sms are sent to this number.
i want to read the sms text and use both nodes
they weird way i imagine this: i buy a prepaid simcard from any phone provider, i plug the simcard into any device (sim-reader :) ) connected to my computer. my computer is ONLINE. so my computer is kind of transformed to a mobile phone. some software is able to retrieve those sms and i can use the data in it.
is that even possible, if yes HOW?
You can use e.g. gammu to send and receive SMS from a cellphone connected to your computer - essentially creating a SMS gateway. I've succesfully used it in the past in this setup (newer phones have serial port emulation through USB, for older ones you need a model-specific serial-to-phone cable):
my program <-> database/textfiles <-> gammu <-> serial port <-> cellphone
The operation was as follows:
gammu ran in the command line/daemon mode, with a watchdog script restarting it (and the cellphone) if the cellphone became unresponsive (this was a really old phone; a watchdog is probably not necessary with anything > 2006)
gammu polled the cellphone for new messages, those were store into a "received" table in the database.
gammu also polled an "outgoing" table in the database for messages I wanted to send, and sent them through the cellphone.
my program was a web frontend for reading the incoming messages or inserting the outgoing ones.
(Gammu has an API to interface with the cellphone directly, without the database; I decided to keep the backend and frontend parts separate, and since the frontend was using the database for other things anyway, it was easiest to go that way; also, I was using an old phone for this, and needed the frontend to run even if the cellphone wasn't responding)
There are several possibilities listed here. But it depends on the phone you are using. Symbian, iOS, Android, Windows Mobile. But basically it is possible using a GSM Modem.