/Projects/Skype GSM Gateway v1

If you hate paying big roaming bills while traveling but still want to use your current GSM phone number to receive/make calls (and SMS) then consider using Skype in combination with this piece of free software and a cheap USB GSM/GPRS modem.

This device (software actually) is also useful if your country is not in the Skype Online Number list. So the biggest advantage of this system is actually accepting calls on your own GSM number via Skype.

Skype Divert application started on server

The idea
Since there is a free Wi-Fi internet connection (almost) everywhere you go now (hotspots; hotels, coffee shops, malls, ...), we can use this to cut some GSM costs while roaming. The idea is to leave your SIM card at home connected to your home-GSM network while you reside in other, foreign-GSM network. You might have already seen something similar on Engadget last year. The idea is pretty much non-elegant one but it works just great.

For this to work you will need USB GSM/GPRS modem with your SIM card connected to your home PC (with Windows) that will stay "on" during your travel. On that PC (we will call it server) you need to set up Skype with an additional Skype name (you can create another one like "my_skype_name_SERVER"). Then you need to start & configure the Skype Divert application that you can download from this page (red download button bellow). If you don't have it yet, go to Dealextreme and purchase this cheap GSM/GPRS USB modem GSM/GPRS USB modem. This modem was used during development and is the only one tested so far. You will also need a simple audio cable to route voice output of GSM/GPRS modem to sound card's input and vice versa. There are two version of this cable that you can make: one with the isolation transformers and one without them. Here is shown only isolated version of cable. (I used the first two transformers that I could get my hands on, and it all works just great.)

Schematics of audio cable (click on picture to enlarge)

Quick and dirty cable

I also found a case for it :-)

My server configuration (aka Skype GSM gateway)

Setup the Skype Divert application
This application is written in Delphi 7, it is pretty simple and after starting it you need to configure few parameters. Click on Divert->Setup and popup will appear:

Skype related setup

In the text-box enter your original Skype name so that the server can recognize only your chat commands (instructions). If your Skype doesn't start automatically, you can click the first check-box. Skype can run in "silent mode" where it doesn't popup chat window, call progress window and notifications while Skype Divert is working. This option can be selected if the server is actually a PC that is being used daily as a normal PC.

Next tab are modem settings and as you can see there is nothing to set there. All modem settings are read from Registry by the application.

Modem settings

Last tab are some settings for the Skype Divert itself, and it only has an auto-start option so that Skype Divert starts with Windows. When checked, a string-key is written in Windows Registry with the current path&filename where the application is started.

Application settings

Now that we have everything set up it is time to test it out. If going mobile, you can use Skype for iOS, PDA, Android, laptop,... via Wi-Fi or whatever you have at the moment. So, connect to Skype with your usual Skype name and start chatting with your server. Supported commands for the server are:

  • "D" - Dial
  • "S" - Send SMS
  • "C" - Issue CUSD Command

Invalid command is treated as "help"

"D" - Dial
- To dial a number simply type: D<number> and hit enter. After a few seconds there will be a Skype (callback) call from server that you need to accept. In this case the USB GSM/GPRS modem is actually establishing outgoing GSM call and the Skype Divert application is placing a call back to you via Skype.

Dialing number example

"S" - Send SMS
- To send SMS message simply type: S<recipient_number> <your_sms_message> and hit enter. After a few seconds there will be a response saying that your message has been sent.

