Version 1.5.2

How to measure
with it.

From the first launch to the file that leaves for a server. The most common questions come first; behind them the procedure and a description of what each part of the screen does.

This describes version 1.5.2. Exactly what goes into the export is in the data dictionary.

Common questions

How long can I measure for free?

One hour of measuring time, and the hour comes back a year later. It is counted in measuring time, not in runs, so it can be split across as many walks as you like; what is left of it stands above the Start key. Unlimited measuring is a one-off purchase — not a subscription.

Can I check what got recorded without exporting?

Yes. The settings menu leads to Browse records, where the rows of the last measurement can be filtered, searched and shared as an excerpt. The export is then for the whole file, not for the question “did it get written down”.

Does the app send measured data anywhere on its own?

Not until you set it up. The data sits in the phone and leaves only when you share it, download it, or configure a destination under the gear icon (S3, WebDAV or SFTP). The only traffic that flows by itself is the test data of internet mapping and throughput — and even that you have to switch on.

Why does the thermometer read over 45 °C?

Because it measures the phone, not the room. A Pixel has no ambient temperature sensor; the reading comes from a sensor inside the device, warmed by the processor and the radios. During a measurement it commonly reads twenty degrees above the surrounding air. It is a fact about the device — treat it as one.

Why is there no direction drawn for Wi-Fi or Bluetooth?

Because Android does not report one. Azimuth and elevation come from GNSS only, which is why the globe holds satellites and nothing else. Wi-Fi gives strength, RTT gives range, Bluetooth AoA is not in the public API, and cells report only their identity. Samples without direction therefore light the entire ring — a sector would claim a bearing nobody knows.

The light trace is broken up. Is that a fault?

No. The light sensor reports only changes, so on a phone lying still it sends a handful of samples per second. A second without a sample breaks the trace; a line across the gap would pretend to be a measurement that never happened.

Can I lock the phone or switch apps while measuring?

Yes. The measurement runs in a foreground service and continues with the screen locked; the notification shows that it is running. What stops it is switching the phone off or the system killing the app when memory runs low — such a record is kept, marked as interrupted, and can still be downloaded.

How much data does a measurement produce?

With the sensors on, tens of thousands of rows per minute — a half-hour walk produces hundreds of megabytes of raw text. Based on the estimated size, the app offers a GZIP-compressed export by itself, which cuts it to roughly a tenth.

Is the SIM card number recorded?

No. The export carries the operator, MCC/MNC, the slot, roaming and which card carries the data. Neither ICCID nor EID is recorded — they are permanent subscription numbers that outlive even a change of phone.

Is audio recorded?

Not by a measurement. From the microphone only an indicative loudness in dBFS is computed and the audio is discarded — a number goes into the file, not a recording. The one recording the app keeps is the voice note you record yourself at a survey point; it stays in the app until you export or delete it.

Your first measurement

The app asks for permissions only when it needs them. The shortest path to a first record:

  1. Grant the permissions. The Permissions card at the top shows what is granted and what is missing. Location is required even for a Wi-Fi scan — without it Android withholds the list of networks.
  2. Check the technologies. The Measured technologies card offers presets and the individual sources. Next to each source name, in smaller type, sits its configured value — 50 ms or 15/45 s, for instance.
  3. Press Start. The key answers with a click as it lands and a quieter clack as the finger lets go — and if you would rather have it within reach for good, carry it to the edge of the display.
  4. Walk. The panel shows the duration, the distance walked and the record count; the digits grow with the rate at which data arrives.
  5. Stop and export. Stop ends the session, and the panel below offers a download or a share.

Distance is counted only from fixes that passed the accuracy filter. Indoors it usually stays at zero — that is what points on a floor plan are for.

The line above Start says how much of the free hour is left. It counts down while the measurement runs; when it runs out, the measurement is stopped and saved.

Choosing technologies

A source is switched on and off by tapping its name. A source with a gear icon opens its settings on a tap, where the interval can be changed — and doing so switches it on as well.

The presets above the list switch the whole set at once. If you have your own intervals set, the app asks before switching whether to keep them as Custom; otherwise the preset would overwrite them.

