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.
in the world
A hand in a city square, a cafe table, a bar, a fuel tank, a dashboard, a desk, morning sun through a windscreen. Every one of these is a camera pointed at the panel while somebody was reading it, and what is on the screen is whatever the device was drawing at that moment. Click one for the full photograph.
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 inside five minutes, and it draws 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 three Xteink readers and one development board, 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.
how you use it
There is no menu tree to learn. The bottom row of the panel always names the four buttons under it, and the names change with the screen you are on. Here is the whole device in the order you meet it. Every frame came off a real panel; click one to see it at full size.
01
Six rows and nothing live on any of them. Explore is the map, and it is the row you want nearly every time. Group only appears on a reader that carries a radio.
Up Down move, Select opens
02
The phone stays in your pocket and sends its fix over Bluetooth. The marker moves with it and the map itself holds still, because every redraw costs a panel refresh. It only slides when the marker gets near an edge.
Exit goes back Home
03
One metre per pixel at the closest, 45 at the widest. Two small boxes down the side of the panel carry a plus and a minus, so you can tell which button is which without taking your eyes off the map. The scale bar says where you are on the ladder.
Up zooms in, Down zooms out
04
Pull back and the towns and villages get named, each one outlined in white so the road underneath still reads. Come back in close on the tourist map and the streets get named too, along the street rather than across it.
Select opens Options
05
Where you are, the time, the link to the phone with its signal, and the battery. One line, redrawn once a minute, and the refresh is a 36 pixel band across the top rather than the whole panel.
always on, nothing to press
06
Park here, camp here, meet here. A pin is saved at your position and is still there after a reboot. One that has gone off the panel turns into an arrow at the edge with the distance under it, which is the whole answer to where did I leave the car.
Select, then Pins
07
Plan the stops in Google Maps, share the link, pick ExplorInk. The app works the road route out from the stops and sends it over. The picker lists what is on the card with the number of points in each.
Up Down pick, Select loads
08
It draws with the map and then it leaves you alone. No turn prompts, no voice, no recalculating. Miss a turn and you notice it the way you would on paper, by looking at where the line went.
nothing to press, it just draws
09
One row frames the entire trip on one panel, start to finish, whatever rung you were on. It is how you read the shape of a day before you set off, and how you find your way back to it afterwards.
Select, then Whole trip
10
Track-up puts your direction of travel up the panel and swings the north indicator instead, which is what you want walking an old town. North-up is one row away in the same menu, and that is the one you want reading a valley.
Select, then Rotation
That is the device. The four screens it also has are a desk job rather than a ride: Sync fills in the squares you walked off the edge of, File Transfer moves files over WiFi, Settings is five tabs, and Group shows the rest of a walking party on a reader with a radio. Install it today, or see every frame we have.
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 with the map open and a phone linked an Xteink X4 drained 3.9 % an hour, which is about 25 hours on a charge. We quote 10 h+ publicly, because that comes off days out rather than a bench test. Tens of hours, not a phone-screen afternoon.
A clean refresh takes 1,684 ms, a fast one 500 ms, both measured on an Xteink X4. 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, and since 0.2.2 so do street names at the two closest zooms of the tourist map. Drinking water is in the Useful places list. A toilet is not on the map yet.
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 in the map data. Rock faces and named landmarks have been drawn on a real panel. How contour lines read 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. Both halves have been run on the road: a thirteen hour day that ended with a Prague to Bratislava drive, and a drive across ground the map did not cover, where two of the four missing squares were built because the reader asked for them and drew a minute later, while it kept moving.
Where the project started, and the mount is solved: dash or bar cradle, gloves on the buttons, ride and hike and tourist 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, street names, summits and named landmarks, rock areas and stairs. 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. Where the rest of a walking group is when there is no phone signal: group positions over LoRa, on the one board that carries a radio.
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, usually inside five minutes for a 13 by 13 km area. A published area is rebuilt only when the drawing rules change and have held still for 12 hours, one area at a time, 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 / tourist 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 when the fix has actually moved, at most every 7 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. Maps that work without signal usually sit behind the paid tier: onX Backcountry lists $30 to $100 a year across its two tiers, and that is one 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 buy. 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
In the tourist map the two closest zooms now name the streets: three names at the closest, two at the next, each set along its street with a white halo. A name that does not fit its straight run of road is refused rather than squeezed. Names live in a new layer of the map tiles, so tiles already on a card draw as before and simply have none until that ground is downloaded again. Firmware 0.2.2 ran on an X3, an X4 Pro and a LilyGo T5 S3 Pro the same day, all three built from one commit.
A pedestrian zone is now the widest road on the screen, because in an old town it is the main street. Lanes shared with delivery vans are drawn, stairs appear as a ladder for the first time in any mode, and footpaths drop out once the view pulls back so they do not bury the rest. Running on a real X3, framebuffer pulled off the panel the same day.
Plan a route on the phone with a handful of stops, share it, pick ExplorInk, and the trip is on the reader’s card and drawn across the map. A shared link carries the stops and no line, so the route is worked out from them along real roads and will differ from what Google Maps drew; the app says so, and lists every stop before anything is sent. It stays a line on a paper map: no turn instructions, no recalculating, no voice.
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: a microcontroller with a display driver and physical buttons. Everything ExplorInk does has to fit in that. Two builds cover the three Xteink readers. One is for the X4 and X3, both ESP32-C3, and it probes which panel it woke up on. The other is for the X4 Pro, an ESP32-S3 with touch, a frontlight and far more room: 172 kB free with the map up, against 58 kB on the X4. A third build covers the LilyGo T5 S3 Pro, a development board with its own GNSS receiver that we validate on.
The figures below are the X4’s, measured on one.
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: a firmware download per reader 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. From a desktop Chromium browser the flasher writes the firmware over USB with no command line; other browsers use one command line tool. What does not exist yet is a signed app in a store. That is what comes next. Leave an address and you hear from us once, when it is ready.
You are on the list.
You already have the hardware, so you hear from us the day the signed app works. Nothing else lands in your inbox. You do not have to wait for it: the flasher writes the firmware from the browser today, the install page has the firmware images and the APK, 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.