Where I can find the USSD commands specification? - mobile-phones

I need to implement a simple application to send short notify messages on gsm phone display via a GSM modem.
I know that I can use the gsm USSD protocol to send messages instead of sms in order to speed up the delivery.
Where I can find a detailed reference on the available USSD messages?
Where I can find examples or sample applications?
All mobile operators supports the USSD protocol?
Lorenzo

You need an USSD server/gateway in your mobile network operators environment, connected to the operators SS7 network. USSD messages can be sent either from mobile phone to USSD server or from USSD server to mobile phone. It is not possible to send an USSD message directly from one phone to another, you would need to relay the message via the USSD server.
USSD messages are not standardized, they are specific to the mobile network and the USSD-capable applications. However, there are some de-facto standard USSD messages understood by many HLRs for querying and configuring things like call forwarding.
USSD is transported via SS7 using the MAP protocol. The business logic implemented on top of MAP is bound to the actual protocol stack implementation. On the server side that could be hardware (interface cards) plus operating system drivers or software-only, e.g. a SIGTRAN-Stack, depending on the physical layer to be supported (E1, SDH over fiber, ATM or Ethernet). A sample application depends on the protocol stack it runs on. Look for sample applications from the vendor of your interface hardware or protocol stack. On the client side the USSD support is device-dependent, e.g. via J2ME JSR 120 "Wireless Messaging API".
USSD is not guaranteed to be delivered, especially not in roaming scenarios. That solely depends on your mobile network operator. If you do not have an agreement with the operator, he might firewall away your USSD messages, especially if he detects high volumes circumventing his pay-messaging services.

Related

Is it possible to scan a bluetooth device to find it's capabilities

I am looking for a way to scan a device I own and discover "what it can do".
In other words, I'd like to know if a device is able to describe the way you have to communicate with it in order to build some application around it.
In my case it is a simple Christmas light that I'd like to play with but this could be used in different situations.
For classic bluetooth (BR/EDR):
When scanning for bluetooth devices (Inquiry), the bluetooth device will send an inquiry response (if it wants to be discovered) and maybe also an extended inquiry response (EIR). This EIR may already contain a list of services, the devices supports. This is a very fast way to get a picture of a remote device.
Moreover, the service discovery protocol (SDP) gives more information on a device. This takes some more steps. In SDP two devices can exchange their capabilites in kind of ping pong process.
For BLE:
After connecting a BLE device usually a service discovery takes place. The BLE peripheral (e.g. headset or a light) reports its capabilities to the central (e.g. smart phone). Some of these services have predefines functionalities. Additionally, it is free to the manufacturer to add custom services.

J2ME plataformRequest with USSD sometimes work's

I do an aplication that reports valance
I simply call
platformRequest("tel:*222#");
Where *222# is the way to get valance in my network
Work in Samnsug for the moment
But in Some Lg istead of do ussd do a voice call and of course fail
I want to know if are a way to force do a ussd intead a voice call to *222#
for this phones.
i believe that J2ME does not support the USSD protocol because in the JSR 120 for messaging the specifications does not tell us that the USSD protocol needs to be implemented by the provider API company. See this link to get more info:
http://javatnews.blogspot.com/2012/06/ussd-in-j2me-or-jme.html
Greetings, Pavel

how does an app detect device on network

I use apps that interact with their specific devices. An example is Roku. The device is Roku and I use their Android App. Another is my Denon Audio receiver and it too has an app to control it. I'm looking to write app/hardware service. how does an app detect device on network and vice-versa?
Disclaimer: I don't know what Roku is but what you are describing sounds like service discovery as part of zeroconf.
One relatively known example is DNS-SD. You can think of it as sending periodically multicast UDP messages containing stuff such as "I am at address X and I provide service Y" to some well-known address. Whoever is interested will pick up the information associated.

Is there any telephony framework in linux?

