Geosense: The first ‘really really cool’ Windows Sensor

1 Mar
2010
38 Comments

Every night, or so, Long Zheng logs onto his PC and bombards me with ideas. Most of his ideas fail to root on my end but one looked promising: A ‘software GPS-like thingie’, plugged into the Windows Sensors and Location Platform. After a crash course through the User Mode Driver Framework, and a few days of enduring Long’s “is it ready yet?”, Geosense for Windows was born.

Geosense for Windows logo

Geosense is a Windows Sensor that feeds the Windows Sensors and Location Platform relatively accurate positioning information, a lot like a GPS device. Instead of communicating with expensive satellites, we simply gather some metrics (i.e. your IP address, WiFi access points) to securely query huge databases with. In return, the databases provide location data for us to share.

Right now, Geosense plugs into Google Location Services for WiFi and IP triangulation. If the sensor becomes an overnight sensation, we’ll add support for others such as Skyhook Wireless and Navizon, to ensure you receive the most accurate data, regardless of where it came from. We’re also thinking about the implementation of mobile broadband (cell tower) detection – but that’s low on the list, due to lack of supportive hardware. (Anyone want to donate some hardware?)

So what can you do with Geosense? Sadly, the Windows Sensor ecosystem is thin, likely due to the learning curve associated with writing drivers. You’re limited to the Weather Gadget (in Windows) and… well that’s about it. As you read this, though, we’re cooking up new and innovative ways to use the sensor – stay tuned.

Call to action: Think of how location-awareness in Windows could help a friend or family member. Download Geosense and sling some code. If you’re not the coding type, share your idea – you never know, we (or others) may bring it to fruition.

38 Comments

Jason

Your level of detail made much more sense than Long’s. I kinda regret the note I left on his post =/ I thought this was just another cell triangulation toy, but if it looks at wifi networks as well and if you guys are planning on looking at services such as Skyhook, then it has some actual purpose.


Marcus

Pretty impressive. Will come in handy when I go on vacation in a few months! Hopefully more developers will begin to take advantage now there’s finally a Sensor for 7.


WizardCM

I tried it out. It’s a very awesome idea, and works QUITE well. It is a few meters off though (about 10-15 meters, it thinks I’m in the house next to me).


Ben Wedlake

Raf, you are like some crazy scheming god…

This is just an awesome idea, awesomely executed, hat-tip to you good sir :).


Bernake

This is fantastic, though I don’t particularly like the idea of you using Google (ugh!). Isn’t there an equivalent Microsoft technology you could have used?


Nic Bedford

Hi, I have installed the x64 version and clicked enable in Sensors control panel and when I run up the GoogleMapsDemo.exe all I get is “(0,0) Err: 0, Alt: 0, Country:” I am in the UK if that helps…


someone