"C" - Issue CUSD Command
- To issue a CUSD command (*command#) use prefix "C". For example the C*100# command will usually check your prepaid credit balance, command #21# will cancel all diverts, and so on.

CUSD command for checking prepaid credit example

Receiving GSM call
- To receive a GSM phone call - server will call you via Skype. The caller ID number will be displayed in Skype chat so you can choose whether to answer it or not.

Incoming GSM call

Receiving SMS message
- To receive an SMS message - server will dump it to Skype chat so that you can read it and reply to it.

How does it work?
A small application called Skype Divert is written in Delphi 7. There are many Delphi examples on Skype webpage here so you can check them out. This application attaches itself to Skype and issues commands such as PlaceCall, SendMessage, ReadMessage and so on. On the other side, it also communicates with USB GSM/GPRS modem through virtual COM port that is created when you connect modem to PC. The application monitors Skype status and GSM/GPRS modem status at all times.
Here is one example: If the the incoming call is detected on GSM, the application will create a Skype call to you. Once the Skype call is established the GSM/GPRS modem receives "ATA" command and the connection is established. When any party ends the call, both connections are closed and we go back to the beginning.

This simple Skype GSM Interface is working flawlessly for about a month now, and my friend that has gone to Africa for work is able to use his original GSM number to talk to his family and friends and keep in touch with everyone else from his hometown simply by using his iPod and Wi-Fi connection. Most importantly, he can answer GSM calls just like if he was here.

Tip: Starting the skypedivert.exe app on Windows 7 must be done in "Run as Administrator" mode.

Author (sent by): Trax

Download counter: 3,252

Rating: (2.94, votes 3427)


Date: 11-05-2011

Lokalna verzija ove stranice: Skype GSM Interface v1


Bookmark and Share Comments (147)

comment [147]

I have sent it to you!
IP: n/a

comment [146]

Hello trax, as other guys I tried to use SkypeDivert on my modem via AT-commands (TC35). Would you like to send me a source code of SkypeDivert to fix it for my hw? Thank you very much.

comment [145]

Hi all, unfortunately I don't think skype will have a desktop api any more in the future ... as I know it is deprecated for a long time now. And I am not sure you will be able to use your old skype any more... at some point they will probably not allow old skype to connect. We must find another solution. I know skype is most popular but as it seems they wouldn't offer their support any more.

comment [144]

@wie, thanks for the update! I will put link to this modem in the article. Maybe Skype will publish their new API soon...
IP: n/a

comment [143]

hi.. newest version skype. some API command cannot work anymore ( like make call ). solution is using older version like i use on my XP machine. i found this modem on AliExpress that work with skydivert. http://www.aliexpress.com/item/Free-shipping-New-Fast-Bulk-SMS-GPRS-Modem-GSM-MODEM-USB-Modem/3 20896264.html be carefull with audio part, lucky on you if you buy good one with working audio.. (i buy 5 units. 2 units audio not work). now i use older skype version with siptosis (java) as sip client to connect my ip pbx. ( i use if at some place that internet connection block on voip port but not block skype. good luck.

comment [142]

OK, great. If you want, we can publish it here :-) The idea for using Skype is that it is the easiest solution, since many people already use Skype...
IP: n/a

comment [141]

Nevermind, I think I'll a small java voice chat module or look for one. It's even better this way because I won't be dependent on skype any more.

comment [140]

Hi trax, I am working on the java diverter but I found that placing a call programmatically to skype does not work as expected in newer skype versions. I have to call PlaceCall() many times in order to make skype to actually make the call for me, sometimes it does not make the call even after 100 method calls. It seems skype desktop api is deprecated, I am facing this issue: https://community.skype.com/t5/Windows-desktop-client/Skype-API-PlaceCall-is-broken-in-latest-v ersions/td-p/4153163 . Do you know of any other good client-server phone / voice call application that I could use?

comment [139]

@streppuiu, I will send you the source code now. Anyway, the SkypeDiverter application reads registry to find that USB GPRS modem from the photos above. The application should be changed not to search for the modem in registry, but simply to connect to a specific COM port and start communicating with it. That is all change that has to be made. When you finish Java version, maybe you can send it here so I can publish it?
IP: n/a

comment [138]

Hi trax, I tried the program on an old samsung sgh-e250 phone that I wanted to use as modem. I tried a few AT commands and found that there are many (essentials) that this modem does not support. I'll look for another one. I also tried to run SkypeDivert application and its connection to skype was successful. I am however receiving "Index out of bounds" error in a dialog box and my modem is not detected. I see "Modem not connected or not initialized!". Are you using some kind of hardcoded modem ID or what could be the reason why my mode (which appears in my hardware manager and checks out fine when diagnosing). I am a java developer and would like to adapt your application to the java language so that it would be usable on any platform. I know there could be issues with the skype api (which I am not familiar with yet) for other os-s than windows but still, I'd like to give it a shot. Please let me have your code if possible, thanks.

Comment page: 12345678...>

add comment


e-mail (will not be published)


How much is = also add letter "a" at the end of your result! Eg.: 7a

Please log-in!

You can log-in on forum link: Login page. After logging-in, return to this page and click refresh in your browser.

site friends

sponsored links