These terms and conditions govern our rights when we use these networks. There’s an interesting space to explore between these rights and the places we go; we could be limited to different sets of rights depending on the networks we come into contact with.

To help us explore the relationship between location and rights with public Wi-Fi as part of our project with Google Open Research, we set about making a prototype that would help us record what networks we could have access to as we move through the city.

Running the scan command on Raspberry Pi returns lots of data about Wi-Fi networks around the device. (Photo: Screenshot/IF)

The signature of a wireless network

Wi-Fi is a standard. That means there’s bits of information transmitted by Wi-Fi equipment that’s the same, regardless of use or location. We started our prototype with a Raspberry Pi and a USB Wi-Fi adaptor. There’s a command you can run on the Raspberry Pi that brings up a list of the Wi-Fi networks around you and the bits of information that’s broadcast from them. Amongst these, there are four that stick out in helping us map and understand the relationship between location and rights with public Wi-Fi.

  • Network name: a quick way of understanding the owner and purpose of a network.
  • MAC address: helps us identify different access points with the same name.
  • Open or closed: gives us an indication of whether the network is public, but open networks don’t necessarily mean their public and some closed networks are closed to restrict use to paying customers, for example.
  • Signal quality: helps us guess the distance between us and the network.

We wrote a Python script that runs the Wi-Fi scan command on a loop, picks out these four bits of information and saves them into a database on the Raspberry Pi.

Our prototype is built around a Raspberry Pi. Two Wi-Fi adaptors are used: one to continuously scan for networks, another to create an access point so a phone can stream its location and time data to the prototype. (Photo: Ian Hutchinson/IF)

Going on a Wi-Fi walk

To help us track how location changes access to Wi-Fi networks, we need to make the prototype aware of where it is. Raspberry Pis don’t have GPS, but smartphones do. We built a simple web app that streamed current location information and the current time from the smartphone to the Raspberry Pi. Our script then attaches this to the Wi-Fi networks it finds.

We built an interface to interpret the raw data collected from the Wi-Fi adaptor. Our first interface help us debug the prototype, showing live network, location and time readings. On iteration, our prototype gives a clear indication of the open Wi-Fi networks around the prototype. (Photo: Ian Hutchinson/IF)

This also gave us a blank canvas to create an interface that feeds back information about the Wi-Fi networks around us. We started with a simple list of all the open and closed networks. While testing in Somerset House, we found it to be very responsive, picking up the Wi-Fi signals from minicabs passing along the Victoria Embankment. A scan takes about 5 seconds to complete, so we had something capable of creating the resolution needed to track how Wi-Fi networks change as we’re walking.

On top of this, we built an view that gives a count of the open Wi-Fi networks currently around you. It feels like a Geiger counter, giving you instant feedback as you move through space.

We’re focusing on a small area in Bethnal Green, east London for this project. In this square mile, there’s a Tube and mainline station, the V&A Museum of Childhood, council housing, a hotel and student accommodation. With our prototype working, we’re able to start walking through the area, collecting data on the networks we encounter on our route.

These pins represent the locations where surrounding Wi-Fi networks were captured and stored. (Photo: Screenshot/Google Maps)

Ethical framework for collecting data

Automated data collection has been a target for criticism. There’s a strong ethical thread that runs through everything we do at IF. It was important to establish a framework to make sure our research didn’t infringe on anyone’s privacy and the data we collected is handled safely. All the way through development, I kept a simple sentence in my mind: “I won’t collect anything you couldn’t see with an everyday computer”.

The information we collected makes Wi-Fi work, so all computers that have Wi-Fi will be able to see it. We don’t track individual people, but rather the infrastructure that everyone can see. Techniques like packet sniffing could help us deepen our understanding of a network, but this goes beyond public information and can infringe on the privacy of individuals.

To protect the data, we store it on the SD card on the Raspberry Pi, which is protected by a strong password. None of it is stored online, and we keep strong security practices on our hardware at IF. Once we’ve extracted insights from the raw data we’ve collected, we’ll then securely delete the database file.

Where next?

Right now, our prototype doesn’t go further than recording what networks it sees around it. To begin to understand what connecting to a particular network means, we have to actually connect to the network and pull the terms and conditions from a captive portal. There’s ways of automating this, but we’ll do this manually for now.

We also need to create a way of visualising the data after we’ve been on a walk. This is an interesting design challenge because the data we’ve collected has multiple dimensions, like time, location and the dozens of Wi-Fi networks visible in each sample.

This prototype embodies our mantra of “thinking by making”. By building something that helped us explore a technology and its impact on our urban environment, we started to strengthen our understanding of how a technology works by exposing the parts we don’t usually see.