SMSTester for Android: Project and Source Now Open

Press Release | Android | May 18, 2011

One of the main goals of the SaferMobile project is to release software tools that allow activists and rights defenders to use their mobile phones as network monitors and sensors. The goal is to help them, and the mobile developers, human rights organizations and people on the street they work with, to monitor network performance and proactively detect blocking, filtering and censorship. SMSTester is the first tool we are publicly releasing within this category, and it is free, freely licensed and open-source. Our first trial run with Short Message Service Tester (SMSTester) was completed in April 2011. The results are written up here.

While this study focused on using the tool to understand how differences in receipt delays might be a potential sign of filtering or censorship, we see the use of the tool to be much broader, in the context of creating safer and more effective deployments of mobile advocacy systems. Too many projects simply set up SMS gateways, publish a number, and tell users at risk to start submitting reports about an event, crisis or other happening.

Not enough groundwork is done to understand the quality of service that exists, and the specific challenges users in a region, on a specific mobile network, or sending between networks might face. This is in partly due to the lack of quality, inexpensive, usable tools to perform this kind of testing. Up to this point, it has required a laptop and specific GSM hardware modems, which are not as common as they should be. SMSTester provides much of the same functionality in a free package that can be run on a $100 Android handset.

The SMSTester app enables one or more Android devices to automatically send a configured list of messages to one another, while automatically logging the send and receive times of those messages, along with data like Cell Provider ID, Location Area Code, SMSC and other mobile network information into easily parseable text files. Once the data is parsed and studied, it can reveal how long a typical message takes to get from point A to point B, the geographic location of network dead spots, and which words or phrases are currently being blocked, filtered or delayed.

The app was written targeting the Android 2.2 platform, but should generally work on any modern version of Android, and any SMS-capable device (aka not WiFi-only tablets or players). Message data from the 'send' side can be optionally included in the message payload itself, such that the 'receive' side can parse, analyze and display test results without needing data from the 'send' side. Each message is coded with a unique GUID as well, so that data sets from both sides can be later combined if necessary. The output of the data is stored on the device SDCard in comma separated value (CSV) format, which makes it easy to import and parse in any office spreadsheet application.

Future planned improvements include moving logged data storage to an internal SQLite database (perhaps using the SQLCipher Encrypted Database for Android, to provide increased security of logged data), automated parsing and computation of the results in realtime, and on-device visual graphic of the results. We also plan to localize the software into a number of languages, and continue our testing to ensure the app will perform consistently on GSM and CDMA networks around the world. We welcome any users, organizations and developers interested in the project to contact us, pull the source from the Github repo, build it, test it, submit your code patches, and otherwise share your feedback and ideas.

Learn more about SMSTester: Get the code and join the project: