Dark Fighter free for a limited time
 

Dark Fighter

Now FREE on the App Store!

 
Gravit universal binary released for Mac OS X
 

Gravit released for OS X

A free Gravity Simulator

 
TowerDefend is now $0.99!
 

Tower Defend - ON SALE

Price reduced to 0.99 USD!

 

Wireless Heatmap

Wireless Heatmap 

Update: WiFi Heat is available on the Google Play Store! For more information, see http://wifiheat.com/.

I wrote an application to generate a wireless (802.11) heat map based on signal strength. The reason for it was to find the best place/area (for my laptop) to be with the highest signal strength. Below is a screenshot of the application (with the ESSID and BSSID removed for security reasons).

This heat map has about 100 samples in it, which are shown as white dots. There is a balcony at the top of the image and the common office area on the right, which was drawn by hand (hence the waviness). As you can see it has pinpointed the location of the access point in the red area.

Below is another heat map with the same points but on a different access point.

Even though I don’t have points of data on the neighbour’s office area, the algorithm has worked out the approximate area of the access point.

The application (which is tentatively named “wirelessheatmap”) is written in Python with the OpenGL library, pyglet. It relies on a wireless packet sniffer called airodump-ng from the Aircrack-ng suite of wireless tools. I also had to patch airodump-ng so that it writes the (later explained) CSV (comma-separated values) file more often.

After setting my Wi-Fi device to “monitor” mode, I run airodump-ng, listening on all channels. It writes a CSV file containing the signal strength of all access points from where my laptop is. With the patched version it updates this file every second. While airodump-ng is running, I also run the Python application with an image overlay containing the floor plan for reference.

To map out the points, I simply go to a location, wait a second or two for the signal strength to stabilize and for the CSV file to be updated. In the application, I click on my location on the floor plan map, then the application reads the CSV file along with all of the access point information, then saves the data for the location. I continue collecting points until I have a nice supply of sample points. This creates a mapping of 2D points to signal strength data for every access point.

I am currently developing this for iPhone and Android and is estimated to be complete in 2012.

