I’m traveling to an area of the world where the only communication medium I will have available to me is unlimited 140 character text messages. I’m wondering if it is possible to set up a computer that will allow me to fully interact with it via SMS. I’d like to be able to do things like check the news, read and reply to my emails, check on the status of my home and other servers. What is the state of the art in SMS based human computer interaction?
IP packets contain 20 bytes of headers, the rest is data. Theoretically you could create the world's worst VPN by stuffing the 140 bytes of an SMS absolutely full of binary data, with some compression of course.<p>So I went looking for "IP over SMS" and actually found this: <a href="https://github.com/spandanb/ipos" rel="nofollow">https://github.com/spandanb/ipos</a> but it's for web browsers only. This old HN thread talks about the same concept: <a href="https://news.ycombinator.com/item?id=8304409" rel="nofollow">https://news.ycombinator.com/item?id=8304409</a><p>You could possibly port something like <a href="https://github.com/PiMaker/Teletun" rel="nofollow">https://github.com/PiMaker/Teletun</a> to SMS instead of using Telegram. The Python TUN API seems quite elegant to work with, if you can get two SMS capable devices running Linux you can probably set up the world's worst wireless AP.<p>Some students had the same idea and built a proof of concept: <a href="https://www.thomasclausen.net/en/nice-student-project-at-ecole-polytechnique-ip-over-sms-because/" rel="nofollow">https://www.thomasclausen.net/en/nice-student-project-at-eco...</a>
Not that this is a solution for you now, but about 10-15 years ago there were a whole slew of SMS services which were super useful for those without data.<p>Google 311 (EDIT: actually it was Google 411) let you conduct full searches, local listings, full text turn-by-turn navigation, weather, movie listings etc. You could also call a number and do an voice search that would text you back the results.<p>Twitter, AIM, Facebook all had SMS based interfaces as well. I remember a privately run system which served up transit schedules.<p>Was amazing to younger me to be on a bus and able to continue my AIM chats and check the bus schedule without a data plan. You could get useful services sent to your phone and not get sucked in endless feed scrolling.
In 2014, I had a similar problem so I created Cosmos Browser, an Android based internet browser which allowed people to connect to the internet via SMS. It's pretty much dead now, but wouldn't take a lot of work to revive it if you really wanted to.<p><a href="https://github.com/ColdSauce/CosmosBrowserAndroid" rel="nofollow">https://github.com/ColdSauce/CosmosBrowserAndroid</a>
I have a second SIM card that T-Mobile gave me for free (no idea why). I have it installed in an Android phone running Tasker with a bunch of jobs I created to do various things. Android phone stays at home while my primary (flip phone) comes with me. I get specific Matrix (<a href="https://matrix.org" rel="nofollow">https://matrix.org</a>) messages forwarded to my flip phone, I can query the weather, I have a couple RSS feeds forwarding, and I can enable/disable any of these tasker profiles by sending custom commands from the flip phone back to the android. Obviously this requires having a second SIM card, but you could probably find a super cheap talk/text (or text-only?) prepaid plan temporarily and set up something similar. Tasker is extremely powerful and could conceivably do most if not all of what you're asking.
The main issue with SMS is that it's unencrypted and often intentionally being piped to third party firms for advertising and whatnot, so whatever you do it probably isn't advisable to send anything you wouldn't want people seeing (eg. I wouldn't suggest doing email via it). If you have even the smallest data cap, <a href="https://lite.cnn.com" rel="nofollow">https://lite.cnn.com</a> can be used for your news and <a href="https://mail.google.com/mail/u/0/h/" rel="nofollow">https://mail.google.com/mail/u/0/h/</a> (/h/ at the end) will load the mostly pure HTML version of Gmail, or even just imap (without automated push/pull) is pretty lightweight on data usage.
What you want if your comms layer supports it is this:<p><a href="https://en.wikipedia.org/wiki/Unstructured_Supplementary_Service_Data" rel="nofollow">https://en.wikipedia.org/wiki/Unstructured_Supplementary_Ser...</a><p>It works on dumb phones and is extremely lightweight. Think of it as connection based SMS. Very popular in places with low connectivity.
This presentation by an engineer from Wave (African fintech) shows how they used SMS and other tricks for zones without internet:<p><a href="https://www.youtube.com/watch?v=EAxnA9L5rS8" rel="nofollow">https://www.youtube.com/watch?v=EAxnA9L5rS8</a>
Far from state of the art, but…<p>I used to have a cheap Huawei dongle connected to my desktop that I'd interact with via <i>awful</i> scripting against gnokii¹. If you're the type of person that likes hacking up your own solutions it can be quite fun to work with.<p>After a lot of trial and error^wimprovement I found it useful to use gnokii's SMS mailbox export, and run a job to iterate over the exported mailbox periodically. The simple reason being most scripting languages ship with mbox support out of the box, and there are heaps of tools for handling them from a shell script.<p>¹ <a href="http://gnokii.org" rel="nofollow">http://gnokii.org</a>
Most providers let you email phone numbers to send an SMS. I don't know if your LEO phone would. However, when I attempted it every "from" was a different random provider phone number (fewer digits than normal)<p>Keep in mind SMSs are pretty rate/bandwidth limited in your use case. SMSs originally (and probably still in your case) were based on having 140 bytes of freeish data in the keep-alive style pings between tower and phone. So you only get/send one SMs per (on regular devices I believe this is no longer the case).<p>Can you program the device you will be using, or does it need to be human readable?<p>One solution might be to run a cloud SMS service. You can set up an SMS endpoint on AWS with bidirectional communication. It would let you write as complex code as you would like to generate/parse the SMSs, and probably falls into almost free at a personal scale.<p>As a warning as someone who built a little SMS autosender (as I said earlier based on email), be careful you don't accidentally DoS yourself. Consider some way to turn it off. Constantly getting texts on a device without the ability to assign a specific ringtone because the event you was sure was rare happened more frequently was no fun until I changed the code.
I was part of a project at Oxford where we installed sms transmitters on waterpump handles in Kenya, which sent sms signals giving us data about the pumphandle's movement (and therefore water consumption, and state of the pump).<p>It was amazing how much we could do with SMS. It really is a great medium.<p>If I remember correctly, we used FrontlineSMS <a href="https://www.frontlinesms.com/" rel="nofollow">https://www.frontlinesms.com/</a>
It worked very well. I can't remember the exact details now, but I think the messages were sent to a modem, connected to a PC which ran frontlinesms, which automatically triggered actions depending on the nature of the incoming sms.<p>Later on I think we switched to a completely managed solution, which stored the data for us and allowed us to download from the 'cloud'. The "modem connected to a computer" thing sounds more like what you're after, but conceivably with the right scripts you could also make use of a cloud solution.
SMS is stateless, so you’d have to add sessions on top of it. The simplest probably would be to have a single endless session tied to your IMEI or phone number.<p>For UI, I would look half a century back. <i>ed</i> (maybe with slightly more verbose prompts. Sending a single character is as ‘fast’ and ’cheap’ as sending 100) may well be the editor of choice, for example.<p>Alternatively, look at speech interface systems, and adjust them for text input. Those typically are more constrained, though.
For what it's worth, I built a service that allows you to use Google Maps and a dictionary over SMS: <a href="https://gistsms.com" rel="nofollow">https://gistsms.com</a><p>I've stopped working on the project but would be curious to hear if there's still interest!
Not exactly what the OP asks, but still surprised that no one mentioned M-Pesa yet:<p>> M-Pesa (M for mobile, pesa is Swahili for money) is a mobile phone-based money transfer service, payments and micro-financing service, launched in 2007 by Vodafone and Safaricom, the largest mobile network operator in Kenya.<p>> The service allows users to deposit money into an account stored on their cell phones, to send balances using PIN-secured SMS text messages to other users, including sellers of goods and services, and to redeem deposits for regular money. Users are charged a small fee for sending and withdrawing money using the service.<p>> M-Pesa is a branchless banking service; M-Pesa customers can deposit and withdraw money from a network of agents that includes airtime resellers and retail outlets acting as banking agents.<p>> M-Pesa spread quickly, and by 2010 had become the most successful mobile-phone-based financial service in the developing world. By 2012, a stock of about 17 million M-Pesa accounts had been registered in Kenya. By June 2016, a total of 7 million M-Pesa accounts had been opened in Tanzania by Vodacom. The service has been lauded for giving millions of people access to the formal financial system and for reducing crime in otherwise largely cash-based societies.<p><a href="https://en.wikipedia.org/wiki/M-Pesa" rel="nofollow">https://en.wikipedia.org/wiki/M-Pesa</a>
This doesn't directly answer your question, but there's a nice SMS interface framework available for Django called RapidSMS[0]. It's been a few years since I've played with it, and never got around to testing "in the wild" / with a real phone, but, it makes the Request/Response <-> SMS gateway mapping pretty easy to navigate<p>[0] <a href="https://github.com/rapidsms/rapidsms" rel="nofollow">https://github.com/rapidsms/rapidsms</a>
There's a free software android app called Silence that lets you send encrypted SMS.
The functionality was originally in Signal, but at some point that project decided to remove it. So "Silence" is the fork of Signal that was made specifically to retain that feature. as a result, it uses the Signal encryption protocol. (but it can't federate with Signal)<p><a href="https://silence.im" rel="nofollow">https://silence.im</a>
FYI, Iridium Go plans include an unlimited data plan.<p>Very slow, but people have actually used ssh over it.<p>With this you’d actually be able to achieve your use case goals.
IMVHO: you can base64-encode anything so any "REPL-alike system" (classic CLI included) can run over SMS <i>BUT</i> it would be probably less expensive buying a satellite connection for boats (C or Ka band) and relevant hw...<p>Just to check news a classic radio, or again in many area of the world a satellite dish for C or Ku bands works far better, emails might be more problematic for html messages, having at home a small server that pipe a classic mail (1) UI over SMS is easy but html2text converted mails are generally not good. Status check I do not know how much can be useful: you can know that's something goes wrong but you can't do almost anything so...
I wrote a trilingual one (Chinese, Korean, English) circa 2005 which allowed fuzzy search and directory services.<p>The main issues are expense, per-message character limit (which is based on your character encoding; note Unicode UCS-2 is super-wasteful vs. other alternatives), latency, and questionable inter-network reliability.<p>If you're in Alaska, honestly, if you're not really hard up for money just get a satellite deal like the sailors use, they're getting way cheaper.<p>Don't even begin to dream about forcing IP down SMS. You could do a batched shell service if really desperate, but it would verge on unusable and you'd likely get rate limited at some point.
For consuming information I feel like it's pretty realistic to roll one (I don't know if one actually exists) but for any data modification (like replying to emails) isn't any sort of Authentication going to be 100% infeasible due to the weaknesses of SMS?<p>You might be able to get by it with some sort of SMS signing system but you really don't have a lot of room to work with and it'd likely make it unreasonable to handcraft any of these messages.
I update my own site/blog/journal with a sms-only service I set up: <a href="https://textpost.me" rel="nofollow">https://textpost.me</a>
When SMS was first introduced it type UK, it was free at least for some carriers (Orange). Data was a traditional mobile phone call and therefore very expensive (we are talking even pre-GPRS, it was WAP or nothing so far as I recall). There were some IP-over SMS projects.
If you are lucky they support wap, <a href="https://www.geeksforgeeks.org/wireless-application-protocol/" rel="nofollow">https://www.geeksforgeeks.org/wireless-application-protocol/</a>
Depending on how important this is to you there is always the option of getting yourself a VOIP number and a softphone on one of your computers and hooking a small script into it to do whatever things you want to acchieve.<p>Never done anything like this but I imagine that it might not be too hard since the infrastructure is pretty much there already. However building a "protocol" on top of SMS might be somewhat tricky. You might want to write an APP or something for that.<p>As for "fire and forget" solutions ... Well, there are email to SMS gateways if i remember correctly.
Back in the days of the growing spread of mobile comms, there was a convenience of email-SMS gateways. One could send an email, which would then be delivered as SMS messages onto the mobile.<p>If that's the case for you, then at least the delivery to your mobile may be simplified. Your remote systems may just schedule the sending/forwarding of the whatever textual data via email corresp. to your mobile address.<p>As for the reverse direction, there needs to be some gateway on your remote end to proces the incoming SMS and forward these correspondingly.
This reminds of Google's SMS-based search that was shut down a few years ago<p>- <a href="https://slate.com/technology/2013/05/google-sms-search-shutdown-angers-people-who-had-forgotten-it-existed.html" rel="nofollow">https://slate.com/technology/2013/05/google-sms-search-shutd...</a><p>It was extremely handy in the pre- smart-phone days.
There’s always these guys, who made quite a splash on this here message board:<p><a href="https://news.ycombinator.com/item?id=9087819" rel="nofollow">https://news.ycombinator.com/item?id=9087819</a><p><a href="https://news.ycombinator.com/item?id=9107658" rel="nofollow">https://news.ycombinator.com/item?id=9107658</a>
My mate created kind of SMS dialup a few months ago, but (in my opinion) it's poorly implemented (if anyone would like to implement it in a better way I don't think he'd mind)<p><a href="https://github.com/acejr1337/smsdialup" rel="nofollow">https://github.com/acejr1337/smsdialup</a>
A while back a buddy of mine wrote a Python framework that does pretty much exactly this! It has several demo modules already, such as fetching a weather report and requesting an Uber.<p><a href="https://github.com/hunterirving/phoneHome" rel="nofollow">https://github.com/hunterirving/phoneHome</a>
You're basically talking about building a modem over SMS. I wouldn't use Twilio. The costs will be insane. Now what you could do, is get yourself a rooted phone stateside with custom software to receive requests for webpages via SMS. Then it sends back all of the data via SMS.
you might have an easier time splitting up send and receive into separate managed things instead of looking for one system to do it all over SMS<p>_<i>SEND</i>_<p>You can send an email over SMS I believe by texting the email address.<p>So you should be able to set up a server to process emails you send to a specific address and trigger commands in response to it. the triggers would need to be set up in advance, but other than that you should be able to do anything normal<p>_<i>RECEIVE</i>_<p>For receiving SMS - I am not sure tbh. You could use Twilio, but it might be overkill. I would jsut make sure whatever solution you use doesn't get automatically blocked by the ISP. I am not sure the proper way to flag something as wanted / intended
You could definitely create it with Twilio, you might be able to do most of it without even writing any code by using Twilio Studio.<p><a href="https://www.twilio.com/studio" rel="nofollow">https://www.twilio.com/studio</a>
Reminds me of this talk but I have never used anything like that myself: <a href="https://www.youtube.com/watch?v=ZsBAkSxwU5c" rel="nofollow">https://www.youtube.com/watch?v=ZsBAkSxwU5c</a>
I think Arist a YC company is an SMS education platform.<p><a href="https://www.linkedin.com/company/aristlearning/" rel="nofollow">https://www.linkedin.com/company/aristlearning/</a>
I made something similar
Running terminal commands over sms<p><a href="https://github.com/mtdevss/server-text" rel="nofollow">https://github.com/mtdevss/server-text</a>
Some of these projects kinda remind me of the http tunnel over icmp/ping to bypass in-flight wifi restrictions. That was an interesting hacker news post a while back.
Your best bet is to set up something like FreeSWITCH that you can text with keywords or your own custom arguments, and have custom scripts craft a response.
there is no such thing as unlimited, you will still have a bandwidth cap or "responsible use policy" which your IP-to-SMS protocol will easily overflow. I believe translating even a basic set of http request responses into and from IP/SMS will cause lots of SMS jam. but interesting proposition nevertheless :)
not aware of anything universal. There are SMS-based services for lots of things, but less in the context of "UI for my own things".<p>in lots of ways, it's console UI with additional length limits I guess? Or chatbot-UI.