Homebrew Iridium Messenger and SMS Gateteway

  • HTML tutorial

Ubiety

Rank VI
Member

Explorer I

5,221
Sammamish, WA, USA
First Name
Greg
Last Name
Ubiety
Member #

6193

Ham/GMRS Callsign
Ribs
I have put together a system that will let my Jeep send and receive SMS messages anywhere via the Iridium satellite network. I would be happy to work with anyone wanting to replicate this for themselves and will provide source code on request.

This is not entry level stuff as it requires some knowledge of programming, embedded systems, internet servers and does cost a little bit to acquire and keep up and running. But hey, now you can receive texts from the spouse while in the wild to let you know that the kids are misbehaving ;)

The system consists of two separate pieces of software, one on an internet connected server, the other running in your vehicle, laptop, etc. that is with you (and connected to the Iridium modem). You will also need an Iridium modem (mine is a 9602)

Server - software running here communicates with Twilio to send/receive SMS messages to/from anybody's iGadget (back home). The server also is capable of communicating with Iridium's internet servers to send and receive short text messages over their satellite system. In short the server brokers messages between SMS (Twilio) and satellites (Iridium). My server also injects APRS packets into the APRS-IS stream - which may, or may not, be appropriate for you (are you a HAM?).

Jeep - the second bit of software runs in my Jeep on a Raspberry Pi and interfaces with the Iridium modem. This software presents a set of web pages that someone, connected to the Jeep's WiFi access point, can use to send and receive messages.

Costs
1. Iridium modem - $300 to $500. I had planned on purchasing one but lucked out and found one in a lab cleanout at work that was about to be tossed (I work in satcom).
2. Twilio account (cheap) to send/receive SMS messages to iGadgets in the city.
3. Internet server to run your gateway on. You may have already as I did, or you may be able to do this from your home machine.
4. Iridium account. Fairly cheap but each send/receive costs up to $0.25. There is an activation fee as well as a monthly fee (~$15). I got my Iridium service through SatPhoneStore but do not recommend them. Rockblock has a similar service that makes it easier to access Iridium server at a slightly higher cost.

We desire some connectivity to communicate in/out of the wild but do not desire full on internet because nobody wants to sit around a campfire with someone glued to their phone... If you desire full mobile internet connectivity talk with me - but make sure you have a very fat wallet. Really, very fat, obscenely fat, morbidly obese wallet.

I created the system recently during Seattle's "snowmaggedon" and still have bit of cleanup work to do but it works very well.

If you are inclined to try this yourself let me know. If we ever find ourselves on the trail together feel free to drop by and see the system and send an SMS to a loved one.
 

Ubiety

Rank VI
Member

Explorer I

5,221
Sammamish, WA, USA
First Name
Greg
Last Name
Ubiety
Member #

6193

Ham/GMRS Callsign
Ribs
Have to think on this
Take a look at Rock7's offerings (RockBlock) - they have some cheaper hardware (slightly) and a little easier method to communicate with Iridium's servers. Of course my service plan and code does it the hard/normal way.
RockBLOCK | Rock Seven

This is the modem that I have. You will also need an antenna and some coax for this one (and likely others).
How do I use Data with my Beam Inmarsat docking station or terminal? - Beam Communications

The server can inject a hi-fidelity location APRS packet when directed to by incoming Iridium data. It also posts a lo-fidelity APRS packet when an SMS is received from the Iridium end (Iridium messages include lo-fi lat/lon so I scrape that and make an APRS packet).

When the server receives Iridium data to be forwarded as SMS I tack the above aprs.fi link to the bottom of the message so the iGadget recipient in the city can see where we are.
 
Last edited:

Jedi

Rank VI
Staff member
Launch Member

Off-Road Ranger I

3,402
Ferndale, WA USA
First Name
Brian
Last Name
McClory
Member #

12406

Ham/GMRS Callsign
K6JDI
This is a very interesting homebrew solution... @jim lee might be interested in it, as he recently homebrewed a cellular link. All of this is way beyond my brain's capacity.
 

Drifterman

Rank V
Launch Member

Traveler I

1,721
East Patchogue, NY, USA
First Name
Fluffy
Last Name
Drifter
Member #

14708

Here is my super professional system diagram to maybe help explain a little better.

View attachment 87107
Works for me lol im stupid when it comes to tech lol but i get it its going to be atleast a year or 2 before i get into things like this being its hard for me to get off the island and free from work lol
 
  • Like
