Fuchsia’s driver framework is a collection of libraries, tools, metadata, and components that enable developers to create, run, test, and distribute drivers for Fuchsia systems. The driver framework aims to provide a stable ABI that allows developers to write a driver once and deploy it on multiple versions of the Fuchsia platform. (However, Fuchsia's driver framework is constantly evolving and has not achieved ABI stability yet.)

The driver framework is composed of the driver manager, driver hosts, libraries, FIDL interfaces, Banjo interfaces, and a set of guidelines for developing drivers for Fuchsia:

  • The driver manager is responsible for managing the life cycle of drivers, such as loading, unloading, and registering. It also provides ways for drivers to communicate with each other and with Fuchsia’s Zircon kernel.
  • The driver host is a process that runs in the kernel and enables drivers to access kernel resources.
  • The driver runtime is an in process library which facilitates communication and event handling.
  • The FIDL interfaces are used for communication between drivers and the rest of the system.
  • [DFv1 only] The core library (libdriver) provides a set of common functions that DFv1 drivers can use to interact with the driver manager and driver host.
  • [DFv1 only] The Banjo interfaces are used for communication between drivers and the driver manager.

    (For more information on the differences between DFv1 and DFv2, see Comparison between DFv1 and DFv2.)

For more details on these concepts for the new driver framework (DFv2), see the Drivers section under Fundamentals.

Table of contents

DFv1 to DFv2 driver migration

DFv2 driver development

DFv1 driver development

DFv1 concepts

Driver-specific guides