We recently added ESP32-C5/C6 support with WiFi to espressif QEMU. Having ability to spin up virtual machines speeds up development quite a bit. We can now take our production firmware image, and run it unmodified on QEMU. No more waiting for boards to flash, spinning up multiple boards instantly.
https://github.com/CognitiveSystemsCorp/qemu_esp
I tried this a while back and found it ended up being easier to just give the firmware agent a dedicated machine, there’s so much low-level stuff you want access to for iterating on firmware, and the docker layers kept confusing the agents when they were debugging faults, crashes, brownouts etc.
Combining a dedicated small machine with a USB hub that supports per-port power cycling lets the agent iterate and un-wedge stuff with no human intervention for very long (days) periods. Obviously any software produced that way is unusable, but it’s incredible for debugging. Agent gets a programmable oscilloscope, power-cycling, and peripherals (also power-cycleable) emulating the various things our product talks to in the wild.
TL;DR I found the docker layers just caused confusion for the agent and giving her an old laptop was way simpler and much more powerful
I have to agree. Attaching both hardware and networks to Docker containers is still incredibly cumbersome unreliable and generally garbage. Can't do most things on the fly, if at all. Especially annoying in compose setups or when building a container. Even outside the context of AI agents.
Not ESP32, but development in general with (let's just say) "AI", I've gone to a dedicated machine. I'm not sure how many peers have told me, or articles I've read, saying to use containers/VMs/whatever, but taking an old-but-still-decent business class laptop, slapping Ubuntu on it, and running right in the native OS has so much less admin overhead.
I can just turn it off. I can unplug it from the network if I'm worried. I can easily isolate it network-wise using just a VLAN and normal firewalls. Hardware connectivity (ESP32 stuff I'm doing this weekend) -- as you describe -- is just easier.
I find this a rather interesting quirk of linguistics. In many languages, nouns have a "grammatical gender". For example, in Czech, "inteligence" has a feminine grammatical gender, so you are supposed to use feminine pronouns when refering to it. This sometimes leaks through with ESL people. I wonder if speakers of these languages anthropomorphize AI (or even animals or non-living objects!) more than native english speakers...
It's annoying enough if "small" projects can't refuse to use LLMs to write their documentation, but large companies? There's really no excuse to use LLM garbage to write stuff intended for human consumption.
We recently added ESP32-C5/C6 support with WiFi to espressif QEMU. Having ability to spin up virtual machines speeds up development quite a bit. We can now take our production firmware image, and run it unmodified on QEMU. No more waiting for boards to flash, spinning up multiple boards instantly. https://github.com/CognitiveSystemsCorp/qemu_esp
I tried this a while back and found it ended up being easier to just give the firmware agent a dedicated machine, there’s so much low-level stuff you want access to for iterating on firmware, and the docker layers kept confusing the agents when they were debugging faults, crashes, brownouts etc.
Combining a dedicated small machine with a USB hub that supports per-port power cycling lets the agent iterate and un-wedge stuff with no human intervention for very long (days) periods. Obviously any software produced that way is unusable, but it’s incredible for debugging. Agent gets a programmable oscilloscope, power-cycling, and peripherals (also power-cycleable) emulating the various things our product talks to in the wild.
TL;DR I found the docker layers just caused confusion for the agent and giving her an old laptop was way simpler and much more powerful
I have to agree. Attaching both hardware and networks to Docker containers is still incredibly cumbersome unreliable and generally garbage. Can't do most things on the fly, if at all. Especially annoying in compose setups or when building a container. Even outside the context of AI agents.
Not ESP32, but development in general with (let's just say) "AI", I've gone to a dedicated machine. I'm not sure how many peers have told me, or articles I've read, saying to use containers/VMs/whatever, but taking an old-but-still-decent business class laptop, slapping Ubuntu on it, and running right in the native OS has so much less admin overhead.
I can just turn it off. I can unplug it from the network if I'm worried. I can easily isolate it network-wise using just a VLAN and normal firewalls. Hardware connectivity (ESP32 stuff I'm doing this weekend) -- as you describe -- is just easier.
[flagged]
I find this a rather interesting quirk of linguistics. In many languages, nouns have a "grammatical gender". For example, in Czech, "inteligence" has a feminine grammatical gender, so you are supposed to use feminine pronouns when refering to it. This sometimes leaks through with ESL people. I wonder if speakers of these languages anthropomorphize AI (or even animals or non-living objects!) more than native english speakers...
- stupid question on a slightly unrelated note
- can someone with expertise in docker tell me why this guy is using isolate on top of docker to run untrusted user code? https://github.com/engineer-man/piston/blob/master/api/src/j...
Seems a bit over bloated?
We're using Rust with embassy on the esp platform and its quite wonderful.
We have all peripheral modules isolated and have non-peripheral modules compatible with an embassy desktop scheduler and mock peripherals.
Harnesses are good enough now that you can get them in a loop with the actual hardware.
The next step is to hookup a Saleae and have the agent test against actual signals.
This seems the natural evolution of what used to be:
1. A laptop with the development environment (DOS or Windows) kept in a box to use for updates / fixes
2. A VM on a NAS to use when a firmware in maintenance needs a fix
With more embedded tooling available on Linux, a docker image becames a natural choice.
I’ve been using OrbStack for that, you can attach any USB device to a container.
Now we need a full virtual chip in docker to simulate it. That would be incredible.
Is this what you want? https://docs.espressif.com/projects/esp-idf/en/stable/esp32/...
Also:
- https://wokwi.com/
- https://github.com/davidmonterocrespo24/velxio
Like this? https://renode.io/
It's annoying enough if "small" projects can't refuse to use LLMs to write their documentation, but large companies? There's really no excuse to use LLM garbage to write stuff intended for human consumption.
Do better.
Is there any documented evidence where the "do better" spell was shown to work?
Can't think of any but public shaming is warranted.
Sounds like pure self-gratification.
No, at the very least it can help surface a trend or get the movement going.
Everything happened for the first time sometime.
[dead]