FAQ

Why is this site called SubPos?

It's a portmanteau of Subterranean Positioning (System).

What makes the SubPos Wi-Fi Positioning Standard different to other positioning systems?

SubPos itself is used to transmit the base station or node position to clients to allow for trilateration. While RSSI is the primary backwards compatible method of determining distance to the transmitter, it isn't limited to RSSI for distance calculations. SubPos is extensible and various distance calculation methods (such as time of flight or round trip time) can be added to allow for more accurate positioning.

Can I use the Wi-FI positioing system to track users?

SubPos has been designed as a client side positioning system, and works similarly to GPS. For tracking users a Wi-Fi tracking/analytics system (such as Cisco's CMX), would be more appropriate. If you really want to use SubPos for tracking,you could develop a client application that reports the client position back to a server.

Where does the SPS tag in the SSID schema come from?

It's an acronym of Subterranean Positioning System, the project in its early months was refered to as SPS.

Can I join the project?

If you think you have something specific to add, you're more than welcome to do so. Just pull from the github repos to get started.

What sort of accuracy can I expect?

The standard itself doesn't define accuracy, as it's designed to work with different hardware as well as a plethora of different distance measurement techniques (for example it can work with 802.11mc's fine time measurement when that's released). The whole purpose of SubPos is to offer a dataless method of transferring the access point location to a client, so it can figure out its position without data connectivity (and the reduced latency that comes from not having to process the position on an external server).

SubPos has been tested it in a controlled environment with 8 Wi-Fi nodes/access points and it acheived +-0.5 meter accuracy with a smartphone.

The beauty of this system is that it's backwards compatible and easy to setup on existing access points, so it's something you can test quickly to see if it suits your needs. With a mildly dense constellation of access points (say one per room/area), you will know that you are somewhere in the room, with a very dense setup, you could determine where in the room you are. So accuracy really depends on the setup and use case of the implementer.

Why don't I just use [insert company name]'s Wi-Fi positioning implementation?

SubPos acheives the same, if not better positioning than "traditional" Wi-Fi positioning systems, except you don't even need data connectivity! If you are happy with releasing your known position to [big data] then continue to do so, but supporting SubPos by turning on positioning in your existing access point or deploying a SubPos Node can help create an open positioning system for all.

Won't this just clog the SSID listing in your phone and make things messy?

For the most part yes, but there will be ways to ignore these listings in standard Wi-Fi client applications (the same issues come about from Bluetooth positioning systems and the like). Additionally, these nodes will generally be populated in commercial enclosed areas so propagation should limit these concerns.

Don't different network speeds cause variability in the RSSI?

Since beacon frames (management frames) are always sent at the lowest mandatory speed for the networks the access point is advertising (or beacon frame source in this instance), there is no need to calibrate the RSSI based on the speed the network is running at (the RSSI will change if the speed changes for general data frames). In this case, you do not get any variation in RSSI on the client side from a set of beacon sources with the same network settings, e.g. lowest supported speed of 1mbps (except for distance from the frame source).

Try it for yourself:

tshark -i wlan0 -l -T fields -E separator=/s -e wlan.sa -e wlan.bssid -e radiotap.channel.freq -e radiotap.datarate -e radiotap.dbm_antsignal -e wlan | grep --line-buffered "Beacon"