A tick means “selected”, green means “has measured something”. A source can be selected and still measure nothing — typically when the technology is missing from the phone or switched off.

Controls you can carry

Start, Reset and Stop stand in the content like any other card, and on a long screen they scroll away with it. Press and hold a key and drag it to the bottom edge of the display: there it stays put, wherever you scroll. Drag it back into the content and it goes back to being a card. Leave it where it is and nothing changes.

  • One key at a time. There is no second gesture for the whole panel — it would be a second grammar for the same thing.
  • The panel holds the whole width whether it carries one key or three; the keys divide it in the proportion they have in the content. Start at the edge and Reset with Stop in the content is a permitted state.
  • A key let go outside a berth swings back, with an overshoot as big as the distance it travelled, and settles in a few swings. Horizontally only: up and down decides which berth it lands in, and a decision must not oscillate.
  • The arrangement is stored. Carried keys stay at the edge after the app restarts.

Each press answers by hand: a click as the key lands, a quieter clack as the finger lets go. The material ripple is switched off on them — the movement of the key already says the press landed.

A key you have just dragged does not fire when you let go. Otherwise carrying Stop would stop the measurement.

Keys on the home screen

The fastest measurement is the one that does not need the app opened first. Four kinds of widget go on the home screen, and each of them sends exactly the same instruction the screen sends.

WidgetWhat a tap does
Mark pointWrites a survey point with the label stored in the widget — up to four labels side by side, so “doorway”, “corner”, “window” are one tap each. With nothing running, the key starts the measurement and marks the point in one go.
MeasurementStarts the set of sources and the intervals saved in that key. While it runs, the key says so, and a second tap asks before it stops.
SourceShows one source and what it is collecting right now — access points, satellites in the fix, loudness. A tap while nothing is running starts a measurement with that source alone.
Source readoutUp to six sources at once, one line each, in the order you picked them — a list to be read at a glance instead of searched. Like the tile it only reads; a tap opens the app.

A key holds its own copy of what it starts, taken when you set it up. Switching a preset in the app later therefore does not silently change what the key on the home screen measures — a difference you would otherwise discover at home, over the data.

The keys are redrawn by the measurement itself, once every five seconds — a widget cannot be fresher than the app that feeds it. That is why each key carries the time its numbers were read at; the stopwatch is the exception, it ticks on its own. What the panel shows — the flow trace, the row of value cells, the result kept after stopping — is switched in Home screen keys, which is also where a key is added and where the ones already placed are set up.

Starting from a key passes through a transparent quarter-second stop, because Android 14 and later lets nobody start a location or microphone service from the background. Marking a point and stopping go straight to the running service and do not stop anywhere.

The tile, the shortcuts and the shade

A home screen key still means finding the right page of the home screen. Three controls sit closer than that:

WhereWhat it does
Tile in the quick settingsStart and Stop from any app, and over the lock screen as well. Add it once by dragging it into the shade, or from Home screen keys in the settings menu. It measures with whatever the app measured with last.
Shortcuts under the app iconA long press on the icon offers Start while nothing runs, and Stop and Mark point once something does. The point is marked without a label — labels are on the widget key, where there is room for them.
The notificationWhile measuring it carries Mark point and Stop. Start can be kept in the shade the whole time nothing is running, from Home screen keys; it goes away as soon as a measurement starts.

Over a secured lock screen the tile asks for the phone to be unlocked before it starts anything. What starts is location with a microphone, and a control that could be pressed through the lock screen would be a different kind of thing entirely.

The sky and the ring

The Sensing card is a view of what the instrument sees right now. Collapsed it shows a compass with a needle to north; expanded, the whole sky.

Inside the globe the satellites sit at their real azimuth and elevation. Colour separates the constellation, size and brightness carry C/N0, a filled dot counts towards the fix. The globe turns and tilts with the phone: face up it looks into the zenith, held upright it looks at the horizon.

Around the globe run bands for the quantities that have no direction — noise, temperature, pressure and light. The angle along a band is time, not bearing: one minute cut into seconds, so the head of the trace sweeps like a second hand with a gap behind it where values have aged out of the minute.

