Apple's adoption of open standards and support for standard peripheral families yields opportunities for both hardware and device-driver developers.

In addition, OS X provides several services that allow applications to communicate with hardware from plug-ins, shared libraries, and other code running outside the kernel.

Start Here

To write code that controls a hardware device in OS X, you should:

To develop hardware devices for the Mac, read the relevant developer notes.

To develop a network kernel extension, read Network Kernel Extensions Programming Guide.

To develop a file system, read the MFSLives sample code.

Choose next how you want to get started—by reading about the basics, getting your hands on some code, or diving into specific technologies.

Want to get familiar with the fundamentals?

Prefer to learn by example?

In addition to these examples and other examples in Hardware and Drivers Sample Code, the Darwin open source project provides dozens of device drivers that you can use as a starting point for understanding the I/O Kit.

Want to learn how to leverage your existing code and knowledge?

Go In Depth

Sometimes you need task-focused information or answers to specific questions to get started. Browse the popular tasks described below for a more targeted way to start developing your web app or web content.

Using High-Level APIs to Access Hardware

Many applications can handle all their hardware-access needs using high-level APIs that are available through Carbon and Cocoa. Unless you’re absolutely certain you need to develop a device driver, read the following to find out if there is an easier solution:

Accessing Hardware from Application

The subtopics in Hardware & Drivers Guides provide additional information about specific device types.

Developing an In-Kernel Device Driver

Developing a kernel-resident device driver is difficult at best and should be done only if there is no alternative. If you’ve determined that your device driver must reside in the kernel, you want to learn more about the kernel and how to program in it.

If you need to know how to write a device driver for a specific device, see the appropriate topic (such as Bluetooth) in Hardware & Drivers Guides.

Developing, Supporting, and Servicing Hardware

Ready for More?

The OS X Reference Library holds plenty more resources that make your job easier. To narrow the list of resources, you can set filters to focus on specific resource types (such as guides or sample code) or on specific topics (such as user experience or data management).