Add original MOTU UltraLite (protocol v2) audio support - #116
Open
rafalzalech wants to merge 1 commit into
Open
rafalzalech wants to merge 1 commit into
rafalzalech wants to merge 1 commit into
Conversation
Implement MOTU FireWire protocol-v2 discovery, control, stream framing, channel routing, and DriverKit audio integration for the original UltraLite at 48 kHz. Add unit coverage and document hardware validation and licensing provenance.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I still use an original FireWire MOTU UltraLite and wanted to see if it could work with ASFireWire on Tahoe instead of becoming e-waste. This adds a first MOTU protocol-v2 profile for the device.
I tested it on an Apple silicon MacBook Pro running macOS 26.6.2 (25G83), connected through FireWire 400/800 and the Apple Thunderbolt adapters. It appears as a 14-input/14-output Core Audio device at 48 kHz. I tested playback and capture channel by channel in Max/MSP, as well as normal macOS stereo playback. Main Out 1-2, all eight analog outputs, S/PDIF, headphones, analog inputs, and the CueMix return are working.
The Core Audio output order is:
The input order is:
This change includes exact device matching for the tested UltraLite (
OUI 0x0001f2,Unit_Sw_Version 0x00000d), its register and stream setup, MOTU block encoding/decoding, SPH timing, Core Audio channel reordering, and startup support using IRM channel assignment with a direct two-node fallback. It also adds tests for the device profile, register handling, codec, timing, and transport adapters.Current limits:
For protocol behavior I cross-checked the MOTU manual, public Linux FireWire/MOTU behavior, and observations from the hardware and legacy driver. No GPL or APSL implementation code was copied. The existing Apache-2.0 license and notice are retained, changed files are marked, and
MOTU_ULTRALITE.mdrecords the hardware scope and validation details.After rebasing onto the current main branch, all 1,657 C++ tests pass. Six existing fixture/reference tests remain skipped. The only rebase conflict was around the transmit watchdog fix that is now present upstream, so I kept the newer upstream implementation.
I would be glad to adjust the naming or profile boundaries during review. For now, the code deliberately enables only the exact UltraLite profile I could test on real hardware.