The ring that ripples is a sample without direction — Wi-Fi, Bluetooth, cells. The ripples rotate, so not even the tallest of them points anywhere.

Below the globe is a legend you operate: the arrows step through the items, the middle button switches off the one you are on. A quantity loses its band, a constellation loses its dots. The filter changes the picture, not the measurement — a switched-off item keeps being measured and stays in the list with its value.

Points on a floor plan

Indoors GNSS gives no position, so there is nothing to attach the measured values to. That is what point measurement is for: stop, type a label (a room number from the floor plan, say), tap Mark point and wait a moment for samples to gather. Then walk on.

The label is optional. Without it the point stays a sequence number, which is enough for a walk along a numbered plan.

A point can also carry a photo or a voice note. The camera icon opens the app's own viewfinder; the microphone icon records until you stop it, at most for ten minutes. Both are kept in the app's private storage, are never written into the phone gallery, and travel with the measurement when you export it — a measurement with media leaves as a single tar.gz with a media/ folder next to the text. Browse records shows them as thumbnails and opens them full screen.

A voice note is written into the data when it ends, so its row can be a minute later than the point it belongs to. The point's own row says from the start that a recording is coming, so it does not have to be hunted for by time.

Internet mapping and throughput

Two features with a card of their own, because they behave unlike every other source: they send data over the network themselves.

Continuous internet mapping

This is not a speed test. Continuously, for the whole walk, it measures real transfer quality — download, upload, RTT, jitter — and every thirty seconds it runs a longer capacity burst. It shows how walls, corners and doors change what a user actually gets.

The card states the upper estimate of data used per half hour up front. It measures over Wi-Fi, cellular, or both at once.

Wi-Fi network throughput

Not a scan either: the phone joins the networks you list one by one, measures how much data flows through each, and disconnects again. Networks are added by SSID; the suggestions under the field come from the last scan, strongest first.

The first connection to each network brings up Android's own dialog. Clear those at the start of the walk — the phone remembers the consent. A network that fails to connect within the limit is recorded as unavailable and the walk continues.

Sensors outside the phone

A probe on the wall or a meter in a case measures what the phone cannot reach. The app reads the ones that broadcast their reading into the room: nothing to pair, nothing to connect, no new permission and no new item on the panel. The Bluetooth scan that is already running hears them, so it is enough to have Bluetooth among the measured technologies.

Four publicly described formats are read, and between them they cover the great majority of cheap broadcasting sensors:

FormatWhat speaks it
BTHome v2An open standard with more than ninety types of quantity. Broadcast by ESPHome, Shelly, Espruino and reflashed cheap sensors alike.
RuuviRAWv2 and RAWv1 — temperature, humidity, pressure, acceleration, battery voltage.
ATC and pvvxCustom firmware for Xiaomi thermometers, both variants of the packet.
Eddystone TLMBeacon telemetry: voltage, temperature, uptime.

The values land in the same record as the advertising they were computed from, named and in SI units, under keys that begin with sensor_. From one row it is therefore visible both what was read and what was not.

Two rules hold across all of them:

  • A reading the sensor itself marked as invalid is not written down. Ruuvi sends 0x8000 for “did not measure”; read naively, the file would claim −163 °C.
  • An unknown object ends the reading. BTHome is a chain of identifier and value without lengths, so after an unknown identifier there is no telling where the next quantity begins. Instead of guessing, the record carries sensor_truncated=true and what is certain.

A sensor speaking something else is not lost: the raw bytes of every advertisement have always gone into the export, so a format can be decoded later from data already recorded. Sensors that have to be connected — over a Bluetooth profile, a USB cable or the local network — are a direction, not a feature yet; what it involves is laid out in the section on the home page.

Looking into the data

After a walk the first question is whether the thing you went there for actually got written down. Until now the only answer was the export — a file of hundreds of thousands of rows that the phone will not open and that has to be sent somewhere first. Browse records in the settings menu answers it on the spot.

  • Filter and search. By record type and by time, with a search that runs through the payload and the source name alike.
  • A window of fifty rows with a sequence number that holds across the whole file — a row found in the preview can be found again in the export.
  • Rows cut to the width of the display, with dots in the middle. What they all have in common stands once above them; a tap shows the row in full.
  • A long press marks a row. Marked rows can be hidden, and so can a whole source; Reset brings them back.
  • Share slice hands the excerpt over as text with a header saying which measurement and which filter it came from.

