I’m still on paternity leave at the moment, so time near a computer is limited to 20 or 30 minute periods in the rare occasions while Faith is asleep!
But in the last few days, I’ve still been playing with a few new geeky things. One of these is FindMe – a Windows Mobile application from Electric Pocket.
The basic idea is:
- it gets the CellID of the GSM transmitter that your mobile phone is currently talking to
- if it hasn’t seen this CellID before, it displays “You are in a new place” and prompts you to type in a name for where you are
- if it has seen this CellID before, it uses the name you last entered for it
Then it uploads your name for the CellID (your description for where you are) to your Facebook profile.
Hey presto – location tracking without the need for GPS.
It works quite well.
I’ve played with location based stuff on my phone before but never tried to use GSM cell id before. I did consider it, but after failing to find a free database that could transform the cell id string into a location I could plot on a map, I didn’t really pursue it any further.
Playing with FindMe encouraged me to give it a try.
I don’t know how the FindMe app is implemented, but after a little bit of playing tonight, it seems fairly easy to grab something similar to the “Cell” string they are using from the RIL_GetCellTowerInfo function in the Radio Interface Layer (RIL) API.
- Call
RIL_Initializeto get a RIL handle - Call
RIL_GetCellTowerInfoto get the information about the cell tower the phone is connected toThe “Cell” string that FindMe displays seems to be a combination of the
dwCellID,dwLocationAreaCodeanddwMobileCountryCodefields - Call
RIL_Deinitializeto release the RIL handle
It seems to work okay.
Well… 150 or so lines of C# hacked together while Faith naps, generates the same strings that FindMe displays for the two cells my phone can bounce between in my house. Not exactly conclusive testing
I’ve put my code here in case it is useful to anyone. Usual disclaimers and provisos apply (i.e. it may be gibberish).
I’m not sure what I’m going to do with it. The biggest problem is still the lack of a database to be able to translate the cell tower info you get into an actual geographical location. But if – as with FindMe – you’re willing to invest the time to “train” an app and build up your own cell id database of locations, then there is some potential for interesting apps.
I might try writing a location based reminder app – could be interesting to extend the Outlook Tasks db to have something that reminds you of a task when you’re in a specific location. For example, it’d be good if your phone prompted you with things you want to remember to buy when you’re at the shops. The Tesco garage on my drive home from work is far enough away from anything else I go to that it’d probably have a cell ID that I wouldn’t otherwise be in. Likewise, once I work out the cell ids for Hursley, I could have something that can remind me of something when I get to work.
Or, I could use this as an excuse to play with Fire Eagle. I’ve had the invite for that for a while and still haven’t got around to giving it a try. It could be cool to write something that lets you update your Fire Eagle location using Cell ID info.
Tags: .net, .netcf, c#, cellid, code, dotnet, facebook, findme, fire eagle, fireeagle, gps, lbs, location, ril, visual studio, windows mobile


For a free cell-ID database you can also check http://cellid.novay.nl/wasp/jsp/CellStats.jsp
Not as detailed as the Ericsson site, but good for most European countries.
awesome.. very simple n neat….. but i tested on multiple mobile.. it works on some mobile smoothly.. in some mobile it gives mnc mcc zero.. i guess that wil mobiles security problem.. there is another solution for that used RIL_GetCurrentOperator…if that also not working used the imzi number of mobile which gives mcc n mnc number… for more information used the wikipedia link…or google by imzi…
anyways thnks for the code…
Hello! Thanks for this app, I used it in one of my apps.
I have also wrote blog post about that, so you can check it – it’s about connecting cellid with GPS coordinates and drawing that on a map.
http://shelastyle.net/blog/locating-windows-mobile-phone-without-gps/