Changeset 1578

Show
Ignore:
Timestamp:
06/20/09 22:46:03 (14 years ago)
Author:
jwoithe
Message:

MOTU: start documentation of the Cuemix protocol used in "Mark-3" devices. Protocol analysis by MG and GQ.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libffado/doc/motu_firewire_protocol.txt

    r1523 r1578  
    33 
    44Author: Jonathan Woithe 
    5 Document version: 20090321-1 
     5Document version: 20090621-1 
    66 
    77 
     
    246246 
    247247 
    248 Controlling Cuemix 
    249 ------------------ 
     248Controlling Cuemix in pre-Mark3 models 
     249-------------------------------------- 
    250250It has been noted that some mixer settings (particularly registers 0x4yyy) 
    251251have been found to utilise "write enable" bits which when set allow their 
     
    329329 * In response the PC reads register 0x0c1c from the Motu to obtain the new 
    330330   gain trim value and pad setting. 
     331 
     332 
     333Controlling Cuemix in Mark3 models 
     334---------------------------------- 
     335With the introduction of the "Mark3" interface models (Ultralite, Traveler, 
     336828) MOTU completely changed the method used to control the Cuemix features 
     337of the interface.  This was partly out of necessity - with the additional 
     338Cuemix features being added to the "Mark3" models MOTU otherwise faced an 
     339unbounded expansion in the number of device registers needed. 
     340 
     341Protocol analysis of an Ultralite-mk3 was provided by MG and GQ. 
     342 
     343The Mark3 interfaces use a variation of a key-value protocol involving block 
     344writes to register device register 0x10000 (bus address ffc0-ffff-0001-0000 
     345nominally.  Either 2 or 3 quadlets are written depending on the message 
     346being sent.  For this documentation we will refer to the bytes within a 
     347message as b00 .. b11, with b00 being the first byte sent. 
     348 
     349Byte b00 and b01 form a heartbeat word.  Precisely how this is constructed 
     350is not currently known, but it seems it might just be a monotomically 
     351increasing number probably used by the device to detect missing data or 
     352something. 
     353 
     354Byte b02 seems to be some kind of class identifier.  Currently identified 
     355classes are: 
     356  0x66: Faders (including bus master), pan, input trim 
     357  0x69: Mute/Solo, Routing selection 
     358 
     359Specific message formats are described below. 
     360 
     361Trim: 3 quadlet message 
     362  b00-b01 - heartbeat 
     363  b02     - 0x66 
     364  b03     - channel select (0x00-0x09) 
     365  b04     - 0x02 (select trim control) 
     366  b05-b06 - unknown, TBA 
     367  b07-b10 - data (big endian float, 0.0 - 24.0) 
     368  b11     - 0x00 
     369 
     370Reverb send: TBA 
     371 
     372Channel faders: 3 quadlet message 
     373  b00-b01 - heartbeat 
     374  b02     - 0x66 
     375  b03     - bus select (0x00-0x09) 
     376  b04     - 0x03 (select fader control) 
     377  b05     - channel select (0x02-0x09) 
     378  b06     - 0x02 
     379  b07-b10 - data (big endian float, 0.0 - 1.0) 
     380  b11     - 0x00 
     381 
     382Pan: 3 quadlet message 
     383  b00-b01 - heartbeat 
     384  b02     - 0x66 
     385  b03     - bus select (0x00-0x09) 
     386  b04     - 0x02 (select pan control) 
     387  b05     - channel select (0x02-0x09) 
     388  b06     - 0x02 
     389  b07-b10 - data (big endian float, -1.0 - 1.0) 
     390  b11     - 0x00 
     391   
     392Bus master fader: 3 quadlet message 
     393  b00-b01 - heartbeat 
     394  b02     - 0x66 
     395  b03     - bus select (0x00-0x09) 
     396  b04-b05 - 0x02-0x00 (select bus master control) 
     397  b06     - 0x02 
     398  b07-b10 - data (big endian float, 0.0 - 1.0) 
     399  b11     - 0x00 
     400   
     401Bus routing: 2 quadlet message 
     402  b00-b01 - heartbeat 
     403  b02     - 0x69 
     404  b03     - output select (0x00-0x06, 0xff=disabled) 
     405  b04     - bus select (0x00-0x07) 
     406  b05-b07 - 0x00-0x00-0x02 
     407 
     408Mute: 2 quadlet message 
     409  b00-b01 - heartbeat 
     410  b02     - 0x69 
     411  b03     - state (0x00=disable, 0x01=enable) 
     412  b04     - bus select (0x00-0x07) 
     413  b05     - 0x00 (select mute control) 
     414  b06     - channel select (0x01=bus master, 0x02-0x0b) 
     415  b07     - 0x02 
     416 
     417Channel solo: 2 quadlet message 
     418  b00-b01 - heartbeat           
     419  b02     - 0x69 
     420  b03     - state (0x00=disable, 0x01=enable) 
     421  b04     - bus select (0x00-0x07) 
     422  b05     - 0x01 (select solo control) 
     423  b06     - channel select (0x01=bus master, 0x02-0x0b) 
     424  b07     - 0x02 
    331425 
    332426