Reactions: RXV_POOR

jim lee

Rank V
Launch Member

Influencer I

2,846
Anacortes, WA
Member #

12180

That modem seems to be the key piece necessary and also the largest & most costly. How big is the modem? What kind of power does it draw? Is there a "chip sized" version available? Cell phone chips are about the size of a postage stamp so you can get them into a handheld. I'd LOVE to get my stuff to run satellite. That would be too cool!

There is also a new tech. out there where there is no paid for network at all. Just all your handhelds link to each other and pass data packets back and forth. IE I can "talk" from the west coast to the east coast because there's enough cars with handhelds on the freeways to link up. (Or at least that seems to be the plan. No idea how far they've gotten with it.)

-jim lee
 
  • Like
Reactions: RXV_POOR

Ubiety

Rank VI
Member

Explorer I

5,221
Sammamish, WA, USA
First Name
Greg
Last Name
Ubiety
Member #

6193

Ham/GMRS Callsign
Ribs
That modem seems to be the key piece necessary and also the largest & most costly. How big is the modem? What kind of power does it draw? Is there a "chip sized" version available? Cell phone chips are about the size of a postage stamp so you can get them into a handheld. I'd LOVE to get my stuff to run satellite. That would be too cool!
I have a Beam Communication 9602 modem (they now only sell the 9602N which I have been told is functionally the same); it is approx 1x3x4 inches - so relatively small. I know Rock7 (http://rock7.com/) has some smaller DIY type "chip-only" modems and these come at a cheaper price (though still a bit spendy). Power draw, not sure - but my modem runs on 12V and came with bare power wires (not socketed connecter, etc.). Most of the time the modem is idle - unless you are explicitly sending or receiving. My guess is that the draw is pretty low. I was going to buy a rock7 product and was waiting for the right time - I lucked out and did some lab cleanup with my boss and he was going to toss it so I grabbed it.

There is also a new tech. out there where there is no paid for network at all. Just all your handhelds link to each other and pass data packets back and forth. IE I can "talk" from the west coast to the east coast because there's enough cars with handhelds on the freeways to link up. (Or at least that seems to be the plan. No idea how far they've gotten with it.)
We really need something that works in the wild where no other cars are that might repeat our message - and this would require a HAM on the receiving end? Sounds neat but not exactly what we are looking for. This system uses SMS on the "city" side so anyone with an iGadget can send and receive to/from us.

I'd LOVE to get my stuff to run satellite. That would be too cool!
Oh yeah! Got a pointer to what your stuff does? One other thing to beware of is that the Iridium SBD messages are pretty small - we can send ~120 bytes and receive ~200 bytes. Enough for a terse check in or emergency messages. You could always chain messages together for a longer message... SBD messages can be binary or text - I am using text because it meets my needs and was a little easier to get started with.

Iridium packs extra data into SBD "packets" that include, among other things, lo-fi GPS lat/lon. I have leveraged this so that if an SMS is sent from the Jeep the server will grab the lat/lon and inject an APRS packet automagically. I then append a link to aprs.fi with my callsign to the outgoing SMS so that each sent text has a link to our location on the map. The server also recognizes hi-fi GPS lat/lon APRS only messages where the lat/lon is grabbed out of gpsd and included as part of the message body. This would be useful when driving through an area without APRS repeater/i-gate coverage.

Greg
 
  • Like
Reactions: RXV_POOR

Ubiety

Rank VI
Member

Explorer I

5,221
Sammamish, WA, USA
First Name
Greg
Last Name
Ubiety
Member #

6193

Ham/GMRS Callsign
Ribs
Mine is a 2G cellphone. Or is becoming one.
Pretty cool, had considered using a cell modem for IoT kinds of devices but never rolling my own phone. Nice work over-achiever! Nice truck too! I work in Kirkland with a guy from Anacortes. What a commute! We have a place up on Lummi Island and love that area though rarely make it up there lately.

I really don't care for cell phones but I think I could like one similar to yours; mine would be obnoxiously low tech ;) Do you find the Arduino powerful enough for your interface, audio codecs, etc.?
 

jim lee

Rank V
Launch Member

Influencer I

2,846
Anacortes, WA
Member #

12180

