PCI-E Firewire card passthrough to macOS VM in Proxmox

Hi there! Long time reader, first time poster.

I have recently upgraded my system to the following specs:
CPU: AMD Ryzen 9 7900X
MB: ASUS ProArt X670-E CREATOR WIFI
RAM: G.Skill Trident Z5 RGB DDR5 96GB (2x48GB) 6400MHz CL32 (F5-6400J3239F48GX2-TZ5RW)
GPU: MSI Radeon RX 580 8GB ARMOR OC


I thought this would be a great time to try Proxmox! I have managed to get my existing Windows 10 installation working via passing through the NVMe and all necessary PCI-E/USB devices – and it works flawlessly. I’ve thrown in some other VMs to get to some legacy music production stuff I have archived on my HDDs.

With this, I’ve had an idea of virtualizing macOS inside Proxmox. I have used this wonderful script to set up the first macOS 12 VM. Again – everything worked really well – even the GPU was recognized natively and just worked. I have some experience figuring out Hackintoshes in the past so that OpenCore knowledge came in handy.


Now, to the point – I also have a PCI-E Firewire card plugged in to the PCIEX16_3 slot on the motherboard, which I use to connect to my audio interface (RME Fireface 400).
The card is StarTech PEX1394A2V2 with TI TSB82AA2 Chipset.
Passthrough to the Windows VM works flawlessly and the audio interface spring to life once the drivers are loaded by the system, but the card does not seem to work with macOS.

First thing I did after booting the installed macOS 12 was to check System Report and any FireWire devices. To my surprise, the only text I got was “Unable to list FireWire devices”. The card itself was present in the report under PCI devices, but it was half-recognized; It was listed as 1394 OHCI Controller, but no other details were listed there.

dmesg | grep -i firewire gave me the following:

[    3.092234]: FireWire runtime power conservation disabled. (3)
[    3.248179]: FireWire (OHCI) TI ID 8025 PCI now active, GUID 000f2e0100005a40; max speed s800.

So I know that the device was recognized.

On Proxmox, Fireface 400 works with ffado and can output sound. When Windows VM starts, it hands it over beautifully to the guest OS.
lspci -vvnnn showed me this:

