Doing the rounds this week is a new operating system for ESP32 microcontrollers, it’s called Tactility, and it comes from [Ken Van Hoeylandt]. It provides a basic operating system level with the ability to run apps from an SD card, and it has the choice of a headless version or an LVGL-based touch UI.
Supported devices so far are some Lillygo and M5Stack boards, with intriguingly, support in the works for the Cheap Yellow Display board that’s caught some attention recently. The term “ESP32” is now a wide one encompassing Tensilica and RISC-V cores and a range of capabilities, so time will tell how flexible it is for all branches of the family.
We find this OS to be interesting, both in its own right and because it joins at least two others trying to do the same thing. There’s [Sprite_TM]’s PocketSprite mini console, and the operating system used by the series of Netherlands hacker camp badges, We’ll be trying to get a device running it, in order to give you a look at whether it’s suitable for your projects. If it runs well on the cheaper hardware, it could be a winner!

Really cool, it all depends on if it catches on and people make apps for it. Seems pretty well thought out at the moment.
Great article! I found a problem with one of the links:
Right now, that link points to the wrong URL (the same one as the Netherlands camp badges).
Well spotted and now fixed, thanks for that.
Do any of these opensource pocket QWERTY devices do 4G/LTE?
Wouldn’t be hard to interface one to a CYD or really any board with a serial port and one gpio to control power. Modules like the SIM7080G make it incredibly easy to integrate LTE.
That was exactly my first thought as well. If it would do calls (it already has mics and a speaker) and text I would ditch my android for this in a pinch.
+1, would buy/build such a device to ditch Android too! I’ve been working on something similar using a 4G module and a raspberry Pi but I’ve been neglecting the project for a couple of years now :-(
I wonder if this might lead to some FOSS smartwatches. I know about the PineTime but that is pretty old now and it doesn’t look competitive with the features available in rather cheap watches you can find from placeslike Amazfit.
I’d love if we could get something widly supported and not sending all your data off to who knows.
tried it on core2 and it’s really in early stages and kept freezing on me…looks nice though..
Thanks for giving it a try! I have no freezes on my Core2, but Tactility runs the slowest on the Core2 on all devices (10-15 fps?).
Feel free to discuss it on GitHub or Discord – perhaps we can figure out what’s causing it.
i have a cyd with a touchscreen that came as a nerdminer it would be cool to have apps or at least a working
touchscreen ssh client? anybody know of such a thing?
Sounds like a good fit for Capybara (the firmware for the ESP32-based Flipper Zero alternative).
Regarding the range of processors under the “ESP32” umbrella, which can mean an ESP32 with a Tenselica LX6, or an ESP32-S3 with an LX7, or an ESP32-Cx with a RISC-V, this also restricts porting to ARM Cortex-A or Cortex-M machines, for us STM lovers. This is something I’ve been thinking about lately, noticing the number of different architectures on my bench. One solution is to compile code to an intermediate representation (IR), like the one that gcc uses, or to a generic virtual machine like WebAssembly, and then have this translate to the target instruction set the first time it is loaded. Translating from IR to any target instruction set is easier and resource-cheaper than the initial source parsing and optimization part of compilation, by a large factor. But unlike Apple’s Rosetta 2, which they use to translate Intel executables to Apple Silicon code as soon as you load an app, this would only need to be done once for each target instruction set. The translator would convert (for example) from MyApp to MyApp.lx7, and would save that on the SD card, right next to the original. The next time you run it, the loader detects that there’s already a .lx7 version, and just loads that. Even if you used the same card on multiple systems with different CPUs, it would only translate once to each needed target executable, and you wouldn’t need a full compiler on each machine to recompile, just the back end for that architecture. And SD cards are big these days compared to MCU memory, so no worry about running out of space for all of your apps. And if your SD card gets full, you can delete the least-used translations to make some space.
And you might ask, “why not just compile to all popular targets and distribute all of them?” Which is fine except that the developer then has to test all of the architectures, and he’s probably not going to bother with Cortex-M4. You can develop for targets you never knew existed, similar to .net.
I’m sorry I didn’t come up with this sooner – it’s a 10-month-old article. Hmm. Oh well. Anyway, this would mean not just ESP32, but all 32-bit MCUs potentially get another OS.