Marking and hiding is crossing things out in the printout, not in the original. Neither the stored measurement nor the export is touched by it.

From the browser opens Phone technical details: the sensors with their shortest permitted interval and queue depth, what the GNSS, Wi-Fi and Bluetooth of this device can do, the permissions, and the limits that cut a measurement short. It can be copied or saved as a .txt, and it is deliberately never translated — like the export, it is evidence for a bug report.

A greyed-out item in the menu now says what switches it on. Without a configured destination or without a finished measurement it used to look like a fault in the app.

Export and upload

The panel at the bottom offers Download (saves the file through the system dialog) or Share (hands it to another app). Based on the estimated size it switches to GZIP packing on its own.

Under the gear icon in the header are the destinations a measurement can leave for on its own:

DestinationWhat to fill in
Cloud storage (S3)The provider address, the bucket, the access keys. Works with Amazon, Cloudflare R2, Backblaze, Wasabi and your own MinIO — only the address differs. If you have no region, leave auto.
WebDAVThe folder address all the way to the target, and the login. With Nextcloud use an app password, not your account password.
SFTPThe server, the user and the password. Leave the server key fingerprint empty — the first upload shows it for comparison, and only then do you store it.

Sending a measurement by e-mail is not among the destinations: that is the system app chooser opened by the Share button in the export panel — and mail is in it, alongside Drive or messaging.

Saving a destination switches it on straight away. The Upload after the measurement stops switch then sends every finished record by itself; with the app closed, it speaks up the next time you open it. A manual upload is always available through Upload the last measurement.

Passwords and keys are held in the phone encrypted with a key from the Android Keystore. An address without https:// is rejected for S3 and WebDAV alike — Basic authentication only encodes the password, it does not hide it.

A measurement with photos and voice notes

Such a measurement is exported as one tar.gz: inside it is the same text file, named data.txt, and a media/ folder beside it. Every file has a row in the data tying it to its point, with its size and a SHA-256 — so a photo received on the other end can be proved to belong to that point of that measurement. Gzip on its own compresses a single stream and cannot hold a folder, which is why the format changes as soon as media are involved.

Taking the settings to another phone

Under the gear icon, Settings backup writes everything that makes the instrument yours — sources and their intervals, delivery destinations, the measured Wi-Fi networks, the home screen keys — into one readable text file, and reads it back on the other phone.

Passwords are left out unless you ask for them. Asking for them is confirmed by a fingerprint, a face or the screen lock, and importing such a file asks again. The file itself is plain text, so a backup with passwords in it is kept the way the passwords themselves are kept. The licence and the free hour never travel in it — they belong to a phone and an account, not to the settings.

The free hour and unlocking

Every phone gets one hour of measuring time free, and the hour comes back a year later. It is counted in measuring time, not in the number of runs, so it can be split across places and days. What is left of it and the date it renews stand right above the Start key.

A measurement that runs out of the hour is stopped and saved. Nothing recorded is ever locked away: the export, the upload and the record browser work on the free hour exactly as they do after unlocking.

Unlimited measuring is unlocked by a single in-app purchase at the Google Play price for your country. There is no subscription and no expiry. The unlock follows the Google account onto any other phone and is remembered in the phone as well, so a device out of signal keeps measuring. A refund through Play locks it back, once Play actually answers.

Buying is handled by Google Play alone; the app reports nothing about it to anyone. What leaves the phone and when is described in full in the privacy policy.

Sending feedback

Send feedback sits in the settings menu, under Help. Say whether it is a bug, a rating or an idea, write it down and attach up to five photos or videos.

The app itself sends nothing: it hands the message to your mail app, where you read it over and press send. Along with the text go the app version, the Android version and the model of the phone — nothing else. For anything more, attach the phone technical details from the record browser.

Troubleshooting

A source is selected but measures nothing

Look at the Collection status card — it states what is happening with each technology. The usual reasons: a missing permission, the technology switched off in the phone (Bluetooth, Wi-Fi), or the device not having it at all.