45 Comments

  1. Andy says:

    Nice! Definitely package this one up, I’d bet there is a ton of geeky interest in this. There certainly is from me. And I’ve always wondered where that internet signal I’m “borrowing” is coming from ;)

  2. Randy says:

    This is the most useful new app I have seen in a while. Well done sir.

  3. Jordan Meeter says:

    Any chance of making a GUI for this so the non-technical can use it? =

  4. [...] cool. This guy wrote an app that essentially saves the signal strength at a given location and then collates the data points into a little map, giving an approximate location of the access point and the places where one finds the best average [...]

  5. shat says:

    Hi

    I thought this idea was pretty cool so i wanted to give it a try. i set everything up (compiled airodump-ng with the change etc) but when i run it i just get a window with my reference map on it. if i click on the map, nothing happens. I dont get any errors in the console, only the following output:

    heatinfo loaded (the store file)
    1 stores
    { ‘BSSID OF MY NETWORK’ WeiFei }

    do you have any idea what im missing here?

    thx in advance
    shat

  6. Super Jamie says:

    This is so awesome, keep up the good work!

  7. @idontgetthis,

    I just drew some lines in Gimp for the parts of floor plan layout that I didn’t have. I have replied to the reddit post and updated the article to explain what the waviness is.

    @Jordan Meeter,

    Yes, I am considering making a GUI for it to make it easy for people to use.

    @shat,

    The “1 stores” message means there is one sample point. Maybe the dot isn’t visible for some reason?

  8. Dan says:

    Just stopping by to say that this is really neat :) I’m just a casual user, but I’d definitely like a user-friendly version of this application. Nice job!

  9. Dan says:

    Just stopping by to say that this is really neat :) I’m just a casual user, but I would definitely like a user-friendly version of this application. Nice job!

  10. Vincent says:

    I’m no longer willing to pay for internet access, but I’m sure as Hell willing to pay good money for such an application! You can have my $29.95 for WinWirelessHeatmap right now!

  11. shat says:

    ok i got it to work (somehow my driver always reported the same PWR , this resulted in the program not calculating anything)

    however, i encounter massive memory problems when using the script. after 30 Min it has eaten up my whole ram (512 Mb) and 300 mb swap on my laptop.. any idea where that may come from?

  12. @shat,

    The program isn’t very efficient in storing data in memory–it wasn’t a priority when writing it. It depends on the number of access points available and the number of sample points you’ve made.

  13. Data Visualisation News » Wireless Heat Map says:

    [...] author has shared his work and development. It’s written with the opengl library pyglet and the source code is [...]

  14. [...] How clever! If you ever wanted to know what your 802.11 signal looks like, you can geek it up with a heatmap! Slowchop Studios – Wireless Heatmap [...]

  15. Ryan G says:

    Cool! I’ll spend a day playing with this on our hubs.

  16. web design company says:

    Major points to whomever takes this, adds in reading location from a GPS, and then creates Google Maps overlays from the data.

  17. [...] Here’s a cool mapping app you can use to help choose the best place to work in your office. Source code is available. Seems like with a microphone attached, it would be possible to make a noise-level heatmap, then do a weighted overlay. [...]

  18. Nice post. One small clarification: the term ‘heatmap’ doesn’t really mean what you think that it does. That is a map of gridded, interpolated wifi signal strength values. Although seriously misused, the term ‘heatmap’ should be used to refer to density maps- i.e. kernel-smoothed estimations of *count* data, like number of things/area. Here is a link to a similar idea, leveraging open source GIS software to overcome memory-related problems.

  19. @Dylan Beaudette,

    Thanks for the clarification. I had no idea that I was misusing the term “heatmap”. I’ll try to use the proper terminology in the future.

  20. Hiroe says:

    This is one of the most useful apps i’ve seen in quite a while. I’d like to see this expanded upon. two features I’d like to see are a gui and possibly something to interface with a gps. I think gps’ have a drift of a couple of feet so maybe that last ones impossible

  21. Nemo says:

    Really cool app!!
    I’d love to be able to use a user friendly version.

  22. marcello says:

    As Randy said this would be one of the most useful apps published lately.
    It just need to be packaged up in a more user friendly version!

    Great work anyway! :D

    Marcello

  23. D-WBTN says:

    @Dylan Beaudette,

    I have to say that I find your definition of “heat map” to be rather restrictive. I think the phrase is well suited to the project. It is clear and effective communication. Besides, “A heat map is a graphical representation of data where the values taken by a variable in a two-dimensional map are represented as colors.” is one accepted definition of the phrase.

  24. Sheila says:

    I had a friend do something similar, except without the spectacular heatmap image. He’s checked his code into google code under lewifi.

  25. John H says:

    At my school (Olin College), a couple of students mave mapped the entire compus based on wireless signal strengths from various access points. All the data is on a server which will interpolate a position to about room level accuracy based on the strengths. Currently a bunch of students run the client so I can see where they are at any time.

  26. MstrNetHead says:

    You can consider this comment the aforementioned “demand”. Please continue development.

  27. [...] Slowchop Studios – Wireless Heatmap [...]

  28. [...] public links >> heatmap Wireless Heatmap Saved by thinkmassive on Tue 14-10-2008 Do you rent or sell? HotPad heat map will show you the [...]

  29. [...] Slowchop Studios – Wireless Heatmap (tags: wireless visualization tools todo signal python tool wifi visualisation) [...]

  30. Mitch Strand says:

    This is a great idea. Kudos man! Hell, I would certainly be willing to purchase this program if it had a GUI. As it is, I still say that you should package it.

  31. Rasmus says:

    Hello, I would like this to work for Windows somehow :)
    It seems that the aircrack-ng suite won’t work for Windows without developing my own DLL’s for my network card.
    I have also tried lewifi, but it depends on python-wifi, which uses fcntl, so again it does not work on Windows :P

    Maybe my last option is to install Linux?

  32. @Rasmus,

    Yes, you might have to do it in Linux. I don’t know for sure though!

  33. George says:

    I work for an integration company – customers pay for this and a tool like this would be something that could easily be sold in the shareware market. It’s great for those DIY customers who need to add additional APs and don’t want to pay for the work to be performed by a vendor.

  34. Rasmus says:

    I have installed linux and now the program is running :)
    But it won’t draw the overlay image, and crashes when I click in the window? I copy/pasted the code from the Trac, but I had to remove the numbers myself and fix indentation, so I think some indentation is wrong! Is there an easier way to download the code (fx. snv client?)

    Help :P:

  35. @rasmus:

    There is a download section on the left navigation when you’re viewing a file, e.g.:

    http://misc.slowchop.com/misc/browser/wirelessheatmap/trunk/heat.py

  36. Alex Huxham says:

    Would heat.py be able to plot/draw a heat map for multiple access points in the same building? And overlap signals between these?

  37. [...] In the past I’ve released a few visualization tools such as Python Call Graph and Wireless Heatmap. One Friday afternoon I decided to run code_swarm on our Subversion repository which has all the [...]

  38. [...] Wireless Heatmap – “I wrote an application to generate a wireless (802.11) heat map based on signal strength. The reason for it was to find the best place/area (for my laptop) to be with the highest signal strength…” [...]

  39. Alexander says:

    If you’re looking for a something which will (or should *G*) run on Windows, check out the Ekahau Heatmapper, available at http://www.ekahau.com/products/heatmapper/overview.html
    I haven’t tried it, but wanted to share none the less.

    Alexander

  40. [...] Linux habe ich übrigens eine Lösung auf Python-Basis gefunden, die man hier anschauen kann – ich weiss allerdings nicht ob das was [...]

  41. John Robillard says:

    Another application for this is an inner office G.P.S. but using Wi-Fi to find conference rooms or someones desk.

  42. lyna says:

    hai can anyone help me…i want to develop
    a software wireless management…
    can u guys guide me …

Leave a Comment