Have you ever spotted something in a catalog or on a website and just known you had to build a project around that one part? That’s how [nilseuropa] felt about the Waveshare ESP32-S3-RLCD-4.2, which — as you might guess from the name — pairs an ESP32-S3 with a reflective LCD. With a screen reminiscent of a palmtop of yore, [nilseuropa] wanted a personal device, and needed something to run on it. That’s where Solar OS comes in.
Physically he’s paired the Waveshare board with a mini keyboard and put them together in a handsome 3D printed case with a battery. The slabtop form-factor was more for ease-of-creation than any preference; in the project’s reddit thread [nils] is reaching out for help making something cooler, possibly of the palmtop form-factor. He also describes some of the thinking behind his operating system.

He’s not starting entirely from scratch: it’s based on FreeRTOS and the ESP-IDE toolset. Right now all applications are built with the OS into a single binary, while the SD card on the Waveshare board handles persistent storage. The interface is pure text, with all applications launched via shell commands. That doesn’t mean you have to go back to your PC to add anything, however.
The system is user-programmable, with Python and Lua scripting as “first class citizens”, having access to the hardware through the Solar OS APIs. As for the applications built into the firmware, it looks like along with the serial terminal, you get quite a lot: an orthodox file manager à la Norton Commander, networking tools that include a web browser and chat client, MP3 player, image viewer, text editor, games, and more.
While they are obviously pretty niche projects, we do appreciate that there’s a growing collection of homebrew operating systems that you can run on your bespoke computing device.

