Developing for old phones

From Legacy Portable Computing Wiki

Welcome to the page discussing programming for these older phones. This intends to be a resource to guide others in developing their own software to run on certain phone platforms.

To any Toolchain dev reading this

Any and all help is welcome! If you know how to setup XYZ build environment for ABC, edit this page! Your knowledge will help the lives of many people! Properly deploying/setting up a build environment (especially ones that involve compilers like C and C++) is not a trivial task! Many important files/documentation to go along with more obscure platforms is difficult to find, making said process even more time consuming.

Concurrently, if you need help setting an environment up, please access this website's accompanying Discord server. There are many extremely smart people in there that may be able to help you.

The ROMphonix Discord Server


Some more useful information can be found on usernameak's BREW Development Guide.


Java ME is probably the most well known software platform for old devices. It isn't particularly easy or fast, but it is one of the easiest to set up. Not only that, but many phones support it.

MediaTek MRE

MediaTek MRE is a native runtime environment somewhat similar to Qualcomm BREW. MRE is supported by some MediaTek powered feature phones, and apps for it are developed in C/C++. You can read more about MRE here.

Python for S60

Python for S60, often called PyS60, is extremely easy to set up and learn, especially compared to other languages that Symbian supports. As it's rather slow, it isn't suitable for high performance apps like advanced games. Common use cases for this language are various utilities, as well as basic games like Snake.

There is a port of Python for S60 2nd and 3rd Edition phones, which includes various APIs specific to that platform, such as functions for graphics, user interfaces, communication, and multimedia.

Symbian 9.x

We don't currently have a Symbian development tutorial on this site, but this GitHub Gist may be useful.