The original plan was to just build a "text & tunes" box for the kids. Then... It was only a few more lines of code to make it do voice calls.. So that was added in. With the addition of a second processor to run the GUI I ran out of room in the case to put in the .mp3 player hardware. (Grrr!) So it kinda' morphed into a imitation smartphone.

What I found was that your typical smartphone GUI is pretty complex and actually, pretty well thought out. I had to.. Create a way to run multiple "sketches" by swapping them in and out of memory, a bloody mini database to keep call logs, message logs, contact lists, etc etc etc. This took me down the road of setting up code to write to SD cards as if they were RAM. I was able to send sms messages the first or second day of getting the hardware running. The GUI and it's supporting code I've been at since thanksgiving almost nonstop.

The phone itself is running on a feather board from Adafruit. Its basically an Arduino. It runs all the hardware like microphone, speaker, antenna, cellphone chip, battery charger etc. EVERYTHING else is run on a teensy 3.2 which is like a mini Arduino on steroids. The touch screen and the entire GUI runs on the teensy and it just tells the feather processor what to do over a serial link. I needed to teensy's 64k of RAM to deal with the touchscreen and all the code to do drawing and lists and things.

The last bit to add into the GUI is the SMS message thing. I had to hold off on that 'till I had a databsse, scrolling lists.. All that kind of stuff running and ready before I could start on text messaging.

Thanks for asking. Everyone else just kinda' rolls their eyes and goes glassy when they see it.

-jim lee
 
Last edited:

Ubiety

Rank VI
Member

Explorer I

5,221
Sammamish, WA, USA
First Name
Greg
Last Name
Ubiety
Member #

6193

Ham/GMRS Callsign
Ribs
The original plan was to just build a "text & tunes" box for the kids. Then... It was only a few more lines of code to make it do voice calls.. So that was added in. With the addition of a second processor to run the GUI I ran out of room in the case to put in the .mp3 player hardware. (Grrr!) So it kinda' morphed into a imitation smartphone.

What I found was that your typical smartphone GUI is pretty complex and actually well thought out. I had to.. Create a way to run multiple "sketches" by swapping them in and out of memory, a bloody mini database to keep call logs, message logs, contact lists, etc etc etc. This took me down the road of setting up code to write to SC cards as if they were RAM. I was able to send sms messages the first or second day of getting the hardware running. The GUI and it's supporting code I've been at since thanksgiving almost nonstop.

The phone itself is running on a feather board from Adafruit. Its basically an Arduino. It runs all the hardware like microphone, speaker, antenna, cellphone chip, battery charger etc. EVERYTHING else is run on a teensy 3.2 which is like a mini Arduino on steroids. The touch screen and the entire GUI runs on the teensy and it just tells the feather processor what to do over a serial link. I needed to teensy's 64k of RAM to deal with the touchscreen and all the code to do drawing and lists and things.

The last bit to add into the GUI is the SMS message thing. I had to hold off on that 'till I had a databsse, scrolling lists.. All that kind of stuff running and ready before I could start on text messaging.

Thanks for asking. Everyone else just kinda' rolls their eyes and goes glassy when they see it.

-jim lee

Sounds awesome, especially the fact it is running on an Arduino! I am familiar with the Feather, I have several of the M0 boards with 900mhz radios that I use for temperature monitoring around the house. I really like the feather - especially with all of its options. Speaking of kids... Wife is traveling to see her mother who is failing health and I need to go get our youngest to bed - quickly followed by my bed time :)

Ever played with one of those embedded processors that natively run Python? I am becoming a bigger fan of Python by the day.

Greg
 

Jim SoG

Forums Manager
Staff member
Moderator
Member
Investor

Educator I

10,890
Reno, NV, USA
First Name
Jim
Last Name
Bro
Member #

12989

Service Branch
USAF DAV
Love this idea but I am more they, buy a box, open it, install it (or pay someone to install it), and enjoy the results......

Are we at that point yet? What are all you brainiacs waiting for, help us old guys out!

LOL

Jim
 

Ubiety

Rank VI
Member

Explorer I

5,221
Sammamish, WA, USA
First Name
Greg
Last Name
Ubiety
Member #

6193

Ham/GMRS Callsign
Ribs
Love this idea but I am more they, buy a box, open it, install it (or pay someone to install it), and enjoy the results......

Are we at that point yet? What are all you brainiacs waiting for, help us old guys out!

LOL

