Readable in daylight
Reflective panel, no backlight to wash out: it reads by the light already falling on it, the way paper does. Glance, done.
Working prototype · active development · open source
ExplorInk is an open-source map for e-ink readers: on foot in a city, on a trail, on a bike, on a motorbike, out of a car window, anywhere you go looking. A map you read by daylight: reflective panel, no backlight to wash out, no battery gone by lunch. The freedom of a paper map, plus a dot that knows where you are. Drop a Camp pin and when it goes off the screen you get an arrow at the edge pointing at it, with 23 km under it.
It does not give directions. No routing, no voice, no rerouting: miss a turn and you notice it the way you would on paper, by looking. What it replaces is the phone as your screen. The phone stays in your pocket, sending its GPS fix over Bluetooth, and stops being the thing you look at.
The map has no edge. No region packs to pick and manage. Switch auto-sync on and moving onto a square nobody has built is the request: the reader asks the phone, the public tile server builds it in about twenty seconds, and it draws about a minute later while you keep moving. New ground needs the phone to have signal at that moment. Everything already on the card stays readable with no signal at all, and the reader’s sync screen fills in the squares it noticed were missing while you were out, at home, over a real connection. Both, not one or the other.
It runs today, on real hardware: firmware on an ESP32-C3 reader, the app on the phone in your pocket. Every screen on this page came off a real panel, except the one tagged preview, which says so.
Built on CrossPoint Reader. Map data © OpenStreetMap contributors.
01 · why e-ink
The screen washes out in direct sun. It cooks in a mount. The battery you also need for photographs and a phone call is the one running the screen. A motorbike makes every one of those worse and adds vibration, gloves and rain, which is why this started there, and a phone strapped to a bar bag on a long walk fails the same way. E-ink has the opposite properties, and one hard cost you have to design around.
| What a day in a mount does to a phone | The detail |
|---|---|
| Heat. Apple’s own spec says an iPhone is made for 0 to 35 °C ambient | a dark mount in full sun sits above that, and the phone throttles to protect itself (Apple’s note) |
| Vibration. Apple says it plainly about its own hardware | engine vibration can permanently damage the camera’s stabilisation, and the repair is a few hundred euro (Apple’s second note) |
| Gloves. Capacitive glass does not answer through winter gloves | you stop, or you take a hand off the bars |
| Water. The mount is fine until the charging port is not | an adventure riding school names water in the USB charging port as the first thing to die |
| Battery. The phone is also your camera, wallet and emergency call | screen-on navigation is what empties it |
Reflective panel, no backlight to wash out: it reads by the light already falling on it, the way paper does. Glance, done.
The panel needs no power to hold a picture: current goes into changing it. The electronics still cost something, so two rides with the map open and a phone linked averaged 24.0 and 35.6 mA, which is 18 to 27 hours on this cell. Tens of hours, not a phone-screen afternoon.
A clean refresh takes 1,684 ms, a fast one 500 ms, both measured on the panel. Four grey levels cost an extra waveform pass. That rules out a moving map.
Position, route, surroundings: redrawn rarely, readable at a glance at speed. No rerouting, no voice, no traffic. The route is planned before you leave.
Firmware for the reader, the app for your phone. Both open source, both a real download, no account.
Side by side with a phone, a Beeline and a Garmin, our own gaps included: how it compares. Rain, a dropped link, no phone at all: the FAQ answers those.
The panel numbers, and what they force on the renderer, are on drawing a map on e-ink; the hardware they were measured on is on the hardware page.
who it is for
One device, many ways to travel. What they share is the reason for carrying it: you are exploring, not following a line. The status of each use is different, so here it is without the sales gloss.
The use this is built for now. You walk, you turn on what you see, and the reader says which quarter you are in and where the hotel is. Town, village and quarter names draw on the panel today. Street names and the practical places, a toilet or a drinking fountain, are built in the map data but have never run on a device, so they are a plan and not a feature.
Tens of hours on a charge and light in a pocket suit walking well. Contour lines with height numbers, rock faces, path difficulty and waymarked routes are built and in the map data as of this week. They have not been looked at on a panel yet, so how well terrain reads in the hand is still an open question rather than a claim.
A second screen that does not steal the phone: the map stays open for hours while the phone keeps its charge for the camera and the calls. Abroad it draws from the card with no roaming, and the country you are crossing gets built as you reach it, whenever the phone has signal. Nobody has run it a whole day at road speed yet, so how often it wants to redraw from a car is untested.
Where the project started, and the mount is solved: dash or bar cradle, gloves on the buttons, ride and hike and cycle road filters, a route framed whole before you set off, pins for camp and fuel. Tested on a real bike.
Same needs, a different mount. An ordinary phone bar cradle holds it, which is what the motorcycle shots use, but nothing has been ridden far enough on gravel to say what shakes loose. Everything on the screen already suits a long day at 20 km/h.
02 · the screen
The ones tagged device came off the panel over USB: send a coordinate and the device draws what is around it from tiles on its SD card. The one tagged preview is the same renderer running on a laptop against the same tiles, which is how styling gets tuned without reflashing. We keep the two labelled apart on purpose.
Honest caveat: the device renderer follows most of the style spec now: road widths and casings, buildings, forest, built-up, filled water with waves, and railways as a blocked line all draw on the panel, and the route draws with them, and so do place names. Junction dots exist in the spec, not yet on the glass, and neither do the edge markers for a village just off the screen. The laptop preview is the other way round for the route: it renders everything here except the route line, so that one is judged on the device only.
How the names get on the glass without blanking out the map: place labels on a one-bit panel. Why the map stands still while the marker moves: the track-up map.
03 · how it is built
Fetches an area from OpenStreetMap, projects and clips it, routes along real
roads, and writes binary .tib tiles at three levels of detail. A browser
tuning tool renders a pixel-exact 480×800 preview, so the styling gets judged
as e-ink instead of as a pretty vector map.
How the tiles are built.
The built maps are on a public server, so nobody has to run the map builder to go riding: the phone downloads the squares the reader is missing, one plain file per square, and reads a small index to tell an empty square from one nobody has built, and a square that has gone out of date from a current one.
It also builds what it does not have. A square that comes back missing is written to the server’s own log, and a builder on the host takes the ten most-asked-for squares of the last day and builds them from OpenStreetMap straight into what it serves, about twenty seconds for a 13 by 13 km area. Nothing already published is ever rewritten, and the day is capped, so an unattended builder cannot run away with the disk.
A fork of CrossPoint Reader, MIT licensed and public. Map screen, BLE position receiver, tiles off the SD card, zoom and marker height on the physical buttons, ride / hike / cycle filter, pins, and a command console over USB serial and BLE. The e-reader stack comes out; maps go in. Source on GitHub.
Sends the phone's GPS fix to the device over BLE every few seconds and records every fix and packet for replay. One window, no settings screen, foreground service: it keeps sending with the phone locked in a bag. It touches GPS only while the reader is actually connected, and shuts itself down a few minutes after the reader goes away. The reader opening its map starts it again. It is also the reader’s way to the tile server. What the phone app does, and where iOS stands, how the BLE bridge works, or the app source.
The whole chain, part by part: what each piece hands the next one, and why it is split this way.
what it costs
Outdoor mapping is a subscription business. Offline maps, the one feature that matters when there is no signal, usually sit behind the paid tier, and the bill runs from about $40 to $100 a year, per app, forever. Abroad without downloaded maps you pay again in roaming.
Firmware and phone app, MIT licensed, source public. No account, no login, no trial.
No licence to buy, no region to unlock. A square on your card is yours, offline, forever.
Building and hosting tiles on our servers costs money every month. A paid tier, if it comes, covers that: priority builds and hosted access. Never the firmware, never the app, never a map already on your card.
04 · status
A working prototype, in active development. Formats, the render spec and the BLE protocol still change without notice, so do not build on them yet. The short list of what is on the device now:
That is the short list. The full status list is on the development page, item by item, next to the dated log of when each one landed. Everything marked works is on a reader you flash yourself today.
05 · development log
Tiles went from version 3 to version 4, and the server that builds them for everyone now writes the new one on an empty shelf: no area was carried across. Version 4 exists so the next format change is not needed at all, which is what lets terrain and street names arrive later without every card reading stale. Every published firmware reads version 3, and version 3 is still served untouched.
The hike map got its terrain: contours from NASA elevation data, 20 m apart up close with every fifth one heavier and carrying its height as a number that follows the line with the digits pointing uphill, plus rock faces drawn with combs on the side you would fall down. Path difficulty and waymarked routes are in the tiles now too. Drawn by the real renderer on a laptop, not yet seen on a panel.
Three firmware images and the Android APK are published files, with the flashing commands, a back up your reader first step and the device table next to them. The firmware image is the exact binary that was confirmed working on an X4, not a rebuild of it. Still a maker’s install: a USB cable and one command line tool, about half an hour.
The full dated log: every entry, newest first, next to the status list. The repo carries one topic document per hardware finding: how the panel actually behaves, and why the obvious approach fails.
06 · the hardware
A pocket e-ink reader, bought off the shelf. Not a dev board, not Android, no ADB: an ESP32-C3 with a display driver and physical buttons. Everything ExplorInk does has to fit in that. One binary covers the Xteink X4 and X3. It probes which panel it woke up on.
What hardware ExplorInk runs on, and everything we measured on the Xteink X4.
07 · early access
You can put ExplorInk on a reader right now, and there is nothing to build: three firmware images and the Android APK are published files, the maps come off the public tile server with nothing to set up, and the install page has the commands next to the downloads. It takes a USB cable, one command line tool and about half an hour. What does not exist yet is a one-click installer and a signed app in a store. That is what comes next. Leave an address and you hear from me once, when there is something to put on a device without a command line.
You are on the list.
You already have the hardware, so you get the one-click installer and the signed app the day they work. Nothing else lands in your inbox. You do not have to wait for them: the install page has the firmware images and the APK today, and the source is at github.com/rfordinal/explorink.
You are on the list.
You do not have the reader yet. This is what it would cost to start, all in:
Reader + ExplorInk, ready to ride
€79
Not available yet.
Nothing is for sale. That button measured whether the bundle is worth building at all, and your click counted. You are on the list, and you hear from me when it exists.
08 · get in touch
ExplorInk is developed by Comsultia, s.r.o., a software company in Slovakia. It started because I ride, and I wanted a display that survives a sunny day on a handlebar. The firmware and the phone app are public and MIT licensed, and every hardware finding is written down in the firmware repo. If you are doing something similar on e-ink reader hardware, or you want to try it, or you just want to tell me the map style is wrong, write to us.
Code
github.com/rfordinal/explorink
Firmware, docs and every hardware finding. MIT licensed. The phone app is at explorink-android.