67:00.0 PCI bridge [0604]: ASMedia Technology Inc. ASM1083/1085 PCIe to PCI Bridge [1b21:1080] (rev 03) (prog-if 00 [N
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 25
        IOMMU group: 42
        Bus: primary=67, secondary=68, subordinate=68, sec-latency=32
        I/O behind bridge: [disabled] [32-bit]
        Memory behind bridge: 81100000-811fffff [size=1M] [32-bit]
        Prefetchable memory behind bridge: [disabled] [64-bit]
        Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
        BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16+ MAbort- >Reset- FastB2B-
                PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
        Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
                Address: 0000000000000000  Data: 0000
        Capabilities: [78] Power Management version 3
                Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [80] Express (v1) PCI-Express to PCI/PCI-X Bridge, MSI 00
                DevCap: MaxPayload 128 bytes, PhantFunc 0
                        ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ SlotPowerLimit 26W
                DevCtl: CorrErr- NonFatalErr- FatalErr- UnsupReq-
                        RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ BrConfRtry-
                        MaxPayload 128 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr- NonFatalErr+ FatalErr- UnsupReq- AuxPwr- TransPend-
                LnkCap: Port #1, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <2us, L1 <2us
                        ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp-
                LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk-
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 2.5GT/s, Width x1
                        TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
        Capabilities: [c0] Subsystem: Device [0000:0000]
        Capabilities: [100 v1] Virtual Channel
                Caps:   LPEVC=0 RefClk=100ns PATEntryBits=1
                Arb:    Fixed- WRR32- WRR64- WRR128-
                Ctrl:   ArbSelect=Fixed
                Status: InProgress-
                VC0:    Caps:   PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
                        Arb:    Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
                        Ctrl:   Enable+ ID=0 ArbSelect=Fixed TC/VC=01
                        Status: NegoPending- InProgress-

68:04.0 FireWire (IEEE 1394) [0c00]: Texas Instruments TSB82AA2 IEEE-1394b Link Layer Controller [104c:8025] (rev 01) (prog-if 10 [OHCI])
        Subsystem: Device [0f2e:8025]
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 96 (500ns min, 1000ns max), Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 25
        IOMMU group: 42
        Region 0: Memory at 81104000 (32-bit, non-prefetchable) [size=2K]
        Region 1: Memory at 81100000 (32-bit, non-prefetchable) [size=16K]
        Capabilities: [44] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME+
        Kernel driver in use: vfio-pci
        Kernel modules: firewire_ohci

So it turns out that the card has both a PCI-E-to-PCI bridge and the Firewire chipset itself. They are in the same IOMMU group (as expected, I guess). Could that be an issue for macOS?

From my research, this chip and card should be natively supported in macOS. Producer clearly states that it works with macOS 10.10-10.13. Yet, in each of the 3 macOS VMs I tried (10.13, 12, 14), I had the same outcome – no Firewire devices present and the card half-recognized and not used in the system.

Manuallly loading kexts for Fireface and AppleFWAudio didn’t work:

default	00:08:42.186745+0200	kernelmanagerd	incoming connection from pid 729
default	00:08:42.186877+0200	kernelmanagerd	loadExtensions(withPaths:withIdentifiers:withPersonalityNames:withDependencyAndFolderPaths:options:withReply:): Loading paths: ["/System/Library/Extensions/AppleFWAudio.kext"], identifiers: [], personalityNames: []
default	00:08:42.186916+0200	kernelmanagerd	kcgen activation settings: [kcgen enabled]
default	00:08:42.187661+0200	kernelmanagerd	additional build candidates: 
	Kext com.apple.driver.usb.AppleUSBVHCICommonRSM v1.0 in executable kext bundle com.apple.driver.usb.AppleUSBVHCICommonRSM at /System/Library/Extensions/AppleUSBCommon.kext/Contents/PlugIns/AppleUSBVHCICommonRSM.kext
	Kext com.apple.driver.usb.AppleUSBVHCIRSM v1.2 in executable kext bundle com.apple.driver.usb.AppleUSBVHCIRSM at /System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBVHCIRSM.kext
	Kext com.apple.driver.usb.AppleUSBRecoveryHost v1.2 in executable kext bundle com.apple.driver.usb.AppleUSBRecoveryHost at /System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBRecoveryHost.kext
	Kext com.apple.driver.AppleMobileDevice v4.0 in codeless kext bundle com.apple.driver.AppleMobileDevice at /Library/Apple/System/Library/Extensions/AppleMobileDevice.kext
default	00:08:42.187684+0200	kernelmanagerd	loading existing auxiliary collection contents from stashed instructions
default	00:08:42.212747+0200	kernelmanagerd	validating extension at /Library/Extensions/HighPointRR.kext
default	00:08:42.239656+0200	kernelmanagerd	validating extension at /Library/Extensions/FirefaceAudioDriver.kext
default	00:08:42.264908+0200	kernelmanagerd	validating extension at /Library/Extensions/SoftRAID.kext
default	00:08:42.286637+0200	kernelmanagerd	validating extension at /Library/Extensions/HighPointIOP.kext
default	00:08:42.287852+0200	kernelmanagerd	checking bundle path /Library/Extensions/HighPointRR.kext for Kext com.highpoint-tech.kext.HighPointRR v4.22.1 in executable kext bundle com.highpoint-tech.kext.HighPointRR at /Library/Extensions/HighPointRR.kext
default	00:08:42.287895+0200	kernelmanagerd	checking unstaged bundle path /Library/Extensions/HighPointRR.kext for Kext com.highpoint-tech.kext.HighPointRR v4.22.1 in executable kext bundle com.highpoint-tech.kext.HighPointRR at /Library/Extensions/HighPointRR.kext
default	00:08:42.287935+0200	kernelmanagerd	checking bundle path /Library/Extensions/FirefaceAudioDriver.kext for Kext com.RME.driver.FirefaceAudioDriver v3.41 in executable kext bundle com.RME.driver.FirefaceAudioDriver at /Library/Extensions/FirefaceAudioDriver.kext
default	00:08:42.287970+0200	kernelmanagerd	checking unstaged bundle path /Library/Extensions/FirefaceAudioDriver.kext for Kext com.RME.driver.FirefaceAudioDriver v3.41 in executable kext bundle com.RME.driver.FirefaceAudioDriver at /Library/Extensions/FirefaceAudioDriver.kext
default	00:08:42.288002+0200	kernelmanagerd	checking bundle path /Library/Extensions/SoftRAID.kext for Kext com.softraid.driver.SoftRAID v6.0 in executable kext bundle com.softraid.driver.SoftRAID at /Library/Extensions/SoftRAID.kext
default	00:08:42.288038+0200	kernelmanagerd	checking unstaged bundle path /Library/Extensions/SoftRAID.kext for Kext com.softraid.driver.SoftRAID v6.0 in executable kext bundle com.softraid.driver.SoftRAID at /Library/Extensions/SoftRAID.kext
default	00:08:42.288069+0200	kernelmanagerd	checking bundle path /Library/Extensions/HighPointIOP.kext for Kext com.highpoint-tech.kext.HighPointIOP v4.4.5 in executable kext bundle com.highpoint-tech.kext.HighPointIOP at /Library/Extensions/HighPointIOP.kext
default	00:08:42.288099+0200	kernelmanagerd	checking unstaged bundle path /Library/Extensions/HighPointIOP.kext for Kext com.highpoint-tech.kext.HighPointIOP v4.4.5 in executable kext bundle com.highpoint-tech.kext.HighPointIOP at /Library/Extensions/HighPointIOP.kext
default	00:08:42.288198+0200	kernelmanagerd	loaded collection: auxiliary kext collection at /Library/KernelCollections/AuxiliaryKernelExtensions.kc
default	00:08:42.291922+0200	kernelmanagerd	validating extension at /System/Library/Extensions/AppleFWAudio.kext
default	00:08:42.293061+0200	kernelmanagerd	At least one of the request extensions / bundled extensions com.apple.driver.AppleFWAudio are NOT in the exclude list. Will do full resolution of load request
default	00:08:42.295219+0200	kernelmanagerd	platform dext requests (direct loadable):
default	00:08:42.295265+0200	kernelmanagerd	platform kext requests (direct loadable): 
	Kext com.apple.driver.AppleFWAudio v270.19.2 in executable kext bundle com.apple.driver.AppleFWAudio at /System/Library/Extensions/AppleFWAudio.kext
default	00:08:42.295284+0200	kernelmanagerd	other kext requests:
default	00:08:42.295334+0200	kernelmanagerd	resolved kext load request:
	1 direct platform kext loads,
	0 direct auxiliary kext loads,
	0 auxkc candidates (building not required)
	0 awaiting reboot (already approved)
	0 approvals needed
default	00:08:42.295367+0200	kernelmanagerd	direct loads: 
	Kext com.apple.driver.AppleFWAudio v270.19.2 in executable kext bundle com.apple.driver.AppleFWAudio at /System/Library/Extensions/AppleFWAudio.kext
default	00:08:42.295387+0200	kernelmanagerd	loading extension from in-kernel fileset: com.apple.driver.AppleFWAudio (will start, skipping match)
default	00:08:42.304138+0200	kernelmanagerd	Connection with client pid 729 invalidated.
default	00:08:42.304215+0200	kernelmanagerd	Received kext load notification: com.apple.iokit.IOFireWireAVC
default	00:08:42.304245+0200	kernelmanagerd	Received kext load notification: com.apple.driver.AppleFWAudio
default	00:10:51.673405+0200	kernelmanagerd	incoming connection from pid 755
default	00:10:51.673546+0200	kernelmanagerd	loadExtensions(withPaths:withIdentifiers:withPersonalityNames:withDependencyAndFolderPaths:options:withReply:): Loading paths: ["/Library/Extensions/FirefaceAudioDriver.kext"], identifiers: [], personalityNames: []
default	00:10:51.673593+0200	kernelmanagerd	kcgen activation settings: [kcgen enabled]
default	00:10:51.723143+0200	kernelmanagerd	additional build candidates: 
	Kext com.apple.driver.usb.AppleUSBVHCICommonRSM v1.0 in executable kext bundle com.apple.driver.usb.AppleUSBVHCICommonRSM at /System/Library/Extensions/AppleUSBCommon.kext/Contents/PlugIns/AppleUSBVHCICommonRSM.kext
	Kext com.apple.driver.usb.AppleUSBVHCIRSM v1.2 in executable kext bundle com.apple.driver.usb.AppleUSBVHCIRSM at /System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBVHCIRSM.kext
	Kext com.apple.driver.usb.AppleUSBRecoveryHost v1.2 in executable kext bundle com.apple.driver.usb.AppleUSBRecoveryHost at /System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBRecoveryHost.kext
	Kext com.apple.driver.AppleMobileDevice v4.0 in codeless kext bundle com.apple.driver.AppleMobileDevice at /Library/Apple/System/Library/Extensions/AppleMobileDevice.kext
default	00:10:51.723165+0200	kernelmanagerd	loading existing auxiliary collection contents from stashed instructions
default	00:10:51.746006+0200	kernelmanagerd	validating extension at /Library/Extensions/SoftRAID.kext
default	00:10:51.771289+0200	kernelmanagerd	validating extension at /Library/Extensions/FirefaceAudioDriver.kext
default	00:10:51.797111+0200	kernelmanagerd	validating extension at /Library/Extensions/HighPointRR.kext
default	00:10:51.819652+0200	kernelmanagerd	validating extension at /Library/Extensions/HighPointIOP.kext
default	00:10:51.820941+0200	kernelmanagerd	checking bundle path /Library/Extensions/SoftRAID.kext for Kext com.softraid.driver.SoftRAID v6.0 in executable kext bundle com.softraid.driver.SoftRAID at /Library/Extensions/SoftRAID.kext
default	00:10:51.820983+0200	kernelmanagerd	checking unstaged bundle path /Library/Extensions/SoftRAID.kext for Kext com.softraid.driver.SoftRAID v6.0 in executable kext bundle com.softraid.driver.SoftRAID at /Library/Extensions/SoftRAID.kext
default	00:10:51.821017+0200	kernelmanagerd	checking bundle path /Library/Extensions/FirefaceAudioDriver.kext for Kext com.RME.driver.FirefaceAudioDriver v3.41 in executable kext bundle com.RME.driver.FirefaceAudioDriver at /Library/Extensions/FirefaceAudioDriver.kext
default	00:10:51.821048+0200	kernelmanagerd	checking unstaged bundle path /Library/Extensions/FirefaceAudioDriver.kext for Kext com.RME.driver.FirefaceAudioDriver v3.41 in executable kext bundle com.RME.driver.FirefaceAudioDriver at /Library/Extensions/FirefaceAudioDriver.kext
default	00:10:51.821077+0200	kernelmanagerd	checking bundle path /Library/Extensions/HighPointRR.kext for Kext com.highpoint-tech.kext.HighPointRR v4.22.1 in executable kext bundle com.highpoint-tech.kext.HighPointRR at /Library/Extensions/HighPointRR.kext
default	00:10:51.821101+0200	kernelmanagerd	checking unstaged bundle path /Library/Extensions/HighPointRR.kext for Kext com.highpoint-tech.kext.HighPointRR v4.22.1 in executable kext bundle com.highpoint-tech.kext.HighPointRR at /Library/Extensions/HighPointRR.kext
default	00:10:51.821129+0200	kernelmanagerd	checking bundle path /Library/Extensions/HighPointIOP.kext for Kext com.highpoint-tech.kext.HighPointIOP v4.4.5 in executable kext bundle com.highpoint-tech.kext.HighPointIOP at /Library/Extensions/HighPointIOP.kext
default	00:10:51.821157+0200	kernelmanagerd	checking unstaged bundle path /Library/Extensions/HighPointIOP.kext for Kext com.highpoint-tech.kext.HighPointIOP v4.4.5 in executable kext bundle com.highpoint-tech.kext.HighPointIOP at /Library/Extensions/HighPointIOP.kext
default	00:10:51.821257+0200	kernelmanagerd	loaded collection: auxiliary kext collection at /Library/KernelCollections/AuxiliaryKernelExtensions.kc
default	00:10:51.847539+0200	kernelmanagerd	validating extension at /Library/Extensions/FirefaceAudioDriver.kext
default	00:10:51.849252+0200	kernelmanagerd	At least one of the request extensions / bundled extensions com.RME.driver.FirefaceAudioDriver are NOT in the exclude list. Will do full resolution of load request
default	00:10:51.851366+0200	kernelmanagerd	platform dext requests (direct loadable):
default	00:10:51.851394+0200	kernelmanagerd	platform kext requests (direct loadable):
default	00:10:51.851429+0200	kernelmanagerd	other kext requests: 
	Kext com.RME.driver.FirefaceAudioDriver v3.41 in executable kext bundle com.RME.driver.FirefaceAudioDriver at /Library/Extensions/FirefaceAudioDriver.kext
default	00:10:51.854640+0200	kernelmanagerd	validating extension at /System/Library/Extensions/AppleUSBCommon.kext/Contents/PlugIns/AppleUSBVHCICommonRSM.kext
default	00:10:51.858835+0200	kernelmanagerd	validating extension at /System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBVHCIRSM.kext
default	00:10:51.862977+0200	kernelmanagerd	validating extension at /System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBRecoveryHost.kext
default	00:10:51.867243+0200	kernelmanagerd	validating extension at /Library/Apple/System/Library/Extensions/AppleMobileDevice.kext
default	00:10:51.894056+0200	kernelmanagerd	validating extension at /Library/Extensions/FirefaceAudioDriver.kext
default	00:10:51.896100+0200	kernelmanagerd	requesting latest approval status and kext history from system policy for: 
	Kext com.highpoint-tech.kext.HighPointIOP v4.4.5 in executable kext bundle com.highpoint-tech.kext.HighPointIOP at /Library/Extensions/HighPointIOP.kext 
	Kext com.apple.driver.usb.AppleUSBVHCIRSM v1.2 in executable kext bundle com.apple.driver.usb.AppleUSBVHCIRSM at /System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBVHCIRSM.kext 
	Kext com.apple.driver.usb.AppleUSBRecoveryHost v1.2 in executable kext bundle com.apple.driver.usb.AppleUSBRecoveryHost at /System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBRecoveryHost.kext 
	Kext com.highpoint-tech.kext.HighPointRR v4.22.1 in executable kext bundle com.highpoint-tech.kext.HighPointRR at /Library/Extensions/HighPointRR.kext 
	Kext com.RME.driver.FirefaceAudioDriver v3.41 in executable kext bundle com.RME.driver.FirefaceAudioDriver at /Library/Extensions/FirefaceAudioDriver.kext 
	Kext com.apple.driver.AppleMobileDevice v4.0 in codeless kext bundle com.apple.driver.AppleMobileDevice at /Library/Apple/System/Library/Extensions/AppleMobileDevice.kext (codeless)
	Kext com.softraid.driver.SoftRAID v6.0 in executable kext bundle com.softraid.driver.SoftRAID at /Library/Extensions/SoftRAID.kext 
	Kext com.apple.driver.usb.AppleUSBVHCICommonRSM v1.0 in executable kext bundle com.apple.driver.usb.AppleUSBVHCICommonRSM at /System/Library/Extensions/AppleUSBCommon.kext/Contents/PlugIns/AppleUSBVHCICommonRSM.kext
default	00:10:51.963475+0200	kernelmanagerd	kexts for dependency resolution: 
	Kext com.highpoint-tech.kext.HighPointIOP v4.4.5 in executable kext bundle com.highpoint-tech.kext.HighPointIOP at /Library/Extensions/HighPointIOP.kext 
	Kext com.apple.driver.AppleMobileDevice v4.0 in codeless kext bundle com.apple.driver.AppleMobileDevice at /Library/Apple/System/Library/Extensions/AppleMobileDevice.kext (codeless)
	Kext com.apple.driver.usb.AppleUSBVHCIRSM v1.2 in executable kext bundle com.apple.driver.usb.AppleUSBVHCIRSM at /System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBVHCIRSM.kext 
	Kext com.apple.driver.usb.AppleUSBVHCICommonRSM v1.0 in executable kext bundle com.apple.driver.usb.AppleUSBVHCICommonRSM at /System/Library/Extensions/AppleUSBCommon.kext/Contents/PlugIns/AppleUSBVHCICommonRSM.kext 
	Kext com.softraid.driver.SoftRAID v6.0 in executable kext bundle com.softraid.driver.SoftRAID at /Library/Extensions/SoftRAID.kext 
	Kext com.apple.driver.usb.AppleUSBRecoveryHost v1.2 in executable kext bundle com.apple.driver.usb.AppleUSBRecoveryHost at /System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBRecoveryHost.kext 
	Kext com.RME.driver.FirefaceAudioDriver v3.41 in executable kext bundle com.RME.driver.FirefaceAudioDriver at /Library/Extensions/FirefaceAudioDriver.kext 
	Kext com.highpoint-tech.kext.HighPointRR v4.22.1 in executable kext bundle com.highpoint-tech.kext.HighPointRR at /Library/Extensions/HighPointRR.kext
default	00:10:51.964684+0200	kernelmanagerd	missing dependencies for: com.apple.driver.usb.AppleUSBRecoveryHost, removing from build as it is marked as optional
default	00:10:51.965030+0200	kernelmanagerd	missing dependencies for: com.apple.driver.usb.AppleUSBVHCICommonRSM, removing from build as it is marked as optional
default	00:10:51.965451+0200	kernelmanagerd	missing dependencies for: com.apple.driver.usb.AppleUSBVHCIRSM, removing from build as it is marked as optional
default	00:10:51.968087+0200	kernelmanagerd	Using previously obtained approval statuses from system policy
default	00:10:51.968152+0200	kernelmanagerd	approval results: 
	/Library/Apple/System/Library/Extensions/AppleMobileDevice.kext
	/Library/Extensions/FirefaceAudioDriver.kext
	/Library/Extensions/HighPointIOP.kext
	/Library/Extensions/HighPointRR.kext
	/Library/Extensions/SoftRAID.kext
default	00:10:51.968170+0200	kernelmanagerd	codeless kexts depended on by codeful candidates:
default	00:10:51.968271+0200	kernelmanagerd	codeless kexts with all dependencies already built: 
	Kext com.apple.driver.AppleMobileDevice v4.0 in codeless kext bundle com.apple.driver.AppleMobileDevice at /Library/Apple/System/Library/Extensions/AppleMobileDevice.kext
default	00:10:51.968291+0200	kernelmanagerd	codeless kexts waiting for dependencies to be built:
default	00:10:51.968461+0200	kernelmanagerd	existing, approved auxiliary kext collection direct loads: 
	Kext com.softraid.driver.SoftRAID v6.0 in executable kext bundle com.softraid.driver.SoftRAID at /Library/Extensions/SoftRAID.kext
	Kext com.highpoint-tech.kext.HighPointRR v4.22.1 in executable kext bundle com.highpoint-tech.kext.HighPointRR at /Library/Extensions/HighPointRR.kext
	Kext com.highpoint-tech.kext.HighPointIOP v4.4.5 in executable kext bundle com.highpoint-tech.kext.HighPointIOP at /Library/Extensions/HighPointIOP.kext
	Kext com.RME.driver.FirefaceAudioDriver v3.41 in executable kext bundle com.RME.driver.FirefaceAudioDriver at /Library/Extensions/FirefaceAudioDriver.kext
	Kext com.apple.driver.AppleMobileDevice v4.0 in codeless kext bundle com.apple.driver.AppleMobileDevice at /Library/Apple/System/Library/Extensions/AppleMobileDevice.kext
default	00:10:51.968518+0200	kernelmanagerd	existing, loadable, and approved auxiliary kext collection direct loads: 
	Kext com.RME.driver.FirefaceAudioDriver v3.41 in executable kext bundle com.RME.driver.FirefaceAudioDriver at /Library/Extensions/FirefaceAudioDriver.kext
default	00:10:51.968578+0200	kernelmanagerd	existing approved auxiliary kext collection direct load dependencies:
default	00:10:51.968812+0200	kernelmanagerd	new auxiliary kext collection candidates: 
	Kext com.softraid.driver.SoftRAID v6.0 in executable kext bundle com.softraid.driver.SoftRAID at /Library/Extensions/SoftRAID.kext (existing)
	Kext com.highpoint-tech.kext.HighPointRR v4.22.1 in executable kext bundle com.highpoint-tech.kext.HighPointRR at /Library/Extensions/HighPointRR.kext (existing)
	Kext com.highpoint-tech.kext.HighPointIOP v4.4.5 in executable kext bundle com.highpoint-tech.kext.HighPointIOP at /Library/Extensions/HighPointIOP.kext (existing)
	Kext com.RME.driver.FirefaceAudioDriver v3.41 in executable kext bundle com.RME.driver.FirefaceAudioDriver at /Library/Extensions/FirefaceAudioDriver.kext (existing)
default	00:10:51.968920+0200	kernelmanagerd	resolved kext load request:
	0 direct platform kext loads,
	1 direct auxiliary kext loads,
	4 auxkc candidates (building not required)
	0 awaiting reboot (already approved)
	0 approvals needed
default	00:10:51.968960+0200	kernelmanagerd	direct loads: 
	Kext com.RME.driver.FirefaceAudioDriver v3.41 in executable kext bundle com.RME.driver.FirefaceAudioDriver at /Library/Extensions/FirefaceAudioDriver.kext
default	00:10:51.969027+0200	kernelmanagerd	auxKC filesystem check: Kext com.RME.driver.FirefaceAudioDriver v3.41 in executable kext bundle com.RME.driver.FirefaceAudioDriver at /Library/Extensions/FirefaceAudioDriver.kext found at /Library/Extensions/FirefaceAudioDriver.kext
default	00:10:51.969074+0200	kernelmanagerd	com.RME.driver.FirefaceAudioDriver exists in Optional(file:///Library/Extensions/FirefaceAudioDriver.kext/), telling kernel to mark as available
default	00:10:51.969199+0200	kernelmanagerd	loading extension from in-kernel fileset: com.RME.driver.FirefaceAudioDriver (will start, skipping match)
default	00:10:51.976217+0200	kernelmanagerd	Connection with client pid 755 invalidated.
default	00:10:51.976218+0200	kernelmanagerd	Received kext load notification: com.RME.driver.FirefaceAudioDriver

I also read somewhere that the Firewire card might fight with AppleHPET.kext for IRQ interrupts address, but looking through the IOReg on one of the macOS VMs, that does not seem to be the case here.
If you’d like to have a look at IOReg, you can find it here.

So, to summarize: Want Firewire PCI-E card working in macOS VM; works in Proxmox and Windows, not in any of the 3 macOS versions I’ve tried. Should be working natively AFAIK. What’s next to check/try? Will this be a case of writing ACPI files in OpenCore to get it to work properly? Did I forget something stupid/obvious? Do not hesitate to ask for more details, if needed!

I have also tried plugging it in into another PCI-E on the board; tried PCIEX16_2, while it does change the device ID to be different as this PCI-E is connected to the CPU and not the MB chipset, it doesn’t change the outcome.

Thanks!

1 Like

you have it set like this?

pxmx

As far as I know firewire Audio support was dropped from From macOS 13 (Ventura) and above. :confused:

Here is a relevant article:

Apple chose to discontinue the Firewire CoreAudio driver in macOS 13 Ventura and all subsequent iterations of the macOS.

Latest Intel mac OS iterations are becoming more of a hassle.
Mac OS 15 has UDP issues, so I cannot use Sunshine and I have to confirm screensharing every time I connect. (apparently will be fixed in the comming 15.xx release).

Bluetooth support has been dropped for most chipsets in 14 and I wasn’t able to get any dongle working with any combination of kext or plist modification.

USB chipsets require manual port mapping and my success with PCIe cards has been rather limited and unstable.

So I run Mac OS 14 headless with a HW hdmi emulator dongle + sunshine on my server, so I can get at least audio output.

Yes, This is exactly how I’ve had it. Tried every combination of these, too!
Funny enough, when PCI-Express option is enabled, the device is not loaded and does not appear in macOS at all. System Information says “No FireWire ports were found” and it is not listed in PCI devices.
dmesg | grep -i firewire gives an empty output.
ROM-Bar and All Functions change nothing in this case.

For reference, this is what I get in System Information → Hardware → PCI listing:

pci104c,8025:

  Type:	                IEEE 1394 Open HCI
  Driver Installed:	    Yes
  MSI:	                No
  Bus:	                PCI
  Slot:	                Slot- 17
  Vendor ID:	        0x104c
  Device ID:	        0x8025
  Subsystem Vendor ID:	0x0f2e
  Subsystem ID:	        0x8025
  Revision ID:	        0x0001

Thanks! Always a good reminder. I am aware of the changes made in recent macOS versions – hence why I started with macOS 12, as I know this should be supported out-of-the-box. To be honest, I have no need to go any higher than that – I’d even say I’m going the other way for legacy software support :smiley: .
I have seen people running FireWire audio devices successfully on Ventura after installing an older AppleFWAudio.kext, so I know this is possible in the newer renditions of the OS.

As for all the shenanigans with the newer versions of macOS – have had a little bit of practice daily-driving my Dell XPS 13 (9350) since 10.14 days. Even before that, I dabbled with Hackintosh with my previous Samsung NP350V5C-S0D and Dell Studio XPS 1645 before that. Currently, my 9350 has 12.7.6 working almost perfectly. Went though all the hassle with USB port mapping, replacing the M.2 NGFF Wi-Fi card etc. so I know the drill :sweat_smile:. It’s my first rodeo with FireWire on macOS though and everything else seems to be working well with PCI/USB passthrough.
Since the audio interface is recognized and can be used in Proxmox and Windows (both bare metal and virtualized), that leaves macOS as the culprit.

1 Like

Yeah, you are right. The FW Audio driver is just a kernel extension which can be installed on newer Mac OS. I assumed it had more hooks in other services.

Regarding your problem, it would be funny if a “built-in” flag would be required for the card, similar to the eth0 for imessage fix. - but I am grasping at straws, the few search results from people passsing through FW cards in Proxmox > Mac OS suggest that these haven’t been successfull either :frowning:

This might be worth trying… Although, now that I think about it, there were certainly situations where you would buy a third-party PCI-E Firewire card and use it in a genuine Mac Pro (like here: Firewire PCI Expansion Card | MacRumors Forums) and many users claim they “just work”.

Updated the main post with one more thing I’ve tried:

[…] Plugging it in into another PCI-E on the board; tried PCIEX16_2, while it does change the device ID to be different as this PCI-E is connected to the CPU and not the MB chipset, it doesn’t change the outcome.

Whew… After a couple of days of trying, I finally figured out how to get it working (albeit I do not understand why my initial approach hasn’t worked, so if anyone wants to chime in and explain, I’d be grateful!)

The way I had my macOS VMs set up was pretty standard, based on the OSX-PROXMOX script, as mentioned in the first post in this thread. I thought I’d try something else and I changed machine type from q35 to i440fx. Lo and behold - it just worked! My StarTech Firewire adapter immediately showed my RME Fireface 400 as available and after installing the drivers, it was fully operational. Tested this on various versions of macOS with the same Proxmox settings (passing only the Firewire card, without the bridge from the same IOMMU group and with machine set to i440fx) and it worked in all of the VMs from High Sierra (10.13.6) to latest Sequoia (15.1).

In the meantime, I wanted to get the HDMI audio working, and I’ve managed to work out a solution, but I can’t get them both working at the same time. I feel like I could get them both to work, provided I find a solution for the Firewire card working with q35 machine definition.