Open-source collective

Software for embedded systems and small machines.

Emulators, firmware, test benches and developer tools for microcontrollers, radios, sensors and displays, built in the open.

The name

mikro+verk

verk (Swedish): a works, and a work.
stålverk: a steel mill.
konstverk: a work of art.
mästerverk: a masterpiece.

In Swedish, verk can mean an industrial works (stålverk, a steel mill)—or the work of an artist: art, music or literature (konstverk, mästerverk). Mikroverk brings those meanings together: a small workshop, and the things we make in it.

Microcontrollers keep their workings behind a sealed case: registers, buses, radios and the firmware that drives them. Mikroverk builds the tools for opening them up: emulators that run the real code, test benches that give the same answer every time, and firmware and developer tools for the boards on our desks. Everything is open source, so anyone can see how the machine works.

It started with one chip family and a browser tab. esp32sim boots unmodified ESP32 firmware, mask ROM and all, so code can be run, watched and tested without a board. Cooja-NG does the same for a whole network: real Contiki-NG firmware on every node, one shared radio medium, the same run every time. The idea carries over to whatever small machine comes next.

How we work

Four habits

01

Run the real thing

The real mask ROM, the real bootloader, unmodified firmware. If it runs on the chip, it should run here, without special builds.

02

Same input, same result

Deterministic runs turn a flaky bug into one you can replay, and a test into evidence, for people and coding agents alike.

03

Keep the receipts

Speed and correctness claims come with commands, inputs, hashes and numbers. Experiments that didn't work are written down too.

04

In the open

Permissively licensed (MIT, BSD-3-Clause) and developed in public on GitHub: the code, the issues and the reasoning behind each change.

What we work on

Small machines, broadly

EmulationFirmwareTest benches for agentsRadios and low-power networks Embedded software in generalSensorsDisplaysHardware-in-the-loop testingRoboticsDeveloper infrastructure

Highlighted: where the work is today. The rest is where it is heading.

Projects

What you can run today

An emulated ESP32-S3 board showing its display

esp32sim

An instruction-level ESP32-S3, C3 and C6 emulator in Rust. It boots the real mask ROM, the real bootloader and unmodified firmware, in a browser tab or on the command line as a deterministic hardware test bench for coding agents.

Rust + WebAssemblyXtensa LX7 · RISC-VMIT
border router skynrf52840z1 cc2538nrf54l15 t = 60.000000000 s

Cooja-NG

A fast network simulator and multi-architecture emulator for Contiki-NG, written in portable C. It runs real, unmodified firmware on emulated MSP430, ARM Cortex-M and RISC-V cores: hundreds of mixed nodes on one deterministic, nanosecond-precise clock, with a live web UI. About ten times faster than Cooja + MSPSim, and it passes the full Contiki-NG Cooja test suite.

CMSP430 · ARM · RISC-V802.15.4 · 6LoWPAN · RPLBSD-3-Clause

More projects will join as they move into the organisation.