Great jobs guys! Every few days you and RR come up with some brilliant idea. Can you write a script (PowerShell or VBScript that collects location data from this and passes on to tzutil.exe to automatically set the time zone depending on your location? Now you guys need to spend more time coming up with ideas for apps to use this.


Anders

I think Microsoft made a big mistake by not including support for serial port based GPS-devices. Instead they chose to require a new kind of driver, thereby making all existing GPS-devices useless in this regard. Fail by Microsoft. Luckily someone named Michael Chourdakis has made a driver for that, http://www.turboirc.com/gps7/. I have no affiliation with him, I just think it’s somewhat related to this post.

I tried Geosense in a virtual machine. When I start your demo application (Google maps demo) it just sits and waits for the sensor to become available (http://i.imgur.com/Cj1FL.png). It also throws an unhandled exception when the GPS-sensor (gpsdirect) is activated:
System.InvalidCastException: Specified cast is not valid.
at Microsoft.WindowsAPICodePack.Sensors.GeosenseSensor.GeosenseSensor_DataReportChanged(Sensor sender, EventArgs e)
at Microsoft.WindowsAPICodePack.Sensors.Sensor.InternalUpdateData()
at Microsoft.WindowsAPICodePack.Sensors.Sensor.UpdateData()
at GoogleMapsDemo.GeosenseSensorHelper.RefreshSensorValues()
at GoogleMapsDemo.GeosenseSensorHelper.Initialize()
[---]

The VM is behind NAT but it has a connected WiFi-card.

Regardless, great job and a good initiative, Microsoft seems to have dropped the ball here.


CKurt

Very cool sensor! I was just thinking about this last week.

Next week a new project starts and we have to interface a GPS unit with a PC trough a PIC18 (Serial or USB). I was thinking about making the GPS act as a sensor for Windows 7.

Could you send me some info about the driver development? Did you document your project somehow. Any help would be greatly appreciated!

Very nice work !


lordloki

nice job. useful sensor. works surprisingly well.


Justin

I like the idea. Been wondering a lot lately about a way to do geolocation without a GPS device dangling off my computer. As more applications (such as Twitter, for example) start using geolocation services, those services then become limited to mobile devices that can leverage GPS satellites. This answers that question quite nicely.

Great idea, looking forward to following it.


Justin

Google has a similar feature built into its browser with Gears. Not sure how much this Geosense affects it, but I found the computer with Geosense on it is more accurate than the computer without it.


Justin

Just tested it with MahTweets twitter client, works like a charm! its off by about 100 feet or so, but not too bad!


Nic Bedford

Have just tried this at home on my laptop (also x64) and it’s working perfectly (more accurate than I expected), I’m guessing it’s the corporate firewall that was stopping it working earlier, although http://geotool.servehttp.com/ does get within a couple hundred miles (even on the corporate machine), rather than reporting 0,0.

PS. I love project’s like this myslef, I’m impressed you’ve got the cert to sign the x64 driver, wish I could afford one…


Louis

Great idea! Unfortunately Geosense thinks I’m in Chicago though I’m near San Antonio. How about adding a link or dialog to the database(s) Geosense is polling so we can correct, update or add the proper information? I used this one: https://services.google.com/fb/forms/wifibugs/


Artiom

That’s a great idea! I wanted to do something like this since I heard of Windows 7 location sensors (I mean if Google Gears can find your location, even if remotely accurate, why not have a softwave version of a location sensor?!)

Thanks a lot for this, and please don’t drop it! :)


PortalCake

This is awesome.
One problem: it works on my Win7 VM(x86), but the installer is b0rked on my Server2008R2 host machine.
Any ideas, Raf?


Amitai Rosenberg

Awesome sensor! Very cool…


Daniel

I tried on two machines both on my home network one on wifi and the other ethernet. The ethernet told me I was in Sarasota which was off by about 100 miles and I couldn’t get the weather gadget to find a location with the wifi one. I had an icon in the taskbar saying that my PC was recently located but still nothing in the weather gadget.


Daniel

Update, I got it working on the laptop and it works pretty good. Weird that the desktop and laptop are on the same network and get entirely different results. It’s my personal home wifi network, Google wouldn’t have info on that would it!?!?!:scared:

I wonder if Windows 7 can automatically change timezones based on your location. like your cell phone does when you get off the airplane.


Brandon

I had to disable the sensor and reenable it after waking the computer up from hibernation. The weather gadget got confused.


Daniel

When I took the laptop to work today the weather gadget didn’t show the new location. I had to restart the gadget for it to recognize the location change. Kindof defeats the purpose.


Michael Chourdakis

The problem with geosense is that it relies on information based on IP, which may be unreliable or not existant at all.

If you have an actual GPS hardware, my driver makes things easier.


Rafael Rivera

@Daniel: This is a bug, we’re working on an updated driver.


Chris Dube

This is a really cool piece of software.

I was wondering if you had any ideas how a plugged in iPhone GPS could be used to send location data to windows?


pizzaboy192

IT WORKS! (It’s about 3 houses off, but it’s freaking close!)
I’ll have to test this at school too…
I’m impressed with how close to accurate it is… just using my Host family’s wifi…


Dan

Hmm installed the sensor but it didn’t show up in the control panel… :( Ah well not like it’s useful for me anyway since I have a desktop PC… :P


Ian

My location is off by a few hundred miles. Why not allow the user to specify their location?


Dan

Because Windows 7 already has that feature built-in.


PortalCake

Okay, tried on a different system.
Dell D620, with Win7 Pro. Installed Geosense fine, but the device manager says that “Device cannot be started, Code 10.”


Dan

Oh hey, found it, I guess I needed a reboot. Is the installer not starting the driver when it finishes? Well whatever…


Dan

@PortalCake Microsoft Support docs say that’s caused by driver bugs :(

http://support.microsoft.com/kb/943104/


MaRSHALL

What an amazingly cool program. Kudos!

I thought you might like a suggestion for a very useful utility that would probably be pretty easy to make, considering that you already made a demo that is more complicated than it. ;)

It would be awesome to have a program that you can put in your startup menu that silently emails the current location to a given email address and then exits.

That way, if a laptop is ever stolen it gives away it’s location whenever it’s started. Even if the thief found the program and deleted it, it wouldn’t be until after they’ve booted at least once.

Just a thought.

Thanks for a great sensor.
Marshall


Dan

1.1 appears in my Control Panel now, but Weather gadget complains it can’t get my location. :( Oh well. Like I said before, desktop PC, I don’t use gadgets anyways…hehe…


John Lee

Geosense works awsome, but GoogleMapsDemo_1.0 don’t works well, street view don’t works beacause say ” Flash Player not installed” My system:

Windows 7 Ultimate 64-Bit
Flash Player 32-Bit Installed
Geosense for windows 1.1

Greetings and congratulations for the Windows Sensor :)


Jay

Nice program!

Could the data from Geosense be accessed by a program like InSSIDer (http://www.metageek.net/products/inssider)? Would be cool to see the WLAN Networks that I find on InSSIDer on Google maps.


Alexey

Doesn’t work on my HP laptop. Tried 3 times to install-reboot-uninstall, it does not appear in my Control Panel. (Win7 Enterprise)


Uday Kiran

Guys… its a wonderful tool but it is killing my boot time as it wants to load proir to any other startup items.. I have seen issues with internet connectivity with the Geosense drivers installed.. My system does not connect to internet immediately. It is first searching for the WiFi and since its turned off, it makes the system boot slow. I dont know if you anyone has this problem but i have been facing this after i installed the Geosense… I am not sure if you can reproduce the error… let me know if u need any data.. and steps to collect it..