Monday, January 04, 2016

Remote GSM SIM Management with Raspberry Pi

Remote management of a GSM SIM card using a Raspberry Pi B+ and a Huawei E173 USB 3G modem. The RBox chat-bot connects to an XMPP/Jabber server and lets you send/receive SMS, make voice calls, and dial USSD codes — all from your phone's chat app, anywhere in the world.

Raspberry Pi B+ with Huawei E173 USB 3G modem

Raspberry Pi B+ with Huawei E173 USB 3G stick — the complete RBox GSM gateway.

Why remote SIM management?

  • Your SIM card has no roaming and you're travelling internationally
  • You're outside GSM coverage but have internet access and need SMS functionality
  • You manage multiple SIM cards and want centralized access
  • You need a self-hosted SMS gateway for sending/receiving over the internet
  • You have remote sensors that report data via SMS and want a central collection point

Ensure your SIM card is deployed at a safe and secure location to avoid possible misuse.

Items needed

  • Raspberry Pi B+
  • Micro or full-size SD card
  • Huawei E173 USB 3G stick
  • SIM card (PIN lock must be disabled)
  • 5 V / 2 A power supply
  • Two Google or Jabber accounts (one for you, one for the Raspberry Pi)
  • RBox SD card image

Setup

Setup diagram — Raspberry Pi with USB 3G modem connected to home router

Setup diagram — Huawei E173 plugged into the Raspberry Pi, which connects to the internet through a home router.

  1. Flash the RBox SD card image (see the RBox setup guide for details)
  2. Insert the PIN-unlocked SIM card into the Huawei E173 and plug it into the Raspberry Pi
  3. Connect the Raspberry Pi to your home router via Ethernet and power on with a 2 A supply
  4. On your phone's XMPP client (Xabber, Conversations, etc.), check that the Raspberry Pi account is online
  5. Send Help — the bot replies with the list of supported commands

Both XMPP accounts must be authorized as contacts before the Raspberry Pi is powered on — do this from a PC first.

When RBox boots without the USB 3G stick connected, SMS/SIM-related commands will not appear in the help list.

Reading SMS

  1. Send Smsupdate — immediate reply: InProgress : taskID=1
  2. Wait 3–5 seconds for the modem to read the SIM
  3. Reply Success : taskID=1 confirms messages are cached
  4. Send Smstotal — reply shows the count (e.g. Success : 2)
  5. Send Smsget 0 to read the first message, Smsget 1 for the second, etc.

Deleting SMS

  1. Send Smsdeleteall — immediate reply: InProgress : taskID=2
  2. Wait 3–5 seconds
  3. Reply Success : taskID=2 confirms deletion
  4. Verify with Smsupdate followed by Smstotal — if messages remain, repeat the delete

Sending SMS

  1. Send Smssend 009198xxxxxxxx hello this is a test message
  2. Immediate reply: InProgress : taskID=3
  3. Wait 3–5 seconds — reply Success : taskID=3 confirms the SMS was sent
  4. If sending fails, try omitting the international/country code prefix (0091)

Voice dialling

  1. Send Dialvoice 009198xxxxxxxx
  2. Immediate reply: InProgress : taskID=4
  3. The modem dials and rings for 20–25 seconds, then disconnects automatically
  4. Reply Success : taskID=4 confirms the call completed

Voice dialling currently places a silent call (no audio playback). Future RBox releases may support playing a recorded message for automation use cases.

USSD codes

USSD codes like *101# are useful for checking prepaid balance and other carrier queries.

  1. Send Dialussd *101# (the code varies by carrier)
  2. Immediate reply: InProgress : taskID=5
  3. Wait 3–5 seconds — reply Success : taskID=5 confirms the USSD response was received
  4. Send Readussd to read the carrier's response text

SOURCE CODE

github.com/hackboxguy/brbox — RBox sources and build instructions

4 comments:

  1. sir this is a great project. i want to ask you a question. how to send a message to multiple numbers using this setup. or how to create a list. concept of bulk sms.

    ReplyDelete
  2. Very informative article, for those who wants to stay connected with everyone even when they are traveling or not have cell phone/Sim card with them, can get beneficial from RBox.

    ReplyDelete
  3. Hello Albert,

    Thanks for this article. I got to this page from your post on Quora "How do you start your own SMS gateway?" I am in the US and developing some applications that will target users from Cameroon(Africa) and I will like to setup my own gateway to send sms to people in Cameroon if possible. Will your solution work or is limited to the US. How can I make it work for sending sms to Cameroon or through whatsapp?

    ReplyDelete
  4. I've created an open source soulution built using PHP and mysql you can find it at https://selfhostedsms.com It has integration with more than 150 gateways or even your own device, you should have a look

    ReplyDelete