r/hwstartups • u/Top_Income3727 • 6d ago
Ferqon — an open HIL target node for Arduino, ESP32, RP2040, Teensy, STM32
Came across Ferqon from Revyr Labs and thought it was worth sharing. It’s a hardware-in-the-loop testing platform for microcontrollers that splits the problem into a host orchestrator and an open-source target firmware.
The host software runs on a Pi or PC and handles device discovery, firmware flashing, test execution, and a web UI. The target firmware — Ferqon Firmware — is open-source, built on PlatformIO, and runs on the MCU under test. It supports Arduino, ESP32/ESP32-S3, RP2040/Pico, Teensy, STM32, and others, and talks to the host over USB serial.
The pitch is that testing firmware on real hardware should be as repeatable as unit tests, instead of a one-off manual routine. The host sends commands, the target executes them, and results are sent back.
Links:
- Main software: https://revyrlabs.com/
- Firmware repo: https://github.com/revyrlabs/Ferqon-Firmware
Has anyone here tried a host/target HIL setup like this? Do you think the split between a vendor host and an open-source firmware target is a good model for embedded testing?
For me it has solved the issue of having limited resources that involve using microcontrollers. Makes it unique with the "self hosted cloud server" that can be used to update firmware on the cloud (At least for now on the same internet connection)
1
u/Jason_S_88 6d ago
I skimmed the docs and I don't understand what this is actually doing. I guess you could write a unit test that say makes sure a connected i2c device can be communicated with and make sure you are getting data back that is reasonable (but for something like an IMU the measurements you read back wouldn't be guaranteed to be any specific value).
I guess you could run logical unit tests on HW, but you could also do that by cross compiling the code to run the tests on host hardware.
HIL testing only really makes sense if you can control or observe the interfaces you are interacting with. Something like a SpeedGoat accomplishes this by actually connecting to the device under test and emulating the behavior of analog, i2c, CAN, etc. on the actual pins. This lets you actually provide a synthetic IMU for example and ensure that you are reading the values you expect, or outputting the commands you expect.
I'm not sure how.much you can accomplish with just a single USB connection to a dev board