What is Redpin?

Redpin is an open source indoor positioning system that was developed with the goal of providing at least room-level accuracy. Moreover, it avoids the time-consuming training and setup phase known from other systems and instead relies on the user community.

How it works

Redpin can determine the location of a device with room level accuracy. Being a fingerprint-based system, Redpin will not provide geographic coordinates but rather symbolic identifiers as for example the number or name of a room.

Example Fingerprints on a Map

Instead of relying on a static fingerprint model, Redpin does not make a difference between training and usage. Redpin can be used right away and allows its user to enter the symbolic labels if necessary. As this is an ongoing process, Redpin can also easily adapt to changes in the environment, caused for example by replaced access points. For more detailed information please refer to our paper Redpin - Adaptive, Zero-Configuration Indoor Localization through User Collaboration.
To further increase the accuracy and the adaptability of the locator, Redpin allows multiple measurements taken consecutively to be added to the same fingerprint. We call this process 'Interval Labeling'. For more information on Interval Labeling please refer to our paper Improving Location Fingerprinting through Motion Detection and Asynchronous Interval Labeling. In addition, Redpin employs a two stage positioning mechanism: if fingerprints consist of only a few measurements, Redpin uses a kNN variant while SVM is used for big fingerprints.

Redpin consist of two basic components: a sniffer component that gathers and collects information about different wireless devices in range in order to create a fingerprint, and a locator component, which stores measured fingerprints in a repository and contains the algorithm to locate a mobile device. To allow easy, reliable and fast user collaboration, the locator is run as a central server. It is implemented using Java SE 6.0 and SQLite (or MySQL). As sniffer component we use an iPhone application that gathers information about different wireless devices in range.
Interval Labeling for the Redpin Client application works as follows. When a user adds a new location, the current location is stored, and an interval scanner is instantiated. The interval scanner runs in the background, and periodically performs a scan of WiFi networks, creating fingerprints by attaching the current location to the new WiFi measurements. The fingerprint is then being sent to the server and is stored there. Interval scanning is stopped whenever a significant movement is detected through the built-in iPhone accelerometer, or when the users try to either add a new location or locate themselves.


Example Fingerprints on a Map

All Redpin components are available as either Eclipse or XCode projects and can be downloaded from the Redpin sourceforge site via SVN. The server can also be downloaded as a jar file from the download section here.

Redpin Standalone Server

  • Download the redpin.jar file.
  • Launch the server from command line using
    java -jar redpin.jar [port]

Redpin Clients

  • Build and install your favorite client: iPhone, Android
  • Change the app settings and adjust ip and port to your values (or change the default values in the source files)

Now you're ready to use Redpin. Have fun!
Feel free to subscribe to our mailing list.


Are you working on modifications, improvements, or would like to contribute something? Let us know
Feel free to subscribe to our mailing list


Redpin symbian

If you'd like to use the old version of redpin (for symbian), all information needed can be found here