Skip to content

Adding a PCIe FireWire Card

Aleksandr Shabelnikov edited this page Aug 8, 2026 · 1 revision

Adding support for a PCIe FireWire card

Why your card does nothing

ASFireWire currently matches exactly one PCI device. In ASFWDriver/Info.plist:

<key>IOPCIMatch</key>
<string>0x590111c1</string>

That is device 0x5901, vendor 0x11c1 — the Agere/Lucent FW643 OHCI controller inside the Apple Thunderbolt-to-FireWire adapter.

If your PCIe card uses any other OHCI chipset (TI, VIA, NEC/Renesas, JMicron …), IOKit never matches the driver against it, so the dext is never even started for your card. Nothing appears, no logs are produced, and no amount of reinstalling changes that.

This is not "untested" — it cannot work until the card's PCI ID is added.

Note

Adding the ID is necessary but not automatically sufficient. The OHCI register interface is standardised, so there is a fair chance a card just works once matched — but chipset quirks are real, and matching is the point where testing can begin, not a guarantee.

Step 1 — find your card's vendor and device ID

With the card installed, run:

system_profiler SPPCIDataType

Look for an entry that is a FireWire/1394 controller. If macOS has no driver for it, the name will be a generic pciVVVV,DDDD and it will say Driver Installed: No — that is expected and is exactly the card you want. Read off:

      Vendor ID: 0x104c
      Device ID: 0x8024

Step 2 — build the IOPCIMatch value

IOPCIMatch entries are 32-bit values of the form 0xDDDDVVVVdevice ID in the high half, vendor ID in the low half:

Vendor ID 0x104c
Device ID 0x8024
IOPCIMatch value 0x8024104c

Multiple devices are space-separated in the same string.

Step 3 — report it (preferred)

Open an issue titled something like "PCI ID request: TI XIO2213 FireWire card", and include:

  • Vendor ID and Device ID (and the computed 0xDDDDVVVV value)
  • The card — make, model, chipset if you know it
  • The full system_profiler SPPCIDataType block for that device
  • Your Mac model and macOS version, and how the card is attached (PCIe slot, Thunderbolt-to-PCIe enclosure)

Thunderbolt-to-PCIe enclosures are worth calling out explicitly, since those paths also need IOPCITunnelCompatible, which the driver already sets.

Step 4 — test it yourself (optional)

If you build from source, you can try the ID immediately. In ASFWDriver/Info.plist, add yours to the existing string, space-separated:

<key>IOPCIMatch</key>
<string>0x590111c1 0x8024104c</string>

There are two IOPCIMatch keys in that file:

  • under ASFWDriverService — the main personality
  • under ASFWSCSIControllerService — the SBP-2/SCSI HBA

Update both, or your card will be matched for FireWire but not for SBP-2 storage.

Then rebuild, sign, and install — see Building and Signing.

Please report the result either way. "Matched but never enumerates the bus" and "matched and works" are both valuable, and a negative result saves the next person with that chipset a lot of time. Include logs — see Reporting Issues.

What to expect if it doesn't work

Once matched, the driver will at least attempt OHCI bring-up, so you should see ASFW log output where previously there was silence. Capture it:

log show --last 5m --info --debug --predicate 'eventMessage CONTAINS "[Controller]"'

Or use System Logs tab inside UI app.

The most likely failure modes are register-layout or interrupt differences during controller initialisation, which is precisely the information needed to add real support for that chipset.

Clone this wiki locally