Firmware testing services for embedded devices
Midair flashes your firmware onto real boards, runs the tests, watches the serial console and keeps the evidence of every run.
Start with one firmware failure that costs your team time. A pilot connects one bench and one suite, and grows from there.
flash dfu: image written, read back, verified power outlet 3: off, on console U-Boot 2024.01 console Starting kernel ... test boot/time_to_shell PASSED 6.2 s test power/cut_during_write PASSED test update/keep_config FAILED expected PASSED console Kernel panic - not syncing (pattern matched) power cold reboot of the board delta appeared: /etc/cron.d/backup mode 0666 midair run 412 saved: configuration, logs, verdicts
What firmware testing is.And why a laptop is not enough.
Firmware testing checks that the software inside a device works on the real hardware. It covers flashing, boot, peripherals, timing, updates and recovery after a fault.
Unit tests on a laptop miss most of this. A firmware bug often needs one board revision, a long uptime or a power cut at the wrong moment.
So a firmware test controls the bench as well as the code: power, flashing, the console and the wires to the peripherals. It also records all of them next to the result.
Where firmware fails.Six moments in a device's life.
Pick a moment to see what goes wrong there and what a test does about it.
Flash
- What goes wrong
- A write stops halfway, or the image does not fit the partition on one board revision.
- What the test does
- Write the image, read it back to verify it, and wait for the board to come back after the reset.
- What Midair keeps
- The image, the readback result and the console output.
Boot
- What goes wrong
- The bootloader starts the wrong image, or a driver hangs on one peripheral.
- What the test does
- Watch the serial console for U-Boot and the kernel, and time each boot stage.
- What Midair keeps
- The full console log, cut by test.
Run
- What goes wrong
- A sensor answers late under load, or two interrupts race.
- What the test does
- Drive GPIO, I2C, SPI and CAN from the test and check what the firmware answers.
- What Midair keeps
- Each verdict next to the expected one, with the test parameters.
Long uptime
- What goes wrong
- Memory leaks slowly, a counter wraps, and the watchdog resets the device after thirty hours.
- What the test does
- Keep the scenario running, follow memory through the run and catch the watchdog reset.
- What Midair keeps
- The timeline of the run, with the reset in it.
Update
- What goes wrong
- The new version cannot read the configuration that the old version wrote.
- What the test does
- Flash version N, then N+1, and run the same suite on both.
- What Midair keeps
- Two runs, each with its own configuration and pinned commits.
Power loss
- What goes wrong
- Power drops during a write, and the device does not boot again.
- What the test does
- Cut power at a chosen moment from a PDU, a relay or a USB hub, then check that the device recovers.
- What Midair keeps
- The moment of the cut, the console before and after, the verdict.
The bench, under test control.Every wire the test needs.
A test agent runs on a host next to the device. Through it, a test reaches every connection an engineer would use by hand. The device itself needs no agent.
How a run works.Five steps, one record.
-
1
Visao
Check the code before it runs
Visao analyzes the C, C++ and assembly sources with your cross toolchain, such as arm-none-eabi-gcc. With the MISRA C:2012 profile, each finding carries its rule number. Against a baseline, only new findings are reported.
visao -- otp.cpp · MISRA C:2012 otp.cpp:20:20 error arithm/integer/overflow MISRA 12.4 otp.cpp:31:5 error cpp/string/no_null_terminator MISRA 21.17 2 new findings against the baseline
-
2
Test Environment
Flash and boot the board
The test host writes the image, verifies it and power-cycles the board. The serial console goes into the run log from the first line of the bootloader.
bench lab-2 · board 3 flash dfu: image written, read back, verified power outlet 3: off, on console U-Boot 2024.01 console Starting kernel ... console login prompt after 6.2 s -
3
TS Factory
Run the suite
Each test has an expected verdict, and Midair compares the obtained one with it. Describe a new test in plain words, and TS Factory writes it into the suite repository on its own branch.
fw-smoke · 12 tests boot/time_to_shell PASSED expected PASSED power/cut_during_write PASSED expected PASSED update/keep_config FAILED expected PASSED 11 as expected, 1 unexpected
-
4
Delta
Inspect the device
Delta checks the running device, or the firmware root file system without booting it: open ports, persistence files, binaries and their hardening. It compares the result with a baseline and lists what appeared or went missing.
delta --root ./rootfs --baseline golden.json appeared /etc/cron.d/backup mode 0666 T1053.003 appeared tcp 0.0.0.0:2375 dockerd missing stack canary in /usr/bin/agent 3 differences from the baseline
-
5
Midair
Keep one record
Midair stores the run with its configuration, pinned commits, logs and verdicts. It never writes over a run, so the same failure can be opened again next month.
run 412 · bench lab-2 · fw 2.4.1 configuration run.conf.lab-2, env.lab-2 commits pinned in builder.conf.lock logs console, kernel, test tree verdicts 11 as expected, 1 unexpected evidence 2 findings, 3 device changes
How a pilot starts.One failure, then the rest.
Pick one failure
Choose a firmware problem that costs your team time today.
Connect one bench
Power, console and flashing for one board, through a host next to it.
Write the first suite
With TS Factory, or by hand in the Test Environment format.
Run it on every build
Start runs from your CI, for example with the Jenkins plugin.
Questions.Short answers.
What is firmware testing?
Firmware testing checks that embedded software works on the real hardware: flashing, boot, peripherals, timing, updates and recovery after a fault.
How is firmware testing different from software testing?
The result depends on the board, its state and its timing. A firmware test controls power, flashing and the console, and records them with the result.
Can we start before the hardware is ready?
Yes, in part. Visao analyzes the source without running it. Delta can inspect a firmware root file system offline. Tests can run on QEMU until the board arrives.
Which devices does Midair work with?
Tests reach the board through a host next to it, so the board needs no agent. Delta runs on embedded Linux on x86_64, AArch64, ARMv7, RISC-V and MIPS. Visao analyzes code built with cross toolchains, including bare-metal targets.
Do you offer firmware testing as a service?
Midair is a platform that runs your tests on your bench. In a pilot, our engineers help you connect the first bench and write the first suite.
Does Midair change our firmware?
No. Midair reports failures and findings with their evidence. TS Factory writes tests only in the test suite repository, on its own branch.
Start with one firmware failure.We connect the bench with you.
Compare the plans on the pricing page. Prices are monthly, in euros.
Start your pilot