FaMaKe's SMS Sender sends text messages from a computer, using a mobile phone, connected to the computer. Because the messages are sent using a mobile phone (smartphone), they will appear to come from the device's phone number.

FaMaKe's SMS Sender is built on the principle of doing just one thing, and doing it well. It will only send SMS messages (not even receive them).

Use case

FaMaKe's SMS Sender is great for people who need to send SMS messages, but don't like typing on their mobile device. It is also practical if you need to copy/paste something from a computer.

Screenshot

This screenshot shows all of FaMaKe's SMS Sender's functionality. Screenshot

Technology

There is no obvious, definitive, way of sending SMS messages from a PC via a Windows Mobile device. FaMaKe's SMS Sender uses a small "helper" program that installs on the mobile device. This program makes use of an API that allows it to send SMS messages. The helper program talks to the main Windows application via a custom TCP/IP-based protocol.

FaMaKe's SMS Sender is inspired by Microsoft SMS Sender . The latter does not work on Windows Mobile devices.

System requirements

Desktop computer Mobile device

Download

FaMaKe's SMS Sender is provided free of charge for download.
Download FaMaKe's SMS Sender.

Source code

The source code is available for anyone that is interested. It is, however, not well commented, and I do not expect anyone to have any use of it. Both the mobile and the desktop part is written in C# for .NET Framework 3.5. It will probably be difficult to open in anything but Visual Studio.
Source code

Known issues

The messages that are sent using Famake's SMS Sender are not saved anywhere on the computer or the mobile device of the sender. Maybe I will add saving to Sent Messages in a later version, but it is not likely. Note that the textbox where messages are enetered is cleared when a message is successfully sent, and it can not be restored with Ctrl-Z.

The program may randomly choose a network setup that causes connections to fail. The computer will show "Waiting for connection", and the mobile device will show "Loading..." until a timeout occurs (after about a minute). See also other causes for this error in Troubleshooting. This happens when the desktop program selects a specific IP address as its local endpoint, this address being related to the proxying of connections from the mobile device (specifically 169.254.2.2). This would be trivial to fix, by just excluding this address from the list of possible local addresses, alas I don't have Visual Studio at the moment, so I can't recompile (the program was developed on the trial version(!). If someone wants to donate a license to Visual Studio (see Contact), I would be happy to fix this.

Troubleshooting

Number format I discovered a problem when I moved to the UK: the application is not at all forgiving about prefixes / number format. You should verify that the numbers are stored in the correct format. For example: Normally, a UK phone number has an area-dependent prefix (for mobile phones, this is of course not tied to georgraphy). This is on the format 0def, where d, e and f can be any digits. When using INTERNATIONAL prefix +44, the zero has to be omitted, or the message will not go through: that is, the prefix is just def. Text messaging then works well (and I don't have to debug the code. yay!)

An internet or local network connection is required to use this program. This appears to be partially a limitation in the ActiveSync software, and partially in my code. There is no solution for people that are off line, AFAIK (maybe, if you set up VMWare or similar, that the virtual network adapter will make it work). The ActiveSync internet connection is not a standard, routed, IP network. The desktop computer acts as a proxy for all TCP connections. This is probably what causes it to fail if you are off line. When I was testing, I saw some really bizarre behaviour of the network connection: no matter what IP I was connecting to from the mobile device, it would always connect to the local computer (desktop) instead. This did not cause any trouble for me, but I have to wonder how other programs, like the browser, do it.

Desktop application shows "Waiting for connection", and mobile app shows "Loading", but nothing happens (or a time-out error is shown after some time).

This happens when the mobile and the desktop applications can not communicate. The programs use TCP (a network protocol) to communicate amongst themselves. The desktop computer acts as a server, to which the mobile device connects (this is protected by a cookie, so a hacker can not connect just in time, pretending to be the mobile device). There are many reasons why such a TCP connection could fail, even more than the ones listed above.

Contact

You can contact me regarding this program at pmb@fa2k.net.

* Windows Mobile is a trademark of Microsoft (obviously).