Jim
There are prepackaged handheld "Iridium communicators"; DeLorme has one whose name I cannot remember and Rock7 offers at least this one: http://www.rock7mobile.com/products-rockstar.

help us old guys out!
Last time I checked I am part of that club too - or getting there ;)

The point of putting something together myself, at least for me, is that I enjoy these kinds of projects - they keep my old mind choochin. Also by doing it myself I can make it do whatever I want - of course we are limited to what is even possible. For instance my system ties into APRS, which I rely upon, it also allows for unique accounts so we can share the messenger system but don't have to see each other's texts. I'm not sure if the retail Iridium handhelds interact with SMS on the city side - not sure how they deliver their messages (email probably).

If you are interested in a project like this I am more than willing to help!
Greg
 
  • Like
Reactions: Drifterman

jim lee

Rank V
Launch Member

Influencer I

2,846
Anacortes, WA
Member #

12180

Ever played with one of those embedded processors that natively run Python? I am becoming a bigger fan of Python by the day.
Ha! No.. I'm an old c++ guy. Wrote a ton of c++ code when I was young and so was c++; laughing and the old fashioned straight c coders. Now I'm old and don't want no "New Fangled" language to confuse me.

Although I do think that their "Edit your code right in the chip" thing is pretty neat.

I looked up your Iridium chip and there is one available that is small enough to put in a hand-held. It'd be fun to take that chip, the mp3 player guts and make a satellite text & tunes handheld. Now that's something I bet people would like. I know I would! The code I wrote would work just as well for that as the regular cellphone. Probably better.

I have a EE buddy that could lay out the PC board for me..

-jim lee
 
  • Like
Reactions: Drifterman

Ubiety

Rank VI
Member

Explorer I

5,221
Sammamish, WA, USA
First Name
Greg
Last Name
Ubiety
Member #

6193

Ham/GMRS Callsign
Ribs
Ha! No.. I'm an old c++ guy. Wrote a ton of c++ code when I was young and so was c++; laughing and the old fashioned straight c coders. Now I'm old and don't want no "New Fangled" language to confuse me.

Although I do think that their "Edit your code right in the chip" thing is pretty neat.

I looked up your Iridium chip and there is one available that is small enough to put in a hand-held. It'd be fun to take that chip, the mp3 player guts and make a satellite text & tunes handheld. Now that's something I bet people would like. I know I would! The code I wrote would work just as well for that as the regular cellphone. Probably better.

I have a EE buddy that could lay out the PC board for me..

-jim lee
C++ has changed a lot in the last 10 years. I have not done much with it in ~15 years and am now having to write some at work; a lot has changed. Iridium in your handheld would be cool - don't forget the antenna. Interfacing with the modem is with simple serial AT commands and you really only need to use a handful of them. Let me know if you decide to launch into something like this and I can share what I did.
 
  • Like
Reactions: Drifterman

ChadRT78

Rank 0

Traveler I

60
Spokane Valley, WA, USA
Ham/GMRS Callsign
K0KAD
If you are inclined to try this yourself let me know. If we ever find ourselves on the trail together feel free to drop by and see the system and send an SMS to a loved one.
I am VERY interested and would love to see what you have cooked up! I recently bought a RockBlock from Rock7 and I have used Twilio for a few years now to build interactive text messaging with my servers and run commands remotely. Specifically to control Allstar and IRLP nodes via text messages. I have been scouring the internet looking for a prebuilt solution exactly of this nature so I didnt have to reinvent the wheel. I was just about resolved to the fact that I was going to get to the inventing. @Greg Eigsti

@jim lee Check out a company called Sixfab they build diy type devices for IOT I have been tinkering with an LTE modem in the form of a base shield and a Quectel LTE modem combined with SIM cards from Twilio on their programmable wireless platform. Very cool and super easy to work with!!
 

Ubiety

Rank VI
Member

Explorer I

5,221
Sammamish, WA, USA
First Name
Greg
Last Name
Ubiety
Member #

6193

Ham/GMRS Callsign
Ribs
I am VERY interested and would love to see what you have cooked up! I recently bought a RockBlock from Rock7 and I have used Twilio for a few years now to build interactive text messaging with my servers and run commands remotely. Specifically to control Allstar and IRLP nodes via text messages. I have been scouring the internet looking for a prebuilt solution exactly of this nature so I didnt have to reinvent the wheel. I was just about resolved to the fact that I was going to get to the inventing. @Greg Eigsti