The measurement stopped by itself

Most often the free hour ran out. Such a measurement is stopped and saved, and everything recorded up to that point can be exported. The other reason is the system killing the app when memory runs low — that record is kept as well and marked as interrupted.

A sensor on the wall is not in the data

Check three things in this order: that Bluetooth is among the measured technologies, that the sensor broadcasts rather than waiting to be connected, and that its format is one of the four the app reads. A sensor that broadcasts in something else still lands in the export as raw bytes — under service_data or manufacturer_data, just not as a named value.

The Wi-Fi scan keeps returning the same thing

Android throttles scans. The app recognises this and records the state THROTTLED or UNCHANGED instead of passing the same result off as a new measurement. Throttling can be switched off in the developer options (Wi‑Fi scan throttling).

The distance stays at zero

Only fixes that passed the accuracy filter are counted. Indoors or under trees the accuracy is worse, and the line under the panel says so — location ±28 m · too coarse, distance is not counted.

The cellular branch reports no network

There is no SIM in the phone, or the card does not carry data. The SIM and eSIM card shows what is in the device and which card carries the data.

The upload to a server failed

The message states the reason. With S3 the culprit is usually the region or the keys, with WebDAV a folder that does not exist — it is not created for you. With SFTP the first upload always ends with the server key fingerprint: compare it against the server and store it in the destination settings.

Where the limits are

The app writes down only what the system gives it and infers nothing. Which sets what you cannot expect from it:

  • The direction a signal arrived from for anything other than GNSS.
  • A position indoors. That is what marked points are for.
  • The room temperature. The sensor measures the device.
  • An active cell scan. It requires carrier privileges; an ordinary phone refuses and records the reason.
  • The SIM card number. The system does not hand it to an ordinary app — and it would not go into the export even if it did.
  • A reading from a sensor that has to be connected. Over Bluetooth the app reads what broadcasts; a profile that must be paired, a meter on a USB cable and a device on the local network are a direction, not a feature yet.

What your phone cannot do

Phone technical details in the settings menu ends with a block called [device_limits]. It lists only what this particular phone is missing — a phone that is missing nothing has a single line there. Each entry means something concrete for the data, and each has a way to tell a phone that does not have that limit:

  • no_<sensor> — the phone has no such sensor and the source stays empty in the export. Barometers are the usual absentee; without one there is no pressure and no relative altitude. Look for a phone that lists the sensor at all: the same report on another device names it with its vendor, resolution and shortest interval.
  • no_gnss_raw — no pseudorange or carrier phase, only the position the phone has already computed. Post-processing and RTK are out. A phone that has it prints raw_measurements=supported in the [gnss] block.
  • no_gnss_navigation_messages — the broadcast ephemeris cannot be recorded, so a raw track cannot be reprocessed on its own later.
  • no_gnss_antenna_info — the antenna phase centre is unknown, which puts centimetre positioning out of reach even where raw measurements are available.
  • no_wifi_6ghz / no_wifi_5ghz — access points on that band are invisible to the phone, so a survey of a Wi-Fi 6E network done with it has holes it cannot report. The [wifi] block says band_6ghz=true on a phone that sees them.
  • no_wifi_rtt — distance to an access point cannot be measured, only its signal strength. A phone with 802.11mc prints rtt=supported.
  • wifi_scan_throttling — the system allows four scans per two minutes, so a faster Wi-Fi cadence in the settings is not honoured. This is not the hardware: turning off Wi-Fi scan throttling in developer options removes it on the same phone.
  • no_le_extended_advertising — long BLE advertising payloads are cut short or missed, so some beacons and sensors will not be seen whole.
  • single_modem — only one SIM is measured at a time. A dual-modem phone prints modem_slots=2.
  • battery_optimisation — the system may interrupt a long measurement. This is a setting, not a limit of the device: exempt the app from battery optimisation and the line disappears.

Which models have which of these is not printed in the app on purpose. A list of devices ages faster than a release of the app, and a stale list inside a bug report is worse than none — so it lives here. If you have measured on a phone worth naming, send what its report says through Send feedback in the app and it will be added.

Data dictionary: exactly what the export contains →