SubPos Presentation LinuxConf
SubPos Presentation LinuxConf
SubPos Presentation LinuxConf
Positioning System
Blair Wyatt (@BleckyWhat)
SUBPOS IS
ENABLED IN
THIS VERY
ROOM!
Download the Android Demo*:
http://subpos.org/apk.htm
2
* Now with 312% more intentional features!
WHAT IS
SUBPOS?
3
WHY WAS The initial concept came about during a
SUBPOS
caving expedition.
DEVELOPED?
8
BEACON
FRAME
(SSID)
ENCODING
* Unique to an area, not necessarily the entire world. Generally unique for an
Application ID (unless 0x0).
~ Should be height of floor relative to height of mean sea level, not where
the node/access point is mounted, unless 3D location is enabled.
If = then:
4
1010
10
= 10 20
R1
T1
12
TRI-
LATERATION
R2
T2
R1
T1
T3 R3
Intersection
13
DEVELOPMENT ISSUES
14
31 OCTETS
Some embedded platforms
only allow 31 octets of data in the
SSID (e.g. ESP8266).
#include <string.h>
18
*https://github.com/android/platform_frameworks_base/blob/master/wifi/java/android/net/wifi/WifiSsid.java
ONLY
ALLOW
ASCII CHARS
19
ONLY
ALLOW
However, hidden APIs are
ASCII CHARS painful for developers to
implement and could become
deprecated.
22
http://ascii-table.com
ACCOUNT
FOR INVALID
This permits different invalid
CHARS character sets for different
access points and still allows it to
be decoded by any client device.
The chance that there are two
invalid character octets adjacent
to each other for a given device
are very slim.
If there are, the access point
isnt supported.
23
HOW DO WE ASCII Mask Invalid Char Mask
ACHIEVE
CODING? (24 bits) (32 bits)
26
EASY TO USE To integrate SubPos into an existing Android positioning
application, all you need to do is initialise the API like so:
Error
Indication
Position
28
SUBPOS USING ESP8266
29
ESP8266
CONFIG
4 AP/Node setup for about $12
inc. shipping.
Works with default AT firmware.
New firmware created to only
generate beacon frames (secure,
lower power) using recently
released (and subsequently
removed) function:
wifi_send_pkt_freedom()
30
ESP8266
CONFIG
AT+CWSAPID="[ssid]",[channel_num]
AT+CWSAPID="\x53\x50\x53\x01\x01\x01\x69\x43\x79\x
31 5a\x56\x0b\x43\x4e\x01\x01\x01\x01\x01\x7a\x04\x2c
\x40\x01\x08\x10\x14\x60\x07\x65\x01,1
THE SUBPOS NODE
32
THE SUBPOS
NODE
33
* Collection of access points in a given area.
THE SUBPOS Features:
NODE
35
NODE
ACCURACY
~a few meters-ish accuracy
36
NODE
FREQUENCY
HOPPING
37
POSITIONING
DEMONSTRATION
38
DEMO
39
WHAT DOESNT WORK
40
iOS
SUPPORT
The Wi-Fi scanning API is a
private framework and Apps
that use it are not allowed in
the Apple iOS App Store .
However, enterprise
distribution Apps can use
private APIs.
41
SUBPOS RANGER
42
SUBPOS
RANGER
The SubPos Ranger is a ranging
system based on 802.15.4 for use
with the SubPos Positioning
System.
Supports antenna/phase
diversity with multiple antennas,
for mitigation of multipath
44 effects (when no Line Of Sight).
RANGE Range Module Receiver
MODULE
AND
RECEIVER
45
EXTENDED
DISTANCE
RECEIVER
CALC
46
RANGING
CURRENTLY
RUNNING
ON ATMEL
ZIGBIT
47
FUTURE WORK
48
ROOM Ability to zone an
ZONING
area to increase
accuracy in tight
spaces.
49
SELF Access points or nodes can be
POSITION
LEARNING placed into learning mode.
MODE
Enables them to determine their
position from other Nodes over time,
for easy deployment of new beacon
sources.
51
CONFIG Remotely configure
MODE
SubPos Nodes.
Nodes scan for
config frame.
Android application
for config.
Auto tweak path
loss selection.
Config with
smartphone position
if available.
52
COMPARED
TO iBEACON
No (even offline) database
AND required, positioning is performed
OTHERS
passively client-side in real-time.
No need to labouriously profile
Wi-Fi signals in an area (plug and
play).
Works with most existing Wi-Fi
infrastructure.
No hardware or vendor lock-in.
Open source!
53
WHY SubPos is designed to be backwards
SUBPOS?
compatible with a vast majority of existing
devices.
No data connectivity/association
required, so you arent giving your position
54 away to big data (unless you want to).
0x74 0x68 0x61 0x6e 0x6b
0x79 0x6f 0x75
Any feedback or questions?
@BleckyWhat
blecky@subpos.org
http://www.subpos.org
http://github.org/subpos