---
title: SCSIPeripheralsDriverKit
framework: scsiperipheralsdriverkit
role: collection
role_heading: Framework
platforms: [driverkit 22.0+]
path: scsiperipheralsdriverkit
---

# SCSIPeripheralsDriverKit

Develop drivers for peripherals that use SCSI Block Command and Multimedia Command protocols.

## Overview

Overview The SCSIPeripheralsDriverKit framework supports the development of drivers for external devices that communicate using SCSI protocols. This framework operates at the logical unit level. For block-level driver development, use BlockStorageDeviceDriverKit. For protocol-level driver development, use SCSIControllerDriverKit. Creating a driver SCSIPeripheralsDriverKit supports three types of peripherals defined by the SCSI specifications: Develop your driver by subclassing IOUserSCSIPeripheralDeviceType00,  IOUserSCSIPeripheralDeviceType05, or IOUserSCSIPeripheralDeviceType07, depending on the relevant device type. In your subclass, override all methods the framework declares as pure virtual. Then package your driver in an app that uses the System Extensions framework to install and upgrade the driver on the user’s Mac. When you subclass IOUserSCSIPeripheralDeviceType00,  IOUserSCSIPeripheralDeviceType05, or IOUserSCSIPeripheralDeviceType07, update the IOKitPersonalities key of your driver extension’s information property list file with information to match your driver to appropriate hardware. For these classes, always include the keys and values in the following table:  |   |   |   |   |   |   |   |  In addition to these required keys, you can include additional key-value pairs as needed. The following example shows a minimal entry for the IOKitPersonalities key in the information property list for a block device (Type00) driver: <key>IOKitPersonalities</key>  <dict>      <key>ExampleDext</key>      </dict>          <key>CFBundleIdentifierKernel</key>          <string>com.apple.iokit.IOSCSIBlockCommandsDevice</string>          <key>CFBundleIdentifier</key>          <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>          <key>IOClass</key>          <string>IOUserSCSIPeripheralDeviceType00</string>          <key>IOProviderClass</key>          <string>IOSCSIPeripheralDeviceNub</string>          <key>IOUserClass</key>          <string>YourDextClassName</string>          <key>IOUserServerName</key>          <string>com.example.yourdextname</string>          <key>Peripheral Device Type</key>          <integer>0</integer>      </dict>  </dict>    note: SCSIPeripheralsDriverKit is available on macOS.

## Topics

### Entitlements

- [com.apple.developer.driverkit](bundleresources/entitlements/com.apple.developer.driverkit.md)
- [com.apple.developer.driverkit.family.scsicontroller](bundleresources/entitlements/com.apple.developer.driverkit.family.scsicontroller.md)

### Driver interfaces

- [IOUserSCSIPeripheralDeviceType00](scsiperipheralsdriverkit/iouserscsiperipheraldevicetype00.md)
- [IOUserSCSIPeripheralDeviceType05](scsiperipheralsdriverkit/iouserscsiperipheraldevicetype05.md)
- [IOUserSCSIPeripheralDeviceType07](scsiperipheralsdriverkit/iouserscsiperipheraldevicetype07.md)

### Device commands

- [SCSI commands](scsiperipheralsdriverkit/scsi-commands.md)
