AlgoMantra, b. 2005

1/f)))$VediCrystalpunk | CryptoTantrika > ./Swaha!!
Recent Posts

Design : The Nimble Nimbus

Powered by Blogger Free Guestmap from

Commercial Break
Tuesday, July 24, 2007
Cellphabet 1.0: How I can walk in English!
I have devised a way to convert the movement of a mobile phone in a 150X150m area into plain English text - the Cellphabet।

मैंने मोबाइल फोन के एक छोटे इलाके में चलने फिरने की क्रिया को अंग्रेजी शब्दों में तब्दील करने की प्रणाली बनाई है!

Abstract: Let us say, I am standing at Kala Ghoda art district's parking lot in south Bombay. You walk up to me and whisper a word in my ear. Without touching my phone at all, I walk around for 30-40 minutes within the Kala Ghoda area. You can walk with me if you like to keep an eye. Soon enough, the word you gave me appears as a text message on your phone.

Description: At any given moment, a mobile phone is connected to a cell tower nearby. Each cell tower has it's unique ID which can be hacked from the phone (technical details below). In urban areas like Bombay, cell towers have a reach of 100-200 meters. There are thousands of such towers in the city. So as you walk on a road, or travel in your car, your phone is switching towers as it goes out of range from one, and enters the area of another. Towers often switch even if you are standing in one place, because your phone is always looking for a stronger signal.

My phone is a Nokia smartphone, that is - it is more like a computer that can be programmed. I used this functionality to write a program which does the following.

The main algorithm fingerprints various cellphone tower signals, and uses them to correctly identify three-four street corners near to each other. Now if you see in the picture above, it has labeled the area around the Kala Ghoda parking lot as a (*), the area near Jehangir art gallery as a (-), the area near Khyber restaurant as (0), and the area leading to Lion's Gate as (+). Each time I (that is, my phone) enters one of these areas, it adds a (+)(-)(*) or (0) to my 'path'. So as I tumble through this triangular shape I'm generating a trail of characters which looks like this:


It only looks like gibberish, because my phone will clean up the stars(*), pick up each remaining 3-bit block in this string and map it to it's 'meaning', which is a character of the English alphabet. For instance each block of '0++' would be converted to the letter 'h', '---' to 'e' and so on. The whole trail will be now understood as:

'0*+*+*-*-*-*0*-*-*0*-*-*-*-*0' = 'hello'

Technical: I'm using a Nokia N70 Music Edition, which is from the S60 series. I have developed the application using the Python API for S60.
8 Comments: Post a Comment
Blogger slim said ..

where's the code?

12:47 PM 
Anonymous Anonymous said ..

The code is right HERE, dude.

1:18 AM 
Blogger Bas said ..

This comment has been removed by the author.

2:10 PM 
Anonymous Anonymous said ..

thanks, Bas. Somehow the access rights got muddled, I have reset the permissions.

You can download the code from the given link now without registration.

6:34 PM 
Blogger Bas said ..

Hi AlgoMantra,

thank you for the source. I think it's an amazing application!

I was wondering if you also have any experience with retrieving cell-id with J2ME JSR 179 Location API ?



1:19 PM 
Anonymous Anonymous said ..

I have not played with J2Me so far, but I know people who use it. I'm sure it should be quite straightforward in J2Me as well. You could also try the Java-based platform known as Processing (mobile version)...

4:11 PM 
Blogger Bas said ..


I've tried it a few times with J2ME to retrieve cell information, but without luck. It is written in the JSR 179 Location API, but in various forums a lot of people have trouble retrieving cell id. So if you succeed in doing this, please let me know. I rather use Java instead of C++.

By the way I also checked the Mobile Processing as you mentioned. There is a MLocation library, it's very small and only supports location based services through GPS.



9:59 AM 
Anonymous Anonymous said ..


Hm, sorry to hear that. We have no plans to use J2Me or C++ anytime soon, since Python for S60 is enough for our current work.

But if a solution crops up, I will post it here...


3:42 PM