A SMART BULB TURNED INTO A TINY OFFLINE LIBRARY
A researcher reprogrammed an ESP32 smart bulb to broadcast an open Wi-Fi network and serve digital books from a 2MB filesystem — no cloud, no Wi-Fi credentials left on the device.
by Rick Osgood
Open-hardware
Built withESP32
- difficulty
- ●●●●○
- time
- a weekend
- license
- license not specified
- repo
- repo ACTIVE23 stars
●●●●○ · a weekend · license not specified · 23 stars · repo ACTIVE
WHAT YOU’LL NEED
Jump to section
COMPAREE VERDICT
This is a software project that turns an off-the-shelf ESP32 smart bulb into a local Wi-Fi access point serving digital books. The creator spent significant time trying to add microSD storage, failed, and instead repartitioned the flash so about 2MB of the bulb's 4MB holds the web files and books — enough for a few epubs. The result is a working prototype that broadcasts an open network with a captive portal, hosts a small web library, has a password-protected admin page for the light colour, and supports OTA updates — all without cloud services or stored Wi-Fi credentials. The clever part is the constraint: fitting a web server, filesystem, and books into 4MB total. The catch is that it targets one specific bulb sold with Tasmota pre-installed, and a wrong partition layout can brick it. The project is inspired by a cyberpunk short story and framed around banned books, but the firmware itself is just a local server — what you put on it is your decision. With the bulb from the README and the pre-built binaries, installing is a series of web uploads; customising the books means running the Docker build.
IN THE REPO
GOOD TO KNOW
- —Firmware source, build script and pre-built binaries are public on Codeberg; the repository has no licence file.
- —The full build story is on the creator's blog; installation and usage steps are in the README.
- —Hardware is a single item: the Athom colour bulb with Tasmota pre-installed (ESP32-C3, 4MB).
- —No schematic or PCB files — this is a software project that reprograms existing hardware.
- —The firmware includes a web server, captive portal, admin page and a LittleFS partition for book storage.
Parts to buy
3 itemsFrom our check of the build. Exact quantities and part numbers are in the creator’s BOM.
Can I build this?
This build involves mains voltage — for adults comfortable with electrical work only.
Build at your own risk. Projects involve tools, electronics and sometimes mains voltage — follow the creator’s safety notes.
More builds like this
All projectsGallery
Start here
Navigation into the creator’s own docs — we don’t rewrite the guide, we route you to the source.
- 1.Read the README on Codeberg (The README covers compatibility, building and installation; the blog explains how it was made.)
- 2.Get the Athom colour bulb with Tasmota (This is the bulb the firmware was designed for; it ships with Tasmota pre-installed.)
- 3.Check the partition layout (Open the Tasmota Information page and confirm safeboot 832 KB, app0 2880 KB and fs 320 KB before flashing anything.)
- 4.Flash the firmware over Wi-Fi (Join the bulb to your Wi-Fi, upload library.bin via Tasmota Firmware Upgrade, then connect to the BannedBookLibrary network and upload the filesystem and safeboot images through ElegantOTA.)
- 5.Add your own books and set the admin password (Edit config.toml and password.txt, rebuild the filesystem image and upload it through the admin page.)
Resources
Documentation, files and community threads for this build — we link straight to the original sources and never rehost the creator’s files.
KNOWN ISSUES
- The firmware targets one specific bulb (the Athom colour bulb with Tasmota 14.3.0 pre-installed). Other bulbs, or a different partition layout, may fail to install and brick the device.
- A corrupted partition table can only be recovered over serial, which means opening the bulb — buy a spare, as the creator did.
- Storage is tight: about 2MB is shared by the web pages and the books. The creator's sample epubs were around 350KB each, so expect a handful of books, not a collection.
- The creator tried and failed to add microSD storage, so do not expect to expand capacity without major rework.
- Restoring the bulb is only partial: the restore page brings back most of the factory layout, but the safeboot partition cannot yet be returned to the Tasmota version.
- The captive portal was tested on a recent Android version; other devices may need to open http://192.168.4.1 manually.
- The project is framed around banned books but the firmware is just a local web server — you are responsible for the legal and ethical implications of what you host.
Can I use any ESP32 smart bulb?
No. The firmware was designed for one specific bulb, the Athom colour bulb sold with Tasmota pre-installed (ESP32-C3, 4MB flash). The README asks you to check that your bulb runs Tasmota with a safeboot partition and the layout safeboot 832 KB / app0 2880 KB / fs 320 KB; with any other layout the install may fail and brick the bulb.
How do I load my own books?
Put the ebook files in library/data/html/books, list them in config.toml, run update_config.py, build the filesystem image with ./build.sh filesystem and upload library.littlefs.bin through the ElegantOTA page on the bulb.
Does this connect to the internet?
No. The bulb broadcasts an open access point called BannedBookLibrary with no internet connection and serves the files locally at http://192.168.4.1. No cloud services are needed.
What happens if I flash the wrong firmware?
The bulb can be bricked. A corrupted partition table can only be recovered over a serial connection, which means opening the bulb, so check the partition layout before you start.
Can I add microSD storage?
The creator tried and gave up: reaching the ESP32 pins meant digging the board out of its potting compound, which in his words effectively destroys the bulb. The 4MB flash is the practical limit.
Community builds
No community builds yet — be the first, we feature the best ones.
Discussion1
FROM THE COMPAREE TEAM
The creator gave up on adding microSD storage after significant effort and decided to live with the 4MB limit for the sake of sanity, convenience, and stealth. Would you have done the same, or kept pushing for expandable storage?
Rick Osgood
Rick Osgood is a security researcher interested in infosec, open-source software, and making and breaking things. The project was inspired by Ben Brown's short story 'Library,' about anti-corporate tech resistance.
DISCLAIMER
- Comparee is not the author of the projects featured here. All rights to each project belong to its creator — every page links to the original source, and we never host creators’ files.
- Information is provided without warranty and may become outdated as projects evolve. Prices are indicative bands only — always check the creator’s parts list for current costs.
- Building and operating any project is at your own responsibility. Protective equipment, safe workshop practice and compliance with local regulations are the builder’s responsibility.
CompareeTEAM1d ago
The sources line up: ESP32-C3 bulb with Tasmota, 4MB flash with about 2MB for web files and books, open access point with captive portal, local web server, OTA updates, no cloud. Code and binaries are public on Codeberg, though the repo has no licence file. The main limitation is that only one bulb model is documented, so stick to the one named in the README.