I have a USB 3g modem, On windows it comes with software with which, I can use it for calling, sending and receiving SMS. Now, I want to write similar open source application in linux ( I also want to provide DTMF detection functionality ).
In windows, we can achieve this through TAPI, what are the similar technologies/frameworks in linux? Is there any similar opensource application ( I want to use as a reference )?
Yes it is is called ofono - project started by Intel/Nokia for Maemo/Moblin. From wikipedia:
oFono is a free, open source project for mobile telephony (GSM/UMTS)
applications. It uses high-level D-Bus API for use by telephony
applications. It uses 3GPP standard. It is free software released
under the terms of the GNU General Public License v2.
And Asterisk and Freeswitch are PBX software and probably are not what you are looking for.
Freeswitch
I'm not sure about a USB modem, but for VOIP telephony, Freeswitch is excellent. It uses a generic socket API to make it extensible via any number of languages. It can handle inbound and outbound calls, text-to-speech, voice recognition, etc.
My Vodafone Merlin card was recognized as a ttySx ant it was possible to interact by simple AT-commands like with old analog modems. There were also extra commands for reasing the sim card address book, sms and I believe also for sending sms.
We use sms tools: http://smstools3.kekekasvi.com/
The SMS Server Tools 3 is a SMS Gateway software which can send and receive short messages through GSM modems and mobile phones.
You can send short messages by simply storing text files into a special spool directory. The program monitors this directory and sends new files automatically. It also stores received short messages into another directory as text files. Binary messages (including Unicode text) are also supported, for example ring tone messages. It's also possible to send a WAP Push message to the WAP / MMS capable mobile phone.
The program can be run as a SMS daemon which can be started automatically when the operating system starts. High availability can be ensured by using multiple GSM devices (currently up to 64, this limit is easily changeable).
The program can run other external programs or scripts after events like reception of a new message, successful sending and also when the program detects a problem. These programs can inspect the related text files and perform automatic actions, for example storing information into a database (for example MySQL or Microsoft SQL Server), sending an automatic reply, forwarding messages via eMail (SMS to eMail gateway), ... and whatever you like."
Asterisk would be the usual suspect for what you want - http://www.asterisk.org/

what is the purpose of using USSD Commands in our J2ME Application? Is this possible?

I heard there is USSD Commands in Mobile.But i dont know what it is? i was googling two more sites.i did not understand it.Please anybody having knowledge about USSD Commands, share with me.
How it is useful when we using USSD Commands with our j2me midp 2.0 application development?
Please suggest me some useful URL's to get this properly.
Also, i would like to here about AT Commands too?
Thanks & Regards,
P.SARAVANAN
USSD is Unstructured Supplementary Service Data.
GSM standardizes on the syntax (i.e. message transport) of USSD but not on the semantics (i.e. what one can do with USSD is network-operator-specific).
USSD applies a request/response pattern. A user sends a USSD request which is processed by the network and eventually answered with an USSD reponse. In a nutshell, USSD allows an end user sending numerical commands. These commands are transported by protcol functionality within the SS7 signalling stack from the mobile device to the mobile network MSC (mobile switching center, the nework node controlling the mobile network). The network operator configures the MSC to handle specific USSD requests, typically to forward them to various other network elements. Among them are:
HLR (home location register, the user database) to switch on/off telephony services.
IN (intelligent network, the realtime billing platform, among others) voucher management system for prepaid top-up.
USSD gateway to branch out USSD messages to external systems.
These network elements then generate USSD responses which are transported back to the user.
Using USSD from J2ME is offered via:
Devices supporting JSR 120 (Wireless Messaging API). Consult manufacturers development documentation or device databases to check which devices are covered.
AT command (AT+CUSD) via serial interface emulation.
The user composes some message—usually rather cryptic—on the phone keyboard.
The phone sends it to the phone company network, where it is received by a computer dedicated to USSD.
The answer from this computer is sent back to the phone.
The answer could be seen on the phone screen, but it is usually with a very basic presentation.
The messages sent over USSD are not defined by any standardization body, so each network operator can implement whatever it finds suitable for its customers.

Resources