Displays, Ethernet, and More Boards Land in Zephyr Port
December 4, 2025 | Peter Hoddie, Principal
The Moddable SDK port to Zephyr continues to blast ahead. This release brings support for displays, more networking options, and additional silicon. Perhaps most importantly, we have ported our unit test runners, which lets us perform in-depth testing on Zephyr.
As always, the majority of our API work is based on the ECMA-419 standard for Embedded JavaScript to ensure interoperability, portability, consistency, and efficiency.
If you are just hearing about our Zephyr port, our blog posts Modern JavaScript for Zephyr and Moddable SDK on Zephyr RTOS Advancing Quickly with Networking, BLE, and More Storage are essential reading.
Displays and Graphics
Interactive user experiences implemented in Embedded JavaScript are a signature feature of the Moddable SDK. With this release, we've used the Zephyr Display API to implement the ECMA-419 Display Class. This will ultimately provide a universal Moddable SDK Display Class for any Zephyr-supported display.
We've updated our Poco renderer and Piu user interface framework to work with the Zephyr Display Class. The result is that the vast majority of code that uses Piu and Poco is now working. The Poco renderer is extremely low-overhead, so performance is outstanding. Check out this video demo running at a solid 60 FPS on a round screen with a 480-pixel diameter. This demo is based on our Round Balls example.
Ethernet
Networking is an essential part of IoT products. While Wi-Fi is the most common way to connect to the internet, many products opt for Ethernet because of its reliability and performance. With this release, we've integrated Ethernet networking support by implementing the ECMA-419 Ethernet Network Interface.
The Ethernet Class API is almost the same as the Wi-Fi Class, so connecting is easy and consistent. By default, the Moddable SDK automatically initializes the Ethernet connection before your project runs. If you need more control, you can easily manage the connection yourself. This example shows requesting a connection and monitoring changes to the connection status.
const Ethernet = device.network?.interface.eth0;
const ethernet = new Ethernet.io({
...Ethernet,
onChanged() {
if (this.connection < 500)
console.log("not ready\n");
else
console.log("ready\n");
}
});
ethernet.connect({});
The Ethernet interface name here is eth0, but the actual name depends on your board's Device Tree.
Testing
Testing is essential to verify the correctness of our Zephyr port. The Moddable SDK has two applications to run Embedded JavaScript unit tests.
test262 verifies JavaScript language conformance of the XS engine
testmc verifies JavaScript modules provided by the Moddable SDK
You can read all about our test tools, how to run them yourself, and how to write your own unit tests in How We Test XS and the Moddable SDK.
We've begun working through the unit tests on Zephyr. Several issues detected by the unit tests were corrected in this release. We'll continue to work through the tests and build new tests as needed.
More Silicon. More Boards.
One of the most appealing features of Zephyr is its support for a huge number of development boards across many different silicon families. This release adds support for three boards we used in our development and testing. You may find these useful starting points for your own development.
-
STM32U5A9J Discovery Kit – This board has a big, beautiful round display, a very fast display controller, and lots of RAM.
-
ESP32 Ethernet Kit – The classic ESP32 with an Ethernet connector. This is the easiest board we found to work with Ethernet.
-
nRF52840 DK – The essential nRF52 board. Great for Bluetooth and projects where low energy use is critical.
To Do
The Moddable SDK and Zephyr both have an incredible number of features that evolve over time, so porting is an ongoing effort. But, we are quickly closing in on what we consider a fully functional port. Here's some of what remains:
- BLE
- Peripheral / Server
- Security
- Displays
- Touch screen support
- More pixel formats supported for displays
- Network testing
- Hardware support
We are looking for developers, especially those with Zephyr experience, to help us finish and harden the Zephyr port. Please reach out through GitHub Discussions if you are interested in contributing.