Your books. Your pace. Your reader.
An open-source pocket reader built on ESP32.
Set up your reader · Choose your software · Downloads · Join the community
RSVP Nano brings your books and articles to a small, standalone reader. Rapid Serial Visual Presentation (RSVP) shows text one word at a time; the New UI also offers contextual word chunks. Set your pace, adjust the timing, and open page view whenever you want to browse or find your place.
Your library and reading progress live on the microSD card. Everyday reading works offline, with no account or subscription. The project is free, open source and community-powered, with detailed settings and room to experiment.
Two interfaces, one RSVP Nano project. Choose the experience that suits you. Classic remains available, and an ordinary update keeps you on your chosen interface.
| 0.2.0 · New UI | Classic | |
|---|---|---|
| Interface | A quieter reading screen, consolidated menus, larger touch targets and full-area sliders | The established RSVP Nano interface and controls |
| Reading | Single-word RSVP or centred contextual chunks, with adjustable pacing | Single-word RSVP and page reading modes |
| Book navigation | Scrollable page view, text search and chapter jumps; page view is for browsing | Existing page reading and book navigation |
| Quick access | Middle button opens speed, brightness, Dictionary and the main menu | Existing controls for your board |
| First use | On-device introduction to the buttons, speed, pacing, SD card, book uploads and dictionary | Setup through the web companion |
| Focus | Background reading sessions or standalone timers, presets, full-screen breaks and manual resume | Existing focus timers and orientation controls |
| Customisation | Detailed font, theme, tracking and position settings; per-book settings in Library; guides in Word mode | Existing appearance, reader and per-book settings, including guide geometry |
| Dictionary | Offline English definitions and optional direct Wi-Fi lookup | Not included |
| Books and connections | Existing web companion, USB transfers and Wi-Fi | Existing web companion, USB transfers and Wi-Fi |
| Hardware | Waveshare ESP32-S3 Touch LCD 3.49 Rev1 and Rev2 | All supported boards below |
| Updates | Update New UI or choose Return to Classic on Rev1 and Rev2 | Try New UI on LCD 3.49 Rev1 and Rev2 (Classic v0.1.5) |
| Availability | 0.2.0 preview, selected explicitly on Rev1 and Rev2 | Stable; the default installer choice |
| Source | Rev1 · Rev2 | v0.1.5 |
New UI 0.2.0 Rev1 downloads · New UI 0.2.0 Rev2 downloads · Classic downloads
Rev2 is now supported and has been tested on hardware. Its v0.2.0 port keeps
the same interface, onboarding and dictionary. Choose your revision in the web installer
or switch over Wi-Fi from Classic v0.1.5. Rev1 uses release v0.2.0; Rev2 uses
v0.2.0-rev2.1. Each release has its own board-specific files.
This release focuses on the interface, onboarding and dictionary. Voice notes, transcription, Bluetooth phone sync and the experimental new phone app are being developed separately and are not included in 0.2.0.
Space to read![]() |
Your book, one menu away![]() |
Controls when you need them![]() |
Definitions without leaving the reader![]() |
New UI screens rendered by the firmware’s production renderer with sample content.
You need a supported board, a USB-C data cable and a FAT32 microSD card. An 8–32 GB card is a straightforward starting point.
- Open the web companion in desktop Chrome or Edge.
- Choose your exact board and revision, then Classic or New UI (preview) · 0.2.0 where listed. Both LCD 3.49 revisions offer New UI.
- Follow the flashing steps. The New UI’s introduction walks you through the controls.
- Add books from the companion’s Library screen: EPUB, RSVP, text, Markdown, HTML or XHTML.
- Open a book on the Nano and make the pace your own.
Wi-Fi is optional for reading. Books can be transferred over USB or through the local Wi-Fi companion. You can replay the New UI introduction under Settings → Help.
Already using a Nano? Back up your SD card and leave Erase first off in the web
installer. Match the firmware to your board revision. For manual browser installation,
use the merged .bin; the -ota.bin is for application-only OTA updates.
Setup, connection and installation details →
On LCD 3.49 Rev1 and Rev2, in the New UI’s Firmware updates, choose Check current software to stay on New UI, or Return to Classic to change interfaces. The reader shows the selected version before you confirm. It downloads over Wi-Fi and restarts after installation.
Classic v0.1.5 provides Try New UI on both revisions (Rev1 also supports it in v0.1.3–v0.1.4). If your Classic version has no selector yet, update to v0.1.5 first, then choose Try New UI. If older firmware reports rsvp-nano-ota.bin missing, retry the official update; the legacy filenames are included.
The browser installer also offers both interfaces for both revisions. Classic's
manual full-flash downloads are bundled in rsvp-nano-browser-installers.zip;
the browser installer selects the correct image for your board automatically.
If you already installed the tested v0.2.0-rev2.1 candidate, you have the published
firmware: its update check will show that it is current, and Return to Classic
now has a published target.
Switching installs a different firmware; it is not a live appearance toggle. Both use the same SD library, but Classic may replace New UI-only preferences when it saves. Keep an SD backup if you want to restore your exact settings.
Switching, advanced update sources and manual installation →
English is available now. More languages are planned. Install the dictionary once on your SD card, then look up words offline without a phone, account or server.
- From the reader: press the middle button → Dictionary → ? → Install / manage dictionary, then Install dictionary. You can also install it during onboarding. The download uses Wi-Fi and takes about 48 MiB on SD, with progress and verification.
- From a computer: download the English dictionary ZIP,
extract it, and copy the
dictionariesfolder to the root of the SD card.
Look online is optional: it sends the lookup word directly to Wiktionary over Wi-Fi. The book is not uploaded. Offline lookup remains available when an online request fails.
The pack is adapted from Open English Wordnet 2025. Dictionary data is versioned separately from firmware, and compatible custom packs can still be copied to SD. Keep the pack’s attribution and licence files when sharing it.
Manual installation, custom packs and dictionary licences →
New UI 0.2.0 supports LCD 3.49 Rev1 and Rev2 through the web installer, on-device updates and source builds. Classic supports all boards below. Choose the exact board revision when flashing; firmware is not interchangeable.
Board list, build targets and purchase links
| Board | PlatformIO environment | Distribution |
|---|---|---|
| Waveshare ESP32-S3 Touch LCD 3.49 rev1 | waveshare_esp32s3_touch_lcd_349_rev1 |
Web installer, OTA, source |
| Waveshare ESP32-S3 Touch LCD 3.49 rev2 | waveshare_esp32s3_touch_lcd_349_rev2 |
Web installer, OTA, source |
| Waveshare ESP32-S3 Touch AMOLED 1.8 V1 | waveshare_esp32s3_touch_amoled_18_v1 |
Web installer, OTA, source |
| Waveshare ESP32-S3 Touch AMOLED 1.8 V2 | waveshare_esp32s3_touch_amoled_18_v2 |
Web installer, OTA, source; still experimental |
| Waveshare ESP32-S3 Touch AMOLED 2.06 | waveshare_esp32s3_touch_amoled_206 |
Web installer, OTA, source |
| Waveshare ESP32-S3 Touch AMOLED 2.16 | waveshare_esp32s3_touch_amoled_216 |
Web installer, OTA, source |
| Waveshare ESP32-S3 Touch AMOLED 2.41 V1 | waveshare_esp32s3_touch_amoled_241 |
Web installer, OTA, source |
| Waveshare ESP32-S3 Touch AMOLED 2.41 V2 | waveshare_esp32s3_touch_amoled_241_v2 |
Web installer, OTA, source; hardware validation pending |
| Waveshare ESP32-C6 Touch LCD 1.47 | waveshare_esp32c6_touch_lcd_147 |
Web installer, OTA, source |
Match the LCD 3.49 firmware to the board revision. Rev1 and Rev2 use different backlight, display-reset and interrupt wiring; do not interchange their binaries.
For AMOLED 2.41, choose V2 only for a Rev2.0 PCB or V2 QC label. Reset/interrupt wiring is different; V1 and V2 firmware are not interchangeable. Both use the regular UI.
The following purchase links are affiliate links. A purchase may support RSVP Nano at no extra cost to you:
RSVP Nano continues as the free, community-powered, experimental platform. We’re keeping the detailed settings, the DIY and self-hosted possibilities, and development for existing Waveshare readers.
Alongside it, we’re building Pocket Lines for people who want a reader they can buy and start using straight away: preinstalled software, a simpler device experience and services that don’t require self-hosting. A dedicated device with an OLED screen, more physical buttons and a metal casing is in development. These are early plans.
The projects now have separate development tracks and repositories. Both projects’ software will remain open source. Our commitment is for every Pocket Lines software feature to have a DIY or self-hosted equivalent in RSVP Nano as development progresses. That is the direction of travel, not a claim that every planned feature is available today.
Join the shared community and help shape what comes next →
The web companion handles setup, flashing, book conversion, USB transfers and local-network management. Existing Android and iOS companions can be built from source. They share the Kotlin conversion and device logic; the experimental new phone app is a separate development effort.
Books and articles live under /library/books and /library/articles on the SD card.
Fonts, themes, language packs and settings are stored alongside the library. Reader
indexes can be rebuilt; hidden .rstate.toml files preserve progress and per-book settings.
Always eject USB mass storage before disconnecting the reader.
Configuration and storage · Reader fonts · Themes · Language packs
Bug reports, feature ideas and focused pull requests are welcome. Tell us Classic
or New UI, your firmware version, board revision and the steps to reproduce.
Use main for Classic firmware work and release/ui-dictionary for New UI on Rev1.
The tested Rev2 port lives on work/ui-020-rev2.
Build firmware and companion apps from source
Clone submodules first:
git clone --recurse-submodules https://github.com/ionutdecebal/rsvpnano.git
cd rsvpnanoThe default main branch builds Classic. For the exact Classic maintenance release,
use tag v0.1.5. For the exact New UI 0.2.0 release source:
git fetch --tags
git switch --detach v0.2.0
git submodule update --init --recursiveThe published v0.2.0 tag and release/ui-dictionary target LCD 3.49 Rev1.
For the Rev2 release, use its separate tag below.
Install PlatformIO, then build one target:
pio run -e waveshare_esp32s3_touch_lcd_349_rev1Upload to a connected board:
pio run -e waveshare_esp32s3_touch_lcd_349_rev1 -t uploadRun native firmware tests:
pio test -e native_testThe v0.2.0 Rev2 port has passed an owner test on a confirmed Rev2 board, both LCD revision builds, and update/dictionary checks. A Rev2 1000 WPM benchmark and on-device firmware switching have not yet been verified.
From a clone of this repository, check out the Rev2 release and export its firmware:
git fetch origin --tags
git switch --detach v0.2.0-rev2.1
git submodule update --init --recursive
python3 tools/export_web_firmware.py --env waveshare_esp32s3_touch_lcd_349_rev2In the web companion, select LCD 3.49 Rev2 → Choose a firmware file, then use
build/firmware/rsvp-nano-esp32-s3-touch-lcd-3.49-rev2.bin. Keep Erase first off
and back up SD settings/progress first. The separate -ota.bin is for OTA delivery,
not the browser's merged-file installer. The English dictionary pack is shared
with Rev1; an existing pack can stay on the SD card.
Rev2 implementation and validation notes →
Companion builds require JDK 17. Android also requires the Android SDK; iOS requires macOS and Xcode.
# Browser tests and staged Pages distribution
./gradlew checkWeb
# Shared tests and Android release build
./gradlew checkAndroid
# Shared iOS compilation and simulator tests
./gradlew checkIosThe staged website is written to build/webSite. Detailed native setup is in the
Android and
iOS guides.
For changes, build the affected target and run the relevant tests. Keep board-specific behavior in its platform directory and reuse the shared companion/conversion logic. Include physical-device results when changing display, touch, power, storage or USB.
Report an issue · Companion API · USB protocol · Conversion format · Hardware architecture
RSVP Nano is distributed under the MIT license. Fonts and third-party libraries keep their own licences. Offline dictionary data is based on Open English Wordnet under CC BY 4.0, with the underlying WordNet notices preserved; online definitions come from Wiktionary under CC BY-SA 4.0. See the dictionary attribution and setup guide.



