Skip to content

Apple Driver Camera

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

Camera (iSight / FaceTime HD)

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
Loading

Status per generation

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 built-in iSight firmware dance (2005 to 2008)

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 video(4) framework

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:

  1. T2 machines: confirm the camera enumerates on the apple_bce VHCI and that UVC transfers survive the BCE DMA path.
  2. Built-in iSight firmware loader for the 2005 to 2008 machines.

Testing checklist (per model)

  • usbconfig shows 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.

Clone this wiki locally