Making the SIM800L GSM module to send its own phone number when making a voice call - sim800l

I connected the GSM module to an Arduino Mini Pro and control it with AT commands. I can make a phone call, but the calle phone does not display the callers number. It displays "No caller ID". Although if i put the same SIM card into an old mobile phone and call the same phone than it displays the correct number.
This is what I sent:
AT // wait for OK
AT+CREG=1 // wait for CREG=1
ATD+XXxxxxxxxxx; // wait for OK.
the call is always succesful.
Is there any way to force the GSM module to send its phone number?
Thanks!

Taken from here:
https://forum.arduino.cc/t/sim800l-call-private-number/543322
AT+CLIR=
Response
TA restricts or enables the presentation of the CLI to the called party when originating a call.
The Command overrides the CLIR subscription (default is restricted or allowed) when temporary mode is provisioned as a default adjustment for all following outgoing calls. This adjustment can be revoked by using the opposite Command.
OK
If error is related to ME functionality:
+CME ERROR:
Parameters
(parameter sets the adjustment for outgoing calls):
0 Presentation indicator is used according to the subscription of the CLIR service.
1 CLIR invocation
2 CLIR suppression
(parameter shows the subscriber CLIR service status in the network):
0 CLIR not provisioned
1 CLIR provisioned in permanent mode
2 Unknown (e.g. no network, etc.)
3 CLIR temporary mode presentation restricted
4 CLIR temporary mode presentation allowed

Related

Cumulocity tracker-agent stuck at "Start bootstraping"

I have trouble with one of my devices (Tracker dongle) communicating with Cumulocity. I used the Device Registration interface to register its IMEI. Then I accepted it in the same interface when it first connected. But now the tracker-agent I deployed is continually logging:
c.t.d.DeviceBootstrapProcessor : Start bootstrapping:
(DEVICE_IMEI)
And I got nothing arriving on Cumulocity. So I'm guessing it's stuck trying to retreive the device credentials? (Cf. DeviceBootstrapProcessor.tryAccessDeviceCredentials). I have another device of the same type which worcks just fine in the same configuration and I can't tell what's the difference between the two. Is there a step I'm missing to correctly register a device?
The tracker-agent has an additional registration for itself. It is once per tenant and automatically triggers after registering the first tracker device.
What you need to do is register the agent (via device registration) with the following ID:
tracker-agent-{tenant}
(replace {tenant} with the tenant you want do register the agent). This needs do be done once per tenant to allow the tracker agent to create devices and data.

GSM Modem not able to receive SMS

i doing a simple application that able to integrate with GSM Modem to send and receive the SMS. i had completed the send SMS part, but i not able to receive the SMS. i get error message said that my SIM card memory is full when trying to send the SMS with other mobile device to my SIM card in the GSM Modem. i tried to use the AT command "AT+CMGL" to remove all the messages, but still same. May i know there are any method to store the message in my computer memory so that i able to receive the SMS with my GSM Modem. I using the sample code from here
http://www.codeproject.com/Articles/38705/Send-and-Read-SMS-through-a-GSM-Modem-using-AT-Com
The AT+CMGL command is for listing messages, not deleting them. Deleting messages is done with the AT+CMGD command. Do yourself a favour and download a copy of the 3GPP 27.005 standard, it defines all the standard sms AT commands (most other mobile phone AT commands are defined in 27.007), and by all means get a copy of the ITU standard V.250 which defines the basic command syntax, structure and behaviour for AT commands - an absolute must read for anyone that issues AT commands (read all of chapter 5 at least). These documents are more valuable than any random internet web site, including stackoverflow.
Speaking of random websites, the web page you linked as source seems to be of dubious value. It gives an example function DeleteMsg which issues AT+CMGF=1 but this command does in no way delete anything, it selects text or PDU mode for the various sms related commands.
It does have response handling that is better than the horrible send-sleep-read mistake that unfortunately is not as uncommon as it ought to be, but it is only half decent and not robust at all.
After sending an AT command to a modem you should continuously read and parse response lines from the modem (over and over again) until you receive a final result code (and not just once). See this answer for details.
All of the the message commands operate on the storage location set by AT+CPMS. And notice that you should always set <mem1> and <mem2> at the same time, e.g.
AT+CPMS="SM","SM"
It both makes little sense to only change one of mem1/mem2, and some phones do not like attempts to set only one of them.

How to make asterisk dial a POTS number triggered by notification?

