Tactility: An ESP32 OS

(tactility.one)

77 points | by surprisetalk 2 days ago ago

18 comments

  • sroerick 5 hours ago

    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 4 hours ago

      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?

      • estimator7292 an hour ago

        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.

      • bArray 4 hours ago

        > 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.

        • joshmarinacci 34 minutes ago

          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.

        • gregsadetsky 4 hours ago

          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 3 hours ago

            > 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.

  • 5- 3 hours ago

    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.

    • nunobrito 2 hours ago

      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

    • lelanthran 2 hours ago

      > 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 13 minutes ago

        Some variants of the ESP32 support executing code from external memory (PSRAM) too. That gives you 8MB more to play with.

    • Rohansi 3 hours ago

      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.

  • sunshine-o 4 hours ago

    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.

  • NullCascade 2 hours ago

    The Toit language and runtime is also ESP32-focused:

    https://github.com/toitlang/toit

  • Rebelgecko 4 hours ago

    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?