Skip to content

Apple Hardware Plan

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

Apple Hardware Documentation Plan

Staging area for content targeting the FreeBSD wiki (https://wiki.freebsd.org/Laptops/Apple_MacBook and related pages). Everything is drafted here in Markdown, validated on real hardware, then converted to MoinMoin markup for the FreeBSD wiki.

Goals

  1. One page per Apple model on hand or already tested, with a per-device status table.
  2. One page per driver/subsystem, describing the hardware family, driver state, and which models carry it.
  3. An index page tying models ↔ drivers together (compatibility matrix).
  4. A clean subset of that content portable to the FreeBSD wiki (no in-development drivers in the upstream version - mark them clearly).

Page hierarchy

Apple-Hardware.md                 <- index + model/driver matrix
Apple-Model-<identifier>.md       <- one per model (e.g. Apple-Model-Macmini5,1)
Apple-Driver-<subsystem>.md       <- one per subsystem

Models to document (fleet)

Model Machine Era/Notes
MacBookPro3,1 falcon Core 2 Duo, GeForce 8600M GT, AR5418 ath WiFi
MacBookPro9,2 sextant Ivy Bridge, BCM4331 (bcsm target)
MacBookPro11,1 skylark Haswell, Iris 5100
MacBookPro11,5 voyager Haswell, TB2
MacBookPro14,2 t1bullshit T1 chip
MacBook Pro 16,2 cipher T2, BCM4364 (kure)
Macmini5,1 cacodemon Sandy Bridge
Macmini6,2 ember Ivy Bridge, BCM4331, Cactus Ridge TB1
Mac mini 7,1 flint Iris 5100
Mac mini 8,1 bastion T2, BCM4364 (lanai)
iMac12,2 anvil Dual GPU (BARTS + HD3000), Light Ridge TB
iMac14,3 mirage i5-4570R (DragonFly box, still document)
iMac17,1 crucible Skylake 5K, BCM43602, working uvideo camera
Apple Silicon (M1/M1 Max) j313 / periscope arm64 bring-up, blocked on rtkit/sart/nvme

Driver/subsystem pages

Page Covers Status source
WiFi bwn(4), ath(4), kwx: bcsm (BCM4331 HT-PHY), bcfm (BCM43602, BCM4364+CLM blobs) kwx mission docs
Thunderbolt tb driver, FW CM, boot-time load requirement, Light/Cactus/Falcon Ridge, XDomain project_tb docs
FireWire fwohci(4), fwcrom, DV/AMDTP (parked) tree + memory
Camera FireWire iSight, USB FaceTime HD (uvideo - works on crucible), T2-gated cameras (need BCE/VHCI) crucible/video4 work
SMC asmc(4), universal key autodetect (D56405), T2 MMIO SMC asmc project
ACPI acpi_apple (backlight, WoL), atrtc/AWAC (not upstream; D54954 is a separate duplicate-attach fix) driver sources
T2 apple_bce + VHCI (upstream 2026-06), T2 NVMe quirks (upstream), audio/camera implications t2 status notes
Input atopcase/SPI keyboard+trackpad, USB HID fallback tree
GPU i915kms (gen6–gen9), radeon (incl. anvil BARTS EFI-posted fix), NVIDIA = none anvil/flint/skylark
Storage AHCI, T2 NVMe (ANS2 quirks upstream 2026-06), SD readers nvme notes
Ethernet bge(4) (MPSAFE fix), msk(4) tree
Audio snd_hda + Cirrus codecs, T2 audio path per-model testing
Bluetooth ubt(4) on BCM USB, firmware state per-model testing
Boot/EFI GENERIC_APPLE kernel config, EFI quirks per model config in tree
Suspend/Resume per-model matrix - the perennial laptop question testing needed

Model page template

# <Model> (<machine codename>)

- Board: <smbios.system.product>, CPU, RAM
- FreeBSD version tested / KERNCONF

| Device | Hardware | Driver | Status | Notes |
|---|---|---|---|---|
| WiFi | BCM4331 (14e4:4331) | bcsm | Partial | scan+assoc, no ... |
...

## dmesg / pciconf
(collected from the machine, trimmed)

Status legend: Working / Partial / Broken / Untested / N-A - same vocabulary the FreeBSD wiki laptop pages use.

Work order

  1. Skeleton - index page, both templates, empty model pages. (no hardware needed)
  2. Driver pages - write from existing project docs and memory; mark in-development (kwx, kgx, acpi_apple...) vs upstream (asmc, ath, fwohci, apple_bce...).
  3. Model pages - collect pciconf -lv, usbconfig, devinfo, dmesg from each machine as it comes online; fill the tables. Machines currently offline get pages with Untested status until visited.
  4. Matrix + review - build the index matrix, cross-link, sanity pass.
  5. Upstream port - strip in-development content, convert Markdown → MoinMoin, post to wiki.freebsd.org (manual - the wiki is behind Anubis bot protection and needs a wiki account; posting is done by hand).

Upstream mapping

WiFi is NOT upstream yet. kwx and its drivers (bcsm, bcfm) exist only out-of-tree. Upstream-portable WiFi content is limited to legacy bwn(4)/ath(4) facts; everything kwx-related stays in the staging wiki, clearly marked, until the framework lands.

  • Laptops → wiki.freebsd.org/Laptops/Apple_MacBook (existing page)
  • Mac mini / iMac are NOT laptops - propose sibling pages (e.g. wiki.freebsd.org/Apple umbrella) when submitting.
  • Apple Silicon bring-up is early; document here, hold off upstreaming.

Clone this wiki locally