I'm setting up some higher end security systems for a client. I'm using blue iris (his request) which has alot of great options for alerting you via cell phone or POTS telephone call. Unfortunately the building is 100% VoIP with no POTS and the camera server is in that building. I want it to ring a house number via a Automated VOIP call when an event is triggered in blue Iris then play a pre-recorded message.
We have a couple of Asterisk/Elastix PBXes in the company. I'm not sure how to proceeded:
Blus iris event triggered, it sends message/request/alert to a extension on the PBX
PBX makes the automated call to the group of numbers whenever that extension is dialed/contacted/triggered/etc.
I'd use an external script file (PHP, Ruby, BASH) to generate your call request on the PBX. See my answer at [
Asterisk AGI - Originate a call using php agi
] for more details. However, what you're doing is entirely possible, as I do it myself for a couple of different solution sets.
Essentially, and most easily, you'd generate a call file via script and within it ensure you have a couple of channel variables set that are keys for specific routing. When the call connects at the far end, the near end goes into a dialplan on the ASTPBX where exactly what message is played, after-message behaviour, etc, is managed by the channel variables you've set.

USB - MTP/PTP without Interrupt Endpoint

Since we plan to use MTP (Media Transfer Protocol) for your next device, we evaluate the use of MTP as replacement for the current (unstable) USB drivers in the current released device.
The limitation on this device is, that its processor (Strong Arm) supports only up to 3 EndPoints:
"Serial port 0 is a universal serial bus device controller (UDC) that supports three endpoints and can operate half-duplex at a baud rate of 12 Mbps (slave only, not a host or hub controller)."
But according to the specification, MTP needs at least 4 endpoints (from the PTP spec):
"The device shall contain at least four endpoints: default, Data-In, Data-Out, and an Interrupt endpoint."
Now the question: Can we just skip the interrupt endpoint on the device? I know that it violates the specification - but what happens if we do?
From our current evaluation software I can see the following scenarios:
The 'space available' is not updated - the user will see that there is 100Mb of free memory, but placing a 1Mb file gives the error "Not Enough Memory"
Non-host driven actions are not visible on the host (so when on the device files are deleted, created or moved, the connected host does not know about it)
If we can live with it, is it advisable to implement it this way?
UPDATE: Damn... when I tested it last time, I ve just removed the code for interrupt-EP data transmission. Now I also removed the endpoint definition (I do not create the endpoint anymore) and from this point the MTP connection couldn't be established any more :(
It seems that the windows driver (wpd) requires the interrupt endpoint - even if it's not used. Bad luck...
Has anyone an idea, whether and how to get MTP working with 3 endpoints?
Finally I got an answer from Microsoft:
The 3-endpoints setup is not supported.
The interrupt endpoint is required so that the driver can receive MTP events from the device. These events are a notification mechanism that the driver relies on to relay events to applications (e.g. when an object is created, updated, or removed).
If your device does nothing with the endpoint (i.e. send no events), applications such as Explorer will not behave correctly whenever objects on your device are changed.
So we buried our plans... :(

Huawei Mobile Connect E170

I am trying to receive SMS messages with a Huawei Mobile Connect, Model: E170 device through hyper terminal but can't.
I used the below commands to initialize the modem:
AT+CMGF=1
AT+CNMI=2,2,0,0,0 (But this gives me this error: +CMS ERROR: 303)
This same commands working on my nokia N70, 6630 and many other nokia models i can't remember.
I know the modem can receive and send SMS messages, but how do i do it?
Below worked for me in Huawe E153.
at+cmgf=1 //Set text format
at+csmp=49,167 //Enable delivery reports
at+cpms="SM","SM","SR" //Set message storage
at+cnmi=2,1,0,2 //Set message notifications
Note the order of the configuration as well. The modem may not let you enable conflicting configurations.
Also note that some modems send the notifications through different channels. In my case connecting E153 in Ubuntu created /dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2, /dev/ttyUSB3. The notifications for new SMS and delivery reports were only coming through /dev/ttyUSB3 even if I sent SMS using /dev/ttyUSB0.
I'm using this init-string in kannel: "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0" with a huawei e153 and it works in an acceptable manner (I can send sms) so you must use that one or launch wvdial and watch stdout to get the right string/command.
Then provide the error message if that didn't work.
Maybe it would be better to use software which can do this? For example Gammu or Gnokii.
And back to the question: Some phones do not like setting all CNMI parameters, check AT+CNMI=? output to see what your phone does support, most likely you need to use something like AT+CNMI=2,,,,0