Search code examples
javaaccess-pointlocation-based

Detect Location using Bluetooth Accesspoints


I would like to detect location of bluetooth enabled devices automatically using bluetooth accesspoints. Is it possible? If so, how can I do it?


Solution

  • Bluetooth devices have unique MAC addresses so I think this would be possible but has a number of constraints:

    1. You would want the devices to be either discoverable, or to have already paired with them
    2. Bluetooth devices don't tend to be screwed to the ceiling like enterprise access points, or tethered to a phoneline like their domestic counterparts.
    3. The range of bluetooth is typically less than WiFi, which will potentially increase the difficulty in accurate localisation.
    4. No such database already exists to my knowledge.

    You can get the signal strength information you'd need to do this from BlueZ on Linux, so I assume similar is possible on other platforms. It's then a question of building a database of measured signal strengths at known location to "map" an area. With this database an unknown set of signal strengths can be matched to a large radius, by just using the set of all known positions of all of the devices seen. With that knowledge you could either:

    1. Triangulate properly if you actually know locations of individual devices

      or:

    2. See which location in your database, within the trivially calculated radius best matches the strengths you are measuring on the device currently.