Skip to content

Add original MOTU UltraLite (protocol v2) audio support - #116

Open
rafalzalech wants to merge 1 commit into
mrmidi:mainfrom
rafalzalech:feature/motu-ultralite-v2-audio
Open

rafalzalech wants to merge 1 commit into
mrmidi:mainfrom
rafalzalech:feature/motu-ultralite-v2-audio

Conversation

@rafalzalech

Copy link
Copy Markdown

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:

  • 1-2: Main Out 1-2
  • 3-10: Analog Out 1-8
  • 11-12: S/PDIF
  • 13-14: Phones

The input order is:

  • 1-8: Analog In 1-8
  • 9-10: S/PDIF
  • 11-12: CueMix Mix1 return
  • 13-14: transport padding with no physical input

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:

  • 48 kHz only
  • MIDI is not implemented
  • Other MOTU models are left disabled until they can be tested separately

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.md records 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.

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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant