Skip to content

Apple Driver Storage

Abdelkader Boudih edited this page Aug 24, 2026 · 4 revisions

Storage: AHCI, NVMe, SD

Upstream status: mostly yes. Everything up to and including T2 NVMe has an upstream path as of 2026-06. Apple Silicon NVMe does not.

Generations

Era Interface Driver Status
2006 to 2012 SATA AHCI ahci(4) works, boring, perfect
2013 to 2015 proprietary-connector AHCI blades ahci(4) works
2015 to 2017 Apple S1X/S3X NVMe blades nvme(4) S3X (106b:2003) in the ID table; S1X only attaches via the generic NVMe class fallback, no quirks
2018 to 2020 T2 ANS2 NVMe (106b:2005) nvme(4) with Apple quirks landed 2026-06-14 (5e0ba47aa00e)
Apple Silicon ANS2 behind RTKit none blocked on apple_rtkit and apple_sart ports

The T2 ANS2 quirk set

The T2 NVMe controller violates the spec in specific, now-handled ways:

  • Shared CID space: admin and IO queues share one command ID table. The quirk offsets IO command IDs past the admin queue's range and caps IO queue depth so the two never collide.
  • IDENTIFY CNS broken: some CNS values return garbage; the driver avoids them.
  • No async events: AER commands never complete, so none are sent.
  • Single MSI vector: no per-queue interrupts.
  • 128-byte submission queue entries: the controller requires wide SQEs (CC.IOSQES = 7); the driver widens its SQE stride to match.

The 4K-native LBA format and the T2's dislike of being reset late in shutdown are the things to watch during validation on cipher (which runs ZFS root on this controller) and bastion.

SD card readers

Two very different beasts depending on model year:

  • USB readers (05ac VID, most iMacs and minis): umass, works.
  • PCIe SDXC readers (Broadcom, some 2012+ models): needs sdhci-class support, per-model verification pending. Do not assume.

Fusion Drive

Fusion Drive machines are just an SSD plus an HDD to FreeBSD; CoreStorage is not understood. Blow it away and let ZFS do the tiering honestly.

Back to Apple Hardware.

Clone this wiki locally