 Hi everyone and welcome. I'm excited to be presenting here at the embedded Linux conference virtually. Today I will show you a project that will help IoT companies and developers to make their solution more sustainable, open, secure, and in less time. So I'll go through the main problems that IoT is currently facing, how device maker companies can drive the change and how developers will benefit from it. So, first of all, let me introduce myself. I'm Etto de Chimente. I'm a software engineer at Seco, a global industrial IoT company, and device maker. I'm working in the field for more than five years and I'm currently managing the Seco hardware enablement for the Onir project. So let's begin. And in the last years, we are witnessing a large and exponential growth of IoT devices on the market, much higher than consumer electronics, such as smartphones or a PC. Many companies are building smart solutions, adding connectivity, artificial intelligence, data telemetry, cloud services, analytics to their IoT products. Thanks to existing technology that we know well, such as open source resources like operating systems, libraries, frameworks, just to name a few, development got a huge boost and this is one of the reasons why this is happening. But all of these is raising a problem for both the customer experience and the management of such as fragmented ecosystem. So why fragmentation is bad in IoT and we should avoid it? Many devices are difficult to actively support from a device maker perspective. Often devices are provided with a closed code base and doomed to a fast obsolescence. Another aspect is even if they're built over open source tools technology, the resulting device will likely not cooperate with different vendor products due to lack of open standards. The rise of fragmentation in IoT is not sustainable, reduces the customer experience, services are totally cloud based, even if the devices are in the same room and devices are totally dependent on the vendor in terms of security. To counter all of this, the Onir project was born, a community open source project aiming to simplify and help developers to create secure, interoperable and long lasting IoT solutions. The project was launched in October, 2021 from a community of companies under the governance of the Eclipse Foundation, enforcing the vendor neutrality among the companies. So where are the main principles behind the Onir project? The main idea is to have a common and open base for the development of the IoT solutions for big and small IoT devices. We don't want to reinvent the wheel every time, it would be a waste to ignore existing technologies that are the standard and have a wide community. Open standards and interoperability protocols are the key to avoid technology silos and we should use it in the project. So Linux based architectures are very common nowadays and many developers are used to the Yocto project and a big build system for embedded. So we decided to adopt it for the main core building system as it provides an excellent platform for developing a very customizable cross kernel operating system. Exploiting the big base system it makes the build process easy to compile and target different architectures such as single board computers and microcontrollers using different kernels like Linux or Zephyre. We can control this behavior using custom layer provided by the Onir project. So we have the Meta Onir layer for a root layer. So the main components are provided by this layer. We use Meta Open Embedded from upstream. So main features will come from a stable version. We use Clang as our main component. Toolchain for compiling the project. We have some kernel layers that help us to compile kernel for different architectures. We have Meta Open Harmony that is compatibility layer for interoperability protocols and BSP layers like Metaseco, Metastee, Meta Intel for our reference hardware. So layers are fetched with the repo tools through a manifest and depending on the initial configuration it will compose the image to be compiled. We already provide some basic image to be compiled for our reference. But everything can be expanded and many contribution can be composed for making any type of image that your project requires. Here are the architecture layers that Onir provides. Inside the root layer Meta Onir, we can find several layers that provides different functions. For example, from bottom to top, we have the kernel layer that is responsible of the kernel selection. We also have the kernel selection that is responsible of the kernel selection and build. So it's possible to select a different kernel depending if we are targeting a single board computer or a microcontroller. And we have the system services layer that will provide a complete set of capabilities essential to Onir to offer services for application like OTA support, communication, discovery, device management, everything that we need for an IoT project. Then we have the framework layer that will provide an SDK to develop Onir application in multiple languages depending on the target device class and its hardware constraints. As an example, we have graphical frameworks that the user can exploit or making their own product, for example. Lastly, we have the up layer that Onir Ops will be able to use API to expose business logic as ability that may have, for example, inside other application like artificial intelligence or a speech recognition. One of the main feature is a distributed agent that connects all the appliances running Onir Ops. In this way, they are able to communicate with each other exposing capabilities and offer new interaction to the user without using the cloud. So the user application can exploit the resources among all the devices running Onir Ops to make new interaction that will enhance the user experience. Of course, we have also some connectivity protocols that the user can exploit. So, for example, we have some protocol agnostic libraries that can use co-op, MQTT, OpenThread. We have some examples that are available for hacking and starting new projects, for example. But Onir Ops is not the only one that we can use just layers, octolayers and libraries. We have a whole infrastructure that we provide to companies and users. Onir Ops project have an infrastructure that checks IP compliance, provide documentation, a testing environment with reference platforms. All the infrastructure is based on GitLab runners that triggers test builds, LavaWorker and IP compliance. Lava is a test environment that we use for a test real hardware. And LavaWorkers are figured to ensure that every device still boots and passes all the tests after every merger request. There are several labs and each of them hosts many reference boards to avoid regression that could affect stability. This makes the project always production ready and ensure that project that I'll build with it still passes all the tests. We have also an IP and POS compliance tests based on the open chain specification. It is crucial for this type of project to enforce openness and that the project is usable by anyone. So we follow strict IP standards like also SPDX, reuse and Debian license check. Summarizing, the open source software core is maintained and kept up to date. With stable components from myocto, BSP layers, tool chains, call libraries and on-hero frameworks. All of these are supported and backed by the processes developed by the on-hero community like CICD, testing, documentation, maintenance, IP compliance, OTAE and security. Then on top, we have default configurations that help you kickstart your project with out-of-the-box configurations, OS management and hardened security. And finally, your application on top. On-hero helps developers and companies by focusing on the application rather than on building and maintaining the whole system. To start with, On-hero is giving some defaults that user can pick up to rapidly build real applications, but every piece is customizable and replaceable by design with your preferred choice. As an example, we are using Raoq as the OTAE engine, but the wrapper and the APIs around it are flexible and can support also other engines. As per real hardware, Seco is a partner and a device supplier and introduced three reference industrial hardware platforms so far. We have the Seco Halvin that is an NUC Intel Atom that have industrial peripherals and connections. We have an NXP single board computer that has dual ethernet. We have an heterogeneous processor. They have both microcontroller and an application processor. And then we have a cost-effective board that has an ARM Cortex A35 and an STM32. Of course, they are together with the common prototyping boards like Raspberry Pi and Arduino and virtual targets that help developers to test their application on. This help to test core features to real hardware via CI-CD, so that they can test all of the features of core features to real hardware via CI-CD, enabling security features and trying out real case applications for customers. Reference hardware also helps build what we call the blueprints. MVPs or better reference design for real case applications that showcase one or more features of the Oniro platform. In this way, it is easier for the developer to know how to implement a certain feature or for companies to pitch ideas for a real use case. As an example, we have a vending machine blueprint that provides support for building a proper concept smart vending machine showing the capabilities of the Oniro project. For example, we use the Intel board that expose capabilities like a video, like an HMI screen and a selection metrics built with the LEDs. So what is the added value of Oniro here? So you get to have a co-investment among other partners that are around the Oniro project and you get the shared pool of expertise and know how is a global ecosystem rooted in Europe. You get to code, develop and deploy your applications. You get a unified set of complex API and protocols that are natively for build for IoT and you get a shared go-to-market strategy for building your application. The project is already out of the staging process and you can start to look inside the first features. So you can download the project, start using the base images on the reference hardware or to the virtual machines. You can try it out and hack the blueprints that are already available. You can read the documentation and hopefully you can contribute into the community. We are available also in IRC where you can chat with the developers. And thank you for your time and I hope you're joining the community. I will be available for comments and questions after the presentation. And there is a booth in the Linux conference if you want to chat with other developers and members of the on your project. Thank you again for your time.