@jim lee Check out a company called Sixfab they build diy type devices for IOT I have been tinkering with an LTE modem in the form of a base shield and a Quectel LTE modem combined with SIM cards from Twilio on their programmable wireless platform. Very cool and super easy to work with!!
Good stuff! I think you somewhat lucked out by going with RockBlock - their method of getting messages from the Internet to Iridium to you is much easier (API call) than dealing directly with Iridium servers - but I have already written/found that code (python) ;) I was looking at the RockBlock products but ended up getting my modem for free. It has been a while since I worked on this and really need to get it all moved into the Jeep (its on my TODO whiteboard so that must count for something) ;) The one drawback for me is in the sharing of a single Twilio number for multiple people at camp - no problem sending but how do you attribute incoming texts from a single Twilio number to multiple people at camp? Don't want to have to read through all incoming texts to attribute or expect wives/children to attribute messages when sending - aint gonna happen consistently... So far I am requiring sign-in on the Jeep side so that I can keep a table of users to outgoing phone numbers - anything incoming that matches a number is routed towards that user. Users can also claim/unclaim texts and numbers in the web UI (Flask). Sorry if this is scattered but I just woke up and only have one cup of coffee in me ;)

My setup is python/flask based based and the general idea is to present a WiFi access point from the Ras Pi in the Jeep so that users can connect and access the Flask web UI. From there they can log in and send/receive texts, manage numbers assigned to them, etc. I can take some screenshots of the UI and upload them - wife is asleep in our room where it is all sitting on a table. Aint gonna wake her this early ;)

One big area for improvement would be to add a new thread that does the send/receive stuff in the background - right now a user must poke the send button to start up the sending (and then a subsequent receive) code. There is also a receive only button which does the same without a send. When a receive is started the code will iteratively receive all waiting messages as long as there is a bird in view. Once a user starts send/receive they are redirected to a "log" page where the current status can be monitored and the system is locked out from further use until send/receive finishes. It would be much better to cache sent texts and have a background thread deal with it all - but that would just be more work and it is good enough for now.

Currently it runs on my Windows laptop and the modem is powered by a bench power supply. Already have a Ras Pi in the Jeep which I will need to pull out and futz with. Will need to run some new power lines to better feed the modem and the Kenwood TMD700 that it sits next to. I need to make sure that the Ras Pi AP is running as well as giving the USB/serial port for the modem a friendly name - have multiple USB/serials connected and don't want port assignments changing and breaking assumptions - friendly names much better but I forget how to do that - hahahahahaha. BTW the Ras Pi has a GPS puck attached and feeds NMEA to the TMD700. Was playing around with APRS in the Jeep and (mostly) getting my home igate up and running yesterday...

Please ask questions and let me know what I can do to help. I have no problem sharing the code, etc. Take a look at a python library on the internet called isbd.py (and isbdd.py) for some of the lower level message parsing goop. I found that early on and am using it for some of the work to interact with Iridium SBD packet parsing. isbd.py only has half of the needed code (it is receive or send only - don't recall now) but I have expanded it to do both send and receive.

Oh yeah, then there is the server side code as well which runs on a Vultr server instance. This side is responsible for interacting with Twilio and the Iridium servers on the Internet side. Currently it polls which is not the best; but again it works...
 
Last edited:
  • Like
Reactions: Drifterman

Ubiety

Rank VI
Member

Explorer I

5,221
Sammamish, WA, USA
First Name
Greg
Last Name
Ubiety
Member #

6193

Ham/GMRS Callsign
Ribs
I am VERY interested and would love to see what you have cooked up! I recently bought a RockBlock from Rock7 and I have used Twilio for a few years now to build interactive text messaging with my servers and run commands remotely. Specifically to control Allstar and IRLP nodes via text messages. I have been scouring the internet looking for a prebuilt solution exactly of this nature so I didnt have to reinvent the wheel. I was just about resolved to the fact that I was going to get to the inventing. @Greg Eigsti

@jim lee Check out a company called Sixfab they build diy type devices for IOT I have been tinkering with an LTE modem in the form of a base shield and a Quectel LTE modem combined with SIM cards from Twilio on their programmable wireless platform. Very cool and super easy to work with!!
Spokane, eh? I am over on the West side in Sammamish - suburbia to the East of Seattle; Redmond area.
 
  • Like
Reactions: Drifterman