4 ms·
Tactility: An ESP32 OS
- sroerick 1y agoI 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 1y agoI'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 1y 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.
- gregsadetsky 1y agoThanks 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 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 1y 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 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 1y agoWML is (needed) back? https://en.m.wikipedia.org/wiki/Wireless_Markup_Language https://en.m.wikipedia.org/wiki/Wireless_Markup_Language
- 1y ago
- estimator7292 1y agoI'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.
- deleted 1y ago[deleted]
- ACCount37 1y agoJust 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 1y agoI'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 1y agoThere are some available. For example: https://www.quectel.com/product/5g-redcap-rg255c-gl-m2/ 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/ 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?
- rtpg 1y agobeyond 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 1y agoWe 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.
- sroerick 1y agoI remember downloading apps for the TI83 but I only did basic coding stuff in them for extra credit. I genuinely would ask, how do I have fun? Maybe this is a generational thing, but like where would start? I'm interested in demoscene stuff but know nothing about it. I'm just a CRUDmonkey who only knows how to CRUD. I love the idea of carrying around a Pico calc and writing BASIC apps but in 2025 I don't know how to begin in a way that motivates me. Probably a personal weakness, but that's just my experience
- Rebelgecko 1y agoNeat, 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 1y agoSeems to be using ESP now: https://github.com/ByteWelder/Tactility/blob/main/Tactility/Source/app/chat/ChatApp.cpp#L71 https://github.com/ByteWelder/Tactility/blob/main/Tactility/... I think this device is begging for an IRC client though.
- nunobrito 1y agoI 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 1y agoAlso 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 https://github.com/ByteWelder/Tactility/issues/342
- nunobrito 1y agoVery good. I guess will give a new look over there soon to try out the novelties.
- sunshine-o 1y agoThis 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- 1y agointerestingly, 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/HelloWorld/HelloWorld.cpp 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 1y agoYou 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 1y 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 1y agoSome variants of the ESP32 support executing code from external memory (PSRAM) too. That gives you 8MB more to play with.
- elcritch 1y agoPretty 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).
- NullCascade 1y agoThe Toit language and runtime is also ESP32-focused: https://github.com/toitlang/toit https://github.com/toitlang/toit
- snvzz 1y agoDoes this support the recent RISC-V based ESP32s, or is it restricted to just legacy devices?
- lioeters 1y agoI 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 1y agoThis is, AFAICT, not an OS.
- stonogo 1y agoI'm not sure a definition of "operating system" that doesn't cover this software is particularly meaningful.
- mrheosuper 1y agoit'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 1y agoWhat would be your definition of an OS?
- mrheosuper 1y agoAt least have a scheduler. That's bare minimum.
- iamflimflam1 1y agoWould define MS-DOS as an operating system?
- mrheosuper 1y agoLater 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 1y ago
- elcritch 1y agoLooks 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 https://github.com/elcritch/nesper 2: https://github.com/elcritch/nesper/blob/devel/src/nesper/networking/usb_ppp_dualcdc.nim https://github.com/elcritch/nesper/blob/devel/src/nesper/net...
- iamflimflam1 1y agoI’m probably missing it - but are there any instructions on how to add support for another board?