I think i may be possible to add a PV element layer to the bottom layer of an LCD and get solar charging from the display from ambient light.
Just a thought i had looking at a glass PV element from a garden lamp….
I bought a version of this reflective LCD but with an easier connector, and it is slightly translucent.
There are solar watches that put their solar panel underneath a mother of pearl dial, so why can’t we do the same thing and get an ultra-efficient harvesting circuit?
My thoughts precisely…
If you think about that stack in a LCD panel the bottom layer is mostly made from Mylar mirrors.
Most people that want this sort of device would be impressed if part of the process involved adding the PV glass in lieu of the common reflective layer… than as it’s powered off it can recover even large cells over time just being in light.
The Display is a large part of all systems like this, It would be trick to figure out a thin layer PV to insert into a common display and add that option.
If enough hackers start doing it, China will add the function to commercially sold parts soon enough.
It just seems like lost real estate a crafty person can capitalize on adding solar recharge to the already watt sipping ESP32 setup.
Perhaps a multi battery setup if the device is outside a lot…
It really made the wheels spin as i read the story….
🚨 DO NOT BUY THIS FOR A CYBER DECK 🚨
Not to be a downer but that display is so fragile there’s no way it’s can be a viable portable cyberdeck.
It literally has a warning sticker on the display when you buy it.
Y’all need to understand how fragile it is. It is the most fragile display I’ve ever handled.
If you drop it 2 inches it will delaminate and be permanently broken.
I bought 3 of these for a project (as did a friend) and broke multiple units with normal handling.
Don’t buy this display if you have hands.
It’s packaged in 4 inches of foam for transport.
If you mount this as in a car dash, for example, road bumps will literally destroy the entire display. I’m not exaggerating.
You have been warned
I wonder if mounting it on foam would improve its survivability
A PV panel almost by definition is dark: By design it absorbs light.
Reflective LCDs are fighting for every bit of contrast and visibility they can deliver. Making the background darker by turning it into a PV substrate won’t be helping matters.
You’ve got just as much black surface area in all the surrounding areas: Make THAT PV area.
Look at a solar cell on a calculator…
Put that just above the mirror layer on the bottom.
In full light it will give enough wattage to run the whole thing and even offer a bit of charge to the battery.
Not all solar cells are dark.
It’s all in the engineering tradeoffs, isn’t it? A naked, uncoated/untextured (and cheap) silcon PV cell reflects 60 percent of the light falling on it. Meaning it’s crappy as a solar cell, automatically having less than half the output compared to a cell that has coatings to optimize absorption.
So, sure, you could use a crappy solar cell as a bad reflector behind a LCD. The LCD polarizers and other layers let (much) less than half the light through. So your solar cell is now producing less than 20 percent of the power compared to a decent cell in direct light, plus your LCD is half the brightness and contrast compared to one with a conventional reflector behind it.
That’s the engineering tradeoff you have to decide is one you want to make.
haha man i want to tell you about the negativity in my soul, and perhaps not say anything meaningful about this project at all.
i see a project like this — just the headline and photo — and i immediately have two thoughts: this will never be used, and it shouldn’t use the raspberry pi. and what i’m sad about is that just recently, in the past few months, i have come to always think a third thought, even more negative than the first two: the software is the lowest grade of slop and offers a stochastic dream-like vision of what it is to use a computer.
so i looked in this project for a mirror of my black soul, and i still think it will never be used. but i was wrong — and gladly so! — about raspbery pi. it’s esp32, imo a perfectly suitable processor for such a device. and honestly the software development is absolutely inscrutable to me. compared to the lowest grade of slop, it seems to incorporate a lot of open source projects, which is a great way to add a ton of features in short order. but all of the commits are massive mega-commits with multiple huge steps in one commit…so i really can’t imagine, how was this process performed? did someone ask chatgpt to incorporate open source projects? like, if the timestamps in the commits mean anything, then this was done by someone who is extremely efficient at the task of porting open source projects to a new platform, one way or the other.
so i guess i’m left with questions about how dark the world is, compared to my soul, haha. it’s sure eerie to see people doing things i always dreamed of doing, but the scale of the accomplishment is unclear now.
You ok?
you tell me, man
He sounds like a jaded maker who found an honestly intriguing project.
I think it might be the epitome of personal computing: you not only build your own system from components, but also build the software that runs on it. Completely personal. And AI is the enabler here.
Of course all that software has been written by someone at some point. But it’s open source, and all that’s required is to attribute the maker(s).
I do see one big negative thing here. Open source software requires anyone who makes changes to the source code, e.g. fixes or new useful functionality, is required to port that back into the original. And that is not happening here. For two reasons probably. The first being that the changes are probably AI slop and are in no shape to contribute to the original code. The second being that people see software as a commodity instead of something that took people blood, sweat and tears to create. Open source software is devaluated by AI because the people making changes to it have it so easy, don’t understand the effort, and cannot contribute to it because their AI code is simply only suitable for their own personal use and not suitable for publication.
On the other hand, you can say that nothing is lost. Because those people would probably have never contributed to Open Source anyway.
Maybe you could say that all that is lost are possibilities: if those people who vibe code AI slop for themselves only would have learned to properly program, they possibly could have made a contribution for everyone instead of just themselves.
:D oh jeez, Greg…
This is a staged source release, so the history is a bit misleading. The commits are “mega” because each release bundles together a lot of work that happened on development branches, hiding all the little one-line commits. The timestamps have a simple explanation too: there was already a working prototype in another repository. It’ll probably get a lot slower from here on.
You’re also not wrong about the LLM. It can type faster than humans can talk. It took me a while to get comfortable using it, but I’ve come to see it as just another tool. This is a hobby project I work on in whatever free time I can find, and that free time is barely existent, so I figured: why not use every tool available? I wouldn’t carve a sculpture with a rock if I had a good set of chisels.
What eventually changed my perspective is that the value of software isn’t really in the typing. It’s in deciding what to build, choosing between competing approaches, debugging, integrating everything, and knowing when something is wrong. The LLM can generate code at an absurd speed, but it can’t decide which code belongs in this project. That’s still the interesting part.
I think there’s still a point where you can honestly call what you create your own. Maybe it’s time we stop equating authorship with the physical act of typing and start thinking more about intent and judgment. I do wonder whether a lot of our discomfort with these tools comes from the culture we grew up in rather than from anything fundamental about creation itself.
thanks! i wondered if that wasn’t how the commit history was created. i’m a huge fan of a million little commits and i just didn’t know what to make of your methodology.
i’m cleaning up after an LLM for the first time at work and it is everything i feared…using the software is like dreaming. it notionally does the right thing but if it does it twice or three times or zero times makes no difference to the LLM that created it. i’m glad you’re having fun but i think if you use this product much you’ll find some very odd behavior. fundamentally, software is about choices, and choices the LLM made are not grounded.
I do share your concern. I think so too that we are in a very dark place for several reasons.
Without getting too philosophical, I struggle with both the economic and ecological implications of large models. The current incentive structure is unhealthy: companies need ‘constant growth’, so increasingly powerful tools are being used to let digitally illiterate users generate mountains of low-value content that consumes enormous amounts of water, energy, hardware, and storage. That cycle deserves regulation, at least until these systems become substantially more efficient and genuinely useful.
The cultural shift concerns me just as much. We increasingly assess work by its output rather than by the understanding, craftsmanship, or judgment behind it. If the value of an essay, a piece of software, a painting, or even scientific work becomes indistinguishable from something generated in seconds, our assessment gradually moves away from mastery and toward volume and immediacy. That changes what society rewards, and culture inevitably follows.
That said, I’ve been programming for over 30 years—in academia, at a media lab, and now in a mission-critical engineering field. I’ve experienced the beauty of writing software: the clarity, discipline, and flow that comes with solving problems through code.
I’d be dishonest if I claimed AI isn’t liberating. It handles repetitive work faster and often with fewer mistakes than my tired brain after a long day. I’d also be dishonest if I said I don’t wrestle with the ethical questions or the uncanny feeling these systems evoke. But I also have enough experience in machine learning to know there’s no sentience hiding behind interactive retrieval and statistical reasoning.
So yes, I am a user: and I feel forced – to remain competitive… To preserve the last crumbs of my self respect, I treat the LLM as a tool that one has to master and I use it only for very clearly bounded tasks: small, concrete changes with limited complexity and an outcome I can inspect. The important part is that every step has to be verified. I don’t treat generated code as trusted code. I check the diff, run tests, and read the result as if it came from a junior developer who is fast, confident, and dangerously wrong most of the time.
The world may be on fire, but that doesn’t mean we should give up our agency. Change begins at the personal level. Make your corner of the world a little better—and don’t forget to have some fun along the way.
Well said.
thanks for indulging this conversation. i’m still thinking about it.
i think you hit something with, “It handles repetitive work faster and often with fewer mistakes.” My first thought was that you’re probably wrong — the code i’m working on, at least, has numerous subtle errors from repetitive segments. The repetition isn’t exact, because it keeps hallucinating differently from moment-to-moment about the downstream consumer. And it is doing so much repetition because it factored poorly (and inconsistently!).
But now i think my reaction missed the point.
The thing is, there is very little repetitive work. And what there is, i work to minimize. Not to reduce my workload as a typist, but rather to make it easier on the guy reading / verifying / updating the code. So i’m constantly making decisions around factoring to try to minimize repetitive work. And really, i’m just constantly making decisions.
Like, sure, we all sometimes have to like copy-paste a hundred lines of code and re-indent it or add/strip ” marks or line breaks or add “, 1” to every function call or something…and if i find myself doing any quantity of that, i run the escalation ladder from nvi to sed to perl.
And repetitive work, when it comes up, isn’t draining. It does take wall time but it doesn’t eat my soul. What’s expensive is when i discover a decision i have to make, but i haven’t made yet. I will spend all day dreaming up a system, and then i go to build it and the second line of code i have to write, i discover the dream was incomplete. I have to make one more decision!
And i think if you aren’t letting the AI shove its way through situations like that then you aren’t getting any genuine utility out of it. And if you are, then it’s making (and re-making) decisions that you don’t have any idea about.
At some point maybe only the result matters but i think decisions matter if you aren’t going to throw it away immediately.
And anyways, the part of me that wants to build bespoke utilities exactly to my specifications doesn’t play well with external decision making :)