Repository navigation
Apple Driver Storage
Abdelkader Boudih edited this page Aug 24, 2026
·
4 revisions
Upstream status: mostly yes. Everything up to and including T2 NVMe has an upstream path as of 2026-06. Apple Silicon NVMe does not.
| 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 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.
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 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.