Skip to content

Proposal: MOTU (v2) and Tascam protocol families — design ready, offering to contribute #81

Description

@Dreambrother7

Hi — first, thank you for ASFireWire. Getting DICE devices playing on Tahoe through the
adapter chain is a genuinely important piece of work.

I'd like to contribute two new device families and want to sync with you on approach
before writing code:

  1. MOTU protocol-v2 devices (828mk2 first — I own one; the family covers
    Traveler, UltraLite, 896HD). Standard CIP headers (fmt 0x02, FDF 0x22) with SPH-
    timestamped data blocks; 24-bit packed PCM; register control at 0xfffff0000000.
  2. Tascam FW series (FW-1884 first; FW-1082/1804 share the protocol). CIP with
    vendor FMT values (0x1e/0x3e), non-blocking, 24-in-32 quadlet samples; register
    control at 0xffff00000000; control-surface state embedded in the capture stream.

I have full written designs for both, derived from the Linux snd-firewire-motu /
snd-firewire-tascam references (behavioral study only, no GPL code) and mapped onto
IDeviceProtocol / DeviceProtocolFactory / the duplex hooks. Happy to share both docs.

Questions before I start:

  • Shared IR→IT cadence replay. Both families require the host TX stream to replay
    the data-blocks-per-packet sequence observed on the device's TX stream (MOTU
    additionally replays per-block SPH presentation times). I'd like to build this once as
    a shared component — do you have a preferred home for it (Audio/Wire/ shared, or
    elsewhere)?
  • Isochronous receive maturity. Both families need IR from the first streaming
    milestone (the capture stream is the timing source). What's the current state of the
    IR path beyond the DV capture sink, and is there work in flight I should build on or
    wait for?
  • Factory matching. MOTU units are discriminated by the unit directory version
    field (not model ID); Tascam by an ASCII model string in the config ROM.
    DeviceProtocolFactory::Create(vendorId, modelId, …) doesn't currently carry either —
    would you take a small extension of the factory signature / discovery plumbing?
  • Non-blocking cadence. Tascam streams are non-blocking (fractional blocks/packet).
    Is there anything DICE-blocking-specific baked into the IT cadence path I should know
    about?

Hardware I can test against: FW-1884, a MOTU 828mk2, M1 Mac mini on Tahoe with the
Apple TB3→TB2→FW800 chain. I'm set up to develop against the host test suite
(all 1375 tests passing locally) and to follow the project's reference/licensing rules.

I've already forked the repo (Dreambrother7/ASFireWire) and have the host test suite
building and passing locally, so if you'd rather react to a draft PR than discuss in the
abstract, happy to open one.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions