The basic idea is to use low cost hardware and build a small device capable of broadcasting its name via Bluetooth. The broadcast name is in a standard format and contains decimals coordinates. A client or daemon is able to scan and read these coordinates as if they came from a GPS receiver. The hardware can be placed in fixed locations and provide coordinates in areas where GPS does not work well. A database exists where Bluetooth MAC addresses can be registered. This allows a client to filter out non fakesat devices when doing a scan.
Blueooth broadcast name format
[+|-] [domain name] [latitude] [longitude]
The first character is a + or - to denote whether or not the MAC address is in the database. A + indicates we must check the database to validate the MAC address.
For example, a valid broadcast name might be:
+ thumbtribes.org 51.508742 -0.164795
In this example the MAC address of the device will be validated using a simple RESTful API query.
A simple proof of concept Linux client exists.
fakesat-0.1.tar.gz
To build:
autoreconf -i
./configure
make
make install
The configure script will let you know of specific libraries required to complete the build. It has been built on Hardy Heron so uses fairly recent library versions.
A packaged version for Openmoko is available:
fakesat_0.1-r0_armv4t.ipk
This was hacked^H^H^H modified to build for an earlier version of libsoup and appears to sometimes fail when doing the RESTful query. I should probably make this part of the code more robust anyway!
john<@>thumbtribes.org