Repository navigation
Apple Driver Camera
Upstream status: yes. uvideo(4) was imported from OpenBSD on 2026-06-16 (b711ef9c75ba), the generic video(4) capture framework landed 2026-08-09 (9c9428825f4c), and uvideo was converted to it the same day (8cdcf4b27c7b). In-kernel USB camera capture is now stock FreeBSD; webcamd from ports is only needed on older releases.
Every built-in Mac camera is a USB device. The FireWire iSight was only the external 2003 accessory; it never shipped inside a Mac laptop.
flowchart LR
subgraph EXT["2003, external accessory"]
FW["iSight on FireWire<br/>IIDC protocol"]
end
subgraph G1["2005 to 2008, built-in iSight"]
RAW["cold boot: 05ac:8300<br/>no firmware onboard"]
RAW -->|"host uploads firmware<br/>(from macOS AppleUSBVideoSupport)"| UVC1["re-enumerates 05ac:8501<br/>UVC with quirks"]
end
subgraph G2["2010 to 2017, FaceTime / FaceTime HD"]
UVC2["standard UVC<br/>firmware onboard"]
end
subgraph G3["2018 to 2020, T2"]
T2["FaceTime HD behind T2<br/>USB device on apple_bce VHCI"]
end
FW --> P0["fwcam(4) -> video(4)<br/>mic: fwisound(4)"]
UVC1 --> P2["uvideo(4) -> video(4) -> /dev/video0"]
UVC2 --> P2
T2 --> P2
style P2 fill:#1a7a3a,color:#fff
style P0 fill:#1a7a3a,color:#fff
style RAW fill:#8a2a2a,color:#fff
| Generation | Hardware path | Stock FreeBSD | Notes |
|---|---|---|---|
| External FireWire iSight (2003) | OHCI + IIDC/DCAM | fwcam(4) into video(4); mic via fwisound(4) | museum grade, but fully upstream |
| Built-in iSight (2005 to 2008) | internal USB, needs host firmware upload | uvideo once firmware is loaded; the loader is the gap, see below | same |
| FaceTime / FaceTime HD (2010 to 2017) | standard UVC, firmware onboard | uvideo + video(4): working, /dev/video0 verified on iMac17,1 | same |
| T2 FaceTime HD (2018 to 2020) | USB behind BCE VHCI | VHCI landed 2026-06-14; camera path untested | test target on cipher/bastion |
The early internal iSight has no onboard firmware. Behavior verified across the Linux ecosystem (isight-firmware-tools):
- Cold boot: enumerates as 05ac:8300, useless.
- Host uploads firmware extracted from the macOS AppleUSBVideoSupport binary; device drops off and re-enumerates as 05ac:8501, a UVC 1.0 camera (with a GET_DEF(PROBE) non-compliance quirk).
- Warm reboot keeps the firmware; cold boot loses it.
- Warm reboot out of macOS leaves it enumerated as 8501 but half-initialized: reload the firmware anyway.
Upstream uvideo(4) already knows both faces of this camera: 05ac:8300 is listed as "Apple iSight (needs firmware)" with a reattach flag, and 05ac:8501 carries an iSight stream-header quirk. Only the firmware uploader is missing.
FreeBSD has no equivalent of ift-extract/ift-load. A small firmware loader (port or rc script) is a well-scoped project for making falcon (MacBookPro3,1) and the other 2006 to 2008 laptops camera-complete. The firmware is Apple-owned: document extraction from the owner's macOS install, do not redistribute the blob.
The framework gives the kernel a native capture stack: video device nodes, format negotiation, buffer queuing, and a crtc interface, so cameras do not need a userland USB proxy. What remains for full upstream camera support:
- T2 machines: confirm the camera enumerates on the apple_bce VHCI and that UVC transfers survive the BCE DMA path.
- Built-in iSight firmware loader for the 2005 to 2008 machines.
-
usbconfigshows the camera VID/PID (05ac:xxxx); on 2005 to 2008 machines note whether it shows 8300 (no firmware) or 8501 - device node appears, formats list, capture one frame
- note resolution and whether the sensor LED behaves
Back to Apple Hardware.