Open Source Firmware Conference 2024

Open source platform communication with MCTP
2024-09-04 , Main Room

The Management Controller Transport Protocol (MCTP) defines a mostly-hardware-neutral way of messaging between components of an embedded platform. There has been a lot happening in MCTP support for Linux recently, as well as infrastructure and libraries for use in non-Linux embedded systems too.

This talk covers the current status of MCTP support in the upstream Linux kernel, what hardware transport options are available, plus other facilities useful for incorporating MCTP into an open source firmware stack.


MCTP gives us a fairly lightweight protocol definition, which can be abstracted to a range of different hardware packet transports. This gives us a convenient way to implement message-based communication between components of an embedded system, handling endpoint addressing, message fragmentation and reassembly, request-to-response correlation and multiplexing different upper-layer protocols.

While this is mainly targeted for "management controller" platforms - typically a Baseboard Management Controller (BMC) and the devices it manages - the lower-layer protocol is suitable for carrying messages of any type. This could be handy for all sorts of embedded communication mechanisms!

Linux kernel support for MCTP landed in v5.15, providing a simple sockets-based interface to MCTP messaging with platform devices. Since then, new features and hardware transports have been added, allowing MCTP communication over i2c, serial and i3c, with some new transports landing soon.

There are also a number of other projects that provide support for MCTP - including userspace utilities for the kernel stack, upper-layer protocols that use MCTP for messaging, userspace MCTP stacks, and repositories suited for lower-level embedded MCTP implementations.

This talk will provide a brief overview of MCTP, and the current status of support for MCTP in the open source ecosystem, some implementation hints, and some quirks to be aware of along the way.

See also: Slides PDF (1.3 MB)

Jeremy Kerr is a Linux and open source systems developer, working on the Linux kernel, drivers, firmware and related plumbing, embedded firmware, and a little hardware development too.

Jeremy is the owner of Code Construct - a small consultancy developing in the open source and embedded-systems area, based in Australia. Previously, he has worked for IBM's Linux technology center on their POWER server platforms, and Canonical's hardware enablement team.

Jeremy's first contribution to the Linux kernel was accepted on the 23rd of February, 2004. His second was a fix, for that same piece of code, on the 24th of February, 2004.