Skip to main content
BlogZephyr Developer Summit

Zephyr RTOS + USB + More

By September 28, 2023No Comments

The Zephyr Developer Summit, hosted under the first-ever Embedded Open Source Summit in Prague, Czech Republic, on June 27-30 included presentations, BoFs, and training designed for real time problem solving and deep discussions. More than 1,300 people registered for the EOSS conference – representing 375 organizations across 56 countries around the globe. Zephyr had 75+ technical sessions (in-person and on-demand) for 3 tracks focused on users of Zephyr, developers contributing upstream, and maintainer-specific topics.

All of the videos from the Zephyr Developer Summit can be found on the Zephyr Youtube Channel. Each week, we’ll highlight a few videos in a blog for easy access. Today, we’re featuring a few sessions focused on USB including, “USB Device Support in Zephyr RTOS from the Application Perspective,” “Implementing a Custom USB Device Controller Driver in Zephyr,” “Analyze USB Traffic with Wireshark,” “USB Type-C and You,” and “New USB Device Class API Introduction.

USB Device Support in Zephyr RTOS from the Application Perspective – Johann Fischer, R&D Engineer at Nordic Semiconductor ASA

Zephyr RTOS has an implementation of USB device support pretty much from the beginning. Apart from direct use in the user application, various subsystems in the Zephyr RTOS also make use of device support. Since version v.3.3.0 there is also a new device stack as part of the experimental USB support. Johann will give an overview of USB device support in the Zephyr RTOS from an application perspective. He will also cover the differences and features in the new experimental support.

The video will start with configuring USB device support, how to select the desired features (classes) and how to enable USB device support. Johann will give a step-by-step insight into the different USB class implementations and go into their peculiarities and how they work in or with other subsystems. Author will explain how and why some functions are described and configured via the device tree and others are not. Special attention will be given to the configuration and use of the CDC ACM class.

YouTube player

Implementing a Custom USB Device Controller Driver in Zephyr – Mohammed Billoo, CEO at MAB Labs, LLC

As the adoption of The Zephyr Project RTOS widens, there is an increased need for device drivers to be developed. In this talk, Mohammed Billoo will describe his experience implementing a driver in Zephyr for a custom USB device controller implemented in an FPGA. He will describe the process he followed to integrate the device driver with the Zephyr USB stack, the challenges he encountered, and the needed workarounds for successful driver integration. Mohammed will explain the next steps for this project and summarize some lessons learned.
YouTube player

Analyze USB Traffic with Wireshark – Tomasz Moń, Senior Firmware Engineer at Nordic Semiconductor Poland Sp. z o.o.

Pretty much everyone uses USB, yet so few know how it works under the hood. This presentation explains basic concepts behind USB and how this information is presented in Wireshark. Getting familiar with USB on your own can be intimidating task, especially if you have no prior USB programming experience. This video will provide clear enough explanation so you can avoid scratching your head due to common misconceptions. During the talk a Zephyr-based device traffic captured both at a URB level (USBPcap) and USB packet level (OpenVizsla) will be discussed. This is updated version of USB Analysis 101 presented at SharkFest’20 Virtual. Wireshark USBLL dissector was significantly improved since October 2020 and now features transfer reassembly.
YouTube player

USB Type-C and You – Google’s Diana Zigterman, Embedded Software Engineer  & Samuel Hurst, Embedded Software Engineer 

Learn about how the features you’d like to implement tie into the USB Implementers Forum specified requirements for creating a USB Type-C system. From there, we’ll cover how to use the Zephyr USB-C subsystem to accomplish your goals.
YouTube player

Watch the rest of the Zephyr Developer Summit videos here. The schedule and links to the PPT presentations can be found here. Photos from the EOSS can be found here.

For more information about the 2024 event, stay tuned by subscribing to the Zephyr quarterly newsletter or connect with us on @ZephyrIoTZephyr Project LinkedIn or the Zephyr Discord Channel to talk with community and TSC members.

New USB Device Class API Introduction – Johann Fischer, R&D Engineer at Nordic Semiconductor ASA

As part of the experimental USB support, a new device stack has been added to the Zephyr RTOS since version 3.3.0. Existing implementations of the USB classes (or functions) will be ported to the new USB device support (porting should be completed by presentation time). The USB device stack itself does not provide any useful functionality. The functionality can be provided by a class implementation like CDC ACM. There are USB-IF class specifications, like CDC ACM, or third-party specifications, like the Bluetooth HCI transport layer. New USB device support has a common API to interface with class implementations. A vendor-specific class or function must also use this API. The API will be mandatory for all new implementations. The stack also has management functions, such as adding or removing a class instance to or from a configuration at runtime. Johann will give an introduction to the new USB device class API in USB support, show how to implement a simple function that supports multiple instances, and briefly describe the API. The author will also cover relevant differences and features in the new USB device support.
YouTube player

Watch the rest of the Zephyr Developer Summit videos here. The schedule and links to the PPT presentations can be found here. Photos from the EOSS can be found here.

For more information about the 2024 event, stay tuned by subscribing to the Zephyr quarterly newsletter or connect with us on @ZephyrIoTZephyr Project LinkedIn or the Zephyr Discord Channel to talk with community and TSC members.

Zephyr Project