[HN Gopher] Tactility: An ESP32 OS
       ___________________________________________________________________
        
       Tactility: An ESP32 OS
        
       Author : surprisetalk
       Score  : 188 points
       Date   : 2025-09-29 13:11 UTC (3 days ago)
        
 (HTM) web link (tactility.one)
 (TXT) w3m dump (tactility.one)
        
       | sroerick wrote:
       | I bought a Picocalc and I have to confess I don't know what to do
       | with it. Picomite looks like a pretty awesome and capable BASIC
       | implementation, but it doesn't seem like there's any wifi
       | capability at all.
       | 
       | I suppose I could do read write on an SD card but that's a lot of
       | legwork for a not great workflow.
       | 
       | I'd love a simple device like the pico calc which I can use to
       | hit a simple api endpoint. Clockwork PI and full Ubuntu seem a
       | little bit like overkill.
       | 
       | I'd like to have a cool BASIC or Forth implementation and use a
       | fun stack like that, but without being able to hit an API I'm not
       | sure I will be motivated to use it.
       | 
       | This seems like a big improvement here, maybe I take a look at
       | the LilyGo. I'm impressed
        
         | gregsadetsky wrote:
         | I've been surprised personally that there are now a number of
         | these small qwerty-LCD portable devices (that mostly resemble
         | blackberries), but very few? (certainly not none..??) of them
         | boast actual 3g/4g ie "real" cell phone connectivity
         | 
         | I might personally find it a lot more tempting to use a super
         | DIY device (ie a baroque OS, unique input devices, etc.) if I
         | could also make calls out to the public Internet (to read
         | wikipedia? answer SMS? fetch any sort of map/transit info?)
         | 
         | Feel free to pile on and tell me which devices I've missed..!
         | :-) I'm sure there must be some out there, considering that
         | "cell phone in a chip" is pretty much a whole category now ie
         | the qualcomm snapdragon chips, mediatek, etc.
         | 
         | ... (reading more about it) actually, is it true that
         | design/certification of a small device that boasts a cellular
         | module is a lot harder than an esp32/wifi-only board? which
         | explains why there isn't a plethora of cell-internet-enabled
         | devices?
        
           | bArray wrote:
           | > I might personally find it a lot more tempting to use a
           | super DIY device (ie a baroque OS, unique input devices,
           | etc.) if I could also make calls out to the public Internet
           | (to read wikipedia? answer SMS? fetch any sort of map/transit
           | info?)
           | 
           | A browser would be quite tough on such an embedded system,
           | you would need to really think outside of the box. The issue
           | is that a browser could easily need more space to render than
           | is available, have tonnes of images, require JS, etc.
           | 
           | On my machine. the lightweight browser dillo is 852kB, and
           | that doesn't include the shared libraries (I could 26 on my
           | machine). It's not going to be easy to get a similar
           | experience running.
           | 
           | > Feel free to pile on and tell me which devices I've
           | missed..! :-) I'm sure there must be some out there,
           | considering that "cell phone in a chip" is pretty much a
           | whole category now ie the qualcomm snapdragon chips,
           | mediatek, etc.
           | 
           | I'm hoping to add to the list of devices myself maybe next
           | year. It's a very difficult space to operate in.
           | 
           | > ... (reading more about it) actually, is it true that
           | design/certification of a small device that boasts a cellular
           | module is a lot harder than an esp32/wifi-only board? which
           | explains why there isn't a plethora of cell-internet-enabled
           | devices?
           | 
           | For the most part you can get already certified modules,
           | where the ESP32 is itself largely one of these modules (the
           | small ones with the metal body on a thin PCB). I think
           | cellular is mostly avoided due to the increase in BOM, and
           | you're not easily going to get 4G/5G support.
        
             | gregsadetsky wrote:
             | Thanks for your reply! Good point re: browser but I guess
             | that's where my excitement about the possibilities lies: I
             | wouldn't mind an extremely under-resourced device. RSS
             | feeds and text content could be sent (and wouldn't require
             | specialized rendering), vector maps and points of interest
             | or transit info could be super minimal in terms of
             | bandwidth/rendering requirements, etc.
             | 
             | I think that I want a 5G tty qwerty terminal..? :-)
             | 
             | aka https://github.com/rastapasta/mapscii for maps, etc.
             | 
             | > and you're not easily going to get 4G/5G support
             | 
             | Sorry, what do you mean by that? In the sense of 4G not
             | being that supported vs 3G? As in the chips aren't
             | available? Or 4G service is hard to find..?
             | 
             | Cheers
        
               | bArray wrote:
               | > I wouldn't mind an extremely under-resourced device.
               | RSS feeds and text content could be sent (and wouldn't
               | require specialized rendering), vector maps and points of
               | interest or transit info could be super minimal in terms
               | of bandwidth/rendering requirements, etc.
               | 
               | A compromise might be to send the traffic via a proxy
               | that pre-resizes images, renders content and chops it up
               | into a manageable format for a resource constrained
               | device.
               | 
               | > I think that I want a 5G tty qwerty terminal..? :-)
               | 
               | > aka https://github.com/rastapasta/mapscii for maps,
               | etc.
               | 
               | For resource constrained devices, it's probably easier to
               | render the vector graphics. There's a few open end points
               | out there that could make it feasible for basic
               | navigation.
               | 
               | > Sorry, what do you mean by that? In the sense of 4G not
               | being that supported vs 3G? As in the chips aren't
               | available? Or 4G service is hard to find..?
               | 
               | You can get them, but they are harder to interface with
               | than the existing 2G/3G chips. Whoever takes on the
               | challenge might have to do some work reverse engineering
               | how to correctly speak to the modem, for example.
        
               | mlhpdx wrote:
               | WML is (needed) back?
               | 
               | https://en.m.wikipedia.org/wiki/Wireless_Markup_Language
        
               | bArray wrote:
               | It would help, but the majority of pages out there are
               | completely unusable without Javascript.
        
             | joshmarinacci wrote:
             | I'm currently working on a browser targeting the T-deck in
             | pure Rust. It's effectively a text mode command line
             | browser good for reading pages with links and nothing else.
             | There just isn't the ram for anything more. Interestingly,
             | The slowest part is actually SSL connections.
        
               | bArray wrote:
               | See the other comment for a MITM large browser server:
               | https://news.ycombinator.com/item?id=45446991
               | 
               | To do everything onboard, maybe, just maybe, you could
               | parse basic HTML/CSS and images. But the majority of
               | pages would of course fail anyway without full support
               | for every modern feature.
               | 
               | This seems like it could be useful:
               | https://limpet.net/mbrubeck/2014/08/08/toy-layout-
               | engine-1.h...
        
             | miki123211 wrote:
             | What you could do is the "opera mini trick", AKA one beefy
             | server, shared between many users, used to run heavyweight
             | browsers. The pre-rendered DOM from these browsers could
             | then be optimized and compressed, HTMX / Liveview style,
             | and sent to the device.
             | 
             | The key insight here is that most smartphones are idle most
             | of the time, so such a server (or group of servers) would
             | need far less processing power than all the smartphones it
             | replaces.
             | 
             | Given a Mitmproxy trace, modern llms could probably quickly
             | build you simple apps for most popular services, leaving
             | the heavyweight browsers for the long tail.
        
               | bArray wrote:
               | Yeah, exactly. I think this could make browsing feasible
               | for small embedded devices. I even had an idea on how to
               | make Youtube possible too with a similar method.
        
           | estimator7292 wrote:
           | I'm no expert, but as I understand the 2.4GHz band has more
           | lax requirements than the cellular bands, but it's not like
           | _ridiculously_ difficult, it 's "just" a matter of money.
           | Especially if you're using off the shelf modules.
           | 
           | But at a practical level, there's really extremely few
           | situations where you actually need a WWAN modem. There's
           | almost always wifi available and if not you almost always
           | have a phone with an internet connection. That aside, a big
           | part of why people make these devices is specifically to get
           | away from always-connected internet devices.
           | 
           | It also may or may not need approval from whichever telco
           | operator you're trying to connect to, and the user has to
           | provide their own SIM and do the legwork to get a
           | subscription. It's just not super practical. Not impossible,
           | but a big pain in the ass for not much benefit.
        
           | ACCount37 wrote:
           | Just about every modem that can do actual real 4G cell phone
           | connectivity is built around a SoC that blows the socks off
           | your usual microcontroller.
           | 
           | The cheapest noname 4G USB stick you can buy now probably has
           | a Qualcomm MSM8916 in it, and runs, I shit you not, Android.
           | 
           | As you can imagine, development with this kind of thing can
           | be rather involved. No open development kits are available.
           | There are no reference designs that don't require you to sign
           | off on an NDA to access it, and Qualcomm wouldn't even want
           | to talk to you unless you are at least "MOQ 100000+" tall.
           | 
           | The best you can do is get an existing modem module that
           | hopefully doesn't bury too many of the interfaces you want,
           | try to run your firmware on it, and then design your own
           | board around that.
           | 
           | Which would probably yield a device that's inferior to most
           | cheap smartphones or even feature phones.
        
             | colechristensen wrote:
             | I'm consistently puzzled why 5G versions of these SoC don't
             | seem to exist for hardware hackers yet. I plain can't find
             | any kind of 5G modem that isn't just a whole phone unless I
             | pay like $1,000.
        
               | cyberax wrote:
               | There are some available. For example:
               | https://www.quectel.com/product/5g-redcap-rg255c-gl-m2/ -
               | it costs around $120 per module. They have others:
               | https://www.quectel.com/5g-iot-modules/
               | 
               | Which is pretty much what it costs for phone
               | manufacturers right now.
               | 
               | I guess the real reason is that 4G is more than
               | sufficient for pretty much anything, and it's going to be
               | supported for the foreseeable future?
        
               | gunalx wrote:
               | Where I live we are already talking about abandoning 2g,
               | and 4g. (3g died a while back and 2g was kept as legacy
               | network).
        
               | cyberax wrote:
               | Really? Even satellites for off-grid messaging abandoned
               | _5G_ and instead went with the good old LTE.
        
             | extraduder_ire wrote:
             | Reminds me of people using esp8266/esp32 chips just for
             | wifi/bluetooth when paired with an AVR chip on an arduino.
        
             | miki123211 wrote:
             | The cheapest noname 4G USB stick you can buy now probably
             | has a Qualcomm MSM8916 in it, and runs, I shit you not,
             | Android.
             | 
             | You're not wrong, see also [1].
             | 
             | > and Qualcomm wouldn't even want to talk to you unless you
             | are at least "MOQ 100000+"
             | 
             | These[2,3,4] definitely aren't MoQ "100000+" (I know this
             | market), and yet they have gotten their hands on Android
             | chipsets somehow, [2] even includes a cellular modem. Not
             | cheap devices by any means though.
             | 
             | [1] https://nickvsnetworking.com/adventures-with-a-10-lte-
             | mifi-d... [2] https://www.blindshell.com/eshop/blindshell-
             | classic-3-eu [3]
             | https://www.himsintl.com/en/blindness/view.php?idx=8 [4] ht
             | tps://www.humanware.com/microsite/bntouch/index.php?srslti.
             | ..
        
               | numpad0 wrote:
               | Those products are almost always sourced from Chinese
               | ODMs. They're the adults in the projects to the eyes of
               | chip vendors, and the ODMs handle the quadrillion MOQ
               | situation between them and vendors. Also products in [3]
               | and [4] don't seem to support cellular? [3] smells
               | AllWinner or MediaTek, [4] specifies TI OMAP in
               | specifications page. Those are less NDA/bajilion MOQ
               | bound.
        
               | ACCount37 wrote:
               | Those specialized devices are usually made in partnership
               | with some third party ODM that's big enough to get
               | Qualcomm's attention. Same for things like warehouse
               | barcode scanners that run Android.
               | 
               | Even if you could get attention of one, and get it to
               | design and make a custom device that wouldn't break the
               | bank? You are still likely to end up with that OEM owning
               | the design and/or binding you with a small pile of NDAs.
               | 
               | Another option would be to find a supplier that can get
               | you some "fell off the back of a truck" smartphone
               | chipsets, and either design your own PCB and roll your
               | own software, or use a "fell off the back of a truck"
               | reference design, SDK and tooling too. You'd need to be a
               | real hardcore motherfucker to do that though.
        
             | M95D wrote:
             | There was a DYI mobile phone project (real mobile phone,
             | with GSM/3G calling and SMS). Abandoned now.
             | 
             | https://github.com/CircuitMess/CircuitMess-Ringo
        
           | rtpg wrote:
           | beyond the unihertz existing, I think that there's probably
           | an interesting space for a device that works on the idea of
           | intermittent internet (i.e. wifi)
           | 
           | Offline maps being a big one that you could maybe "just" do.
           | If you really need to get the device online pull out your
           | phone.
           | 
           | Though I feel like there's loads of stuff that are on LTE
           | etc. Just... they're real companies doing real things and not
           | people hacking together one-offs. Think agtech, vending
           | machines etc.
        
         | pjmlp wrote:
         | We couldn't hit any Web API on TI 8x models, CASIO 8xx series,
         | HP-48 GX, and yet there was plenty of motivation on how to use
         | them for games and demoscene like coding.
         | 
         | No need for Internet for some fun.
        
       | Rebelgecko wrote:
       | Neat, seems like a good way to build a flipper like experience
       | with different utility apps. What is the "chat" app using for
       | sending messages? Something local like BT/Esp now? Or a longer
       | range platform like Meshtastic?
        
         | bArray wrote:
         | Seems to be using ESP now:
         | https://github.com/ByteWelder/Tactility/blob/main/Tactility/...
         | 
         | I think this device is begging for an IRC client though.
        
         | nunobrito wrote:
         | I was writing that app together with the author, the
         | communication is using ESPnow at the moment, albeit Tactility
         | is running on devices with LoRa so it isn't that difficult to
         | extend for LoRa.
        
           | NellowTCS wrote:
           | Also contributor to Tactility, there's a pull request for a
           | LoRa chat app with (I believe) Meshtastic support.
           | https://github.com/ByteWelder/Tactility/issues/342
        
             | nunobrito wrote:
             | Very good. I guess will give a new look over there soon to
             | try out the novelties.
        
       | sunshine-o wrote:
       | This is really great.
       | 
       | There are so many cool use cases for those ESP32 type devices
       | beyond IoT.
       | 
       | Something I was thinking about it turning them into password
       | managers or TOTP tokens. You would just need to be able to run an
       | SSH server on it and have access to basic crypto. Apache NuttX is
       | probably the best candidate for that.
       | 
       | Then you would just need to turn them on or turn the wifi on when
       | needed.
        
       | 5- wrote:
       | interestingly, this is the first esp32 firmware i've seen that
       | claims to support loadable native code applications ("elf apps"),
       | even though it seems to come with only a single example:
       | 
       | https://github.com/ByteWelder/Tactility/blob/main/App/Source...
       | 
       | since a lot of the newer esp32 devices purport to be computers
       | (e.g. lilygo t-deck/t-lora pager, m5stack cardputer, ...), it's a
       | bit strange that with a typical esp-idf setup you can't actually
       | run arbitrary code on them.
        
         | Rohansi wrote:
         | You can technically do it on any processor that allows you to
         | execute code from RAM. Loading ELF files at runtime is a whole
         | process provided by an OS kernel, which ESP-IDF is not.
        
         | lelanthran wrote:
         | > interestingly, this is the first esp32 firmware i've seen
         | that claims to support loadable native code applications ("elf
         | apps"),
         | 
         | Very skeptical that this is of any use; after bootup you have,
         | what ... 260kb of RAM? Just doing runtime linking/relocations
         | would eat up some of that. Just how small would your
         | application have to be to be loaded at runtime?
         | 
         | Maybe they don't load the whole think into RAM, but thunk it
         | somehow (I assume that elf supports that)?
        
           | Rohansi wrote:
           | Some variants of the ESP32 support executing code from
           | external memory (PSRAM) too. That gives you 8MB more to play
           | with.
        
           | elcritch wrote:
           | Pretty sure with xtensa and gcc you can compile to PIC.
           | Google says a linker only would need to modify the Global
           | Offset Table and Procedure Linkage Table. That doesn't sound
           | too terrible.
           | 
           | Also 260kB of RAM on a 32bit processor could be a fair bit of
           | code. Plus you could write it to external or internal flash.
           | Though I don't know if esp-idf supports XIP (Zephyr does).
        
             | mrheosuper wrote:
             | > esp-idf supports XIP
             | 
             | XIP depends on hardware support, not software.
        
           | iberator wrote:
           | There must be some a.out format there or .com like in Dos.
           | Also original Unix run at 48kb of ram
        
           | Cheer2171 wrote:
           | The Apollo Guidance Computer only had 4kb of RAM and got to
           | the moon and back.
        
           | numpad0 wrote:
           | You don't link bunch of stuffs in RAM at execution time on
           | embedded devices... all static and anything static stays in
           | ROM. "eXecute In Place". ROM's just slow RAM that forget
           | writes. Only variables goes on to RAM, and 260kB is enough
           | for a lot of non-multimedia data.
        
           | nerdsniper wrote:
           | Some ESP32's have 8MB of PSRAM and 16MB of flash "storage".
           | You can theoretically also add external SRAM modules but I've
           | never seen that IRL for the ESP32 family. I've occasionally
           | seen the flash used as slower, persistent RAM.
        
         | nunobrito wrote:
         | It isn't easy but flipper did a remarkable work demonstrating
         | it was possible. Tactility is following a similar concept and
         | in my opinion is the project that implemented it best after
         | flipper.
         | 
         | In the past, the solution for arbitrary code was running
         | scripts such as Wrench: https://github.com/jingoro2112/wrench
         | 
         | More recently also became possible to run Java apps with a JVM
         | on ESP32: https://github.com/FlintVN/FlintESPJVM which is not
         | yet arbitrary (e.g. download and run) but that is the route of
         | development.
         | 
         | Even Linux was demonstrated running on ESP32 albeit I've never
         | tried it: https://www.youtube.com/watch?v=pj0a91vlcGo
        
           | anonymousiam wrote:
           | I've been toying with the ESP32 architecture for a few years.
           | (I began with ESP32-DevKitC in 2022.) I recently got four
           | ESP32-S3 modules with the intent of trying out the ESP32 Bus
           | Pirate (https://github.com/geo-tp/ESP32-Bus-Pirate).
           | 
           | I hadn't heard about any Linux ports until I saw your comment
           | here. Thanks!
           | 
           | The "playground" Linux port looks interesting, but it hasn't
           | seen any updates for nearly a year. Still, I'm going to try
           | it on a ESP32-S3 N16R8 and see how it goes.
           | 
           | It's funny, because I first ran Linux (SLS & Yggdrasil) on a
           | PC with a 33MHz clock, 32MB RAM, and a 70MB hard drive. The
           | N16R8 clock speed, RAM, and flash are all within an order of
           | magnitude of what was on that old PC.
           | 
           | https://github.com/ESP32DE/Boot-Linux-ESP32S3-Playground
        
             | nunobrito wrote:
             | Yes, kind of crazy for those of us that remember those
             | days. ESP32 are quite the magical devices when considering
             | the price/features ratio.
             | 
             | If you try the Linux build I'd appreciate to read your
             | feedback/experience when running it.
        
         | mrheosuper wrote:
         | Zephyr support ESP32 and LLEXT
        
         | ByteWelder wrote:
         | That app is just an internal one for when people build their
         | own firmware. The external apps have recently moved to
         | https://github.com/ByteWelder/TactilityApps
         | 
         | It's still not much, but more will be made in the coming
         | months. I wanted to stabilize the APIs a bit more before making
         | more apps. I almost finished a Diceware app.
        
         | solarkraft wrote:
         | I am also looking for this.
         | 
         | I envision an OS that handles networking, remote maintenance
         | and updates and possibly even some scheduling for multiple
         | applications, so that I don't have to do all that in my
         | application code. I don't see what conceptually would make this
         | hard and it would be a great step up in hobbyist development
         | experience to me.
         | 
         | As far as I'm aware NuttX (POSIX-like) even has a shell, so I
         | don't see what should be so hard about it (please correct me).
         | 
         | Edit: Apparently Zephyr is also gaining support for this.
         | Whoever builds a simple platform on top of one of these
         | definitely had my attention.
        
       | NullCascade wrote:
       | The Toit language and runtime is also ESP32-focused:
       | 
       | https://github.com/toitlang/toit
        
       | snvzz wrote:
       | Does this support the recent RISC-V based ESP32s, or is it
       | restricted to just legacy devices?
        
         | lioeters wrote:
         | I see a change log that mentions RISC-V support.
         | 
         | > ## v1.0.0 - 2024-12-09
         | 
         | > * Added support for the following RISC-V chips: ESP32-P4 and
         | ESP32-C6
        
       | mrheosuper wrote:
       | This is, AFAICT, not an OS.
        
         | stonogo wrote:
         | I'm not sure a definition of "operating system" that doesn't
         | cover this software is particularly meaningful.
        
           | mrheosuper wrote:
           | it's just misleading to me, i was expecting a brand new RTOS.
           | 
           | People keep throwing OS into anything that is slightly look
           | like a graphic interface.
        
             | iamflimflam1 wrote:
             | What would be your definition of an OS?
        
               | mrheosuper wrote:
               | At least have a scheduler. That's bare minimum.
        
               | iamflimflam1 wrote:
               | Would define MS-DOS as an operating system?
        
               | mrheosuper wrote:
               | Later vesion of ms-dos has scheduler, so yes.
               | 
               | Early version to me is just a fancy bootloader, that boot
               | whatever program you choose and give up complete system
               | control to that program.
        
               | Imustaskforhelp wrote:
               | There is coreboot which is technically just linux but as
               | the bootloader so a fancy bootloader could have many
               | similarities with a os as although I know that linux is a
               | kernel but I am not really sure as linux is also an
               | operating system as well so the lines are definitely
               | blurry and not as clear I suppose
               | 
               | Fun fact I was actually thinking of a similar idea and I
               | had always known about coreboot but I hadn't known that
               | it was actually invented because someone figured out that
               | the bootloader and the linux kernel had similarities and
               | so that's why. it was an aha moment of me for sorts
               | 
               | I came to know about this from the heads firmware ccc
               | speech yesterday which I am going to link later as I saw
               | it on my pc and I don't have its access right now
               | 
               | See coreboot till then https://www.coreboot.org/ and also
               | a fork of coreboot which removes propreitory blobs iirc
               | https://libreboot.org/ as well
        
               | iberator wrote:
               | yes. It had an Impressive kernel API. It was a single
               | user _by design_. Background resident programs were
               | possible and common btw (TRS) especially after 286 came
               | to the market.
        
       | elcritch wrote:
       | Looks fun! I recently updated my Nim wrapper for esp32 for esp-
       | idf 5.5 [1]. I've been wanting to play with a graphics device,
       | maybe via Tactility..
       | 
       | Also the integrated usb-phy on newer esp32s is pretty handy. I
       | setup a driver to do PPP (!) connection over a USB-CDC serial
       | port with a second serial port for logging [2]. All in 200 lines
       | of Nim and a few Codex/GPT5 prompts.
       | 
       | I got a multithreaded MsgPack RPC server over the PPP connection
       | using IPv6. Unfortunately you can't use CDC mode and USB JTAG, so
       | I have a little rpc based binary uploader.
       | 
       | 1: https://github.com/elcritch/nesper 2:
       | https://github.com/elcritch/nesper/blob/devel/src/nesper/net...
        
       | iamflimflam1 wrote:
       | I'm probably missing it - but are there any instructions on how
       | to add support for another board?
        
       ___________________________________________________________________
       (page generated 2025-10-02 23:01 UTC)