This page is description of command implementation for M-Audio Firewire Solo. The basic knowledgement is BebobAvc. The log from device is AvcModels/MAudioFireWireSolo

In/Out

This device has these hardware output below (used for mixer sink):

  • analog out ch1
  • analog out ch2
  • digital out ch1
  • digital out ch2

This device has these hardware input below (used for mixer source):

  • analog in ch1
  • analog in ch2
  • digital in ch1
  • digital in ch2

This device has these software output below (used for mixer source):

  • stream in ch1 (shown as 'sw 1/2 rtn' in Windows utility)
  • stream in ch2 (shown as 'sw 1/2 rtn' in Windows utility)
  • stream in ch3 (shown as 'spdif rtn' in Windows utility)
  • stream in ch4 (shown as 'spdif rtn' in Windows utility)

This device has one mixer processor.

Screen shots of Windows software

Selector Function Block command

Nr | AddressType     | Direction | SubUnitType | SubUnitId | FunctionBlockType | FunctionBlockId | Id   | Type         |Name
---+-----------------+-----------+-------------+-----------+-------------------+-----------------+------+--------------+------
 6 |   functionblock |     Input |       Audio |      0x00 |              0x80 |            0x01 | 0x00 |    IsoStream | FB Audio In 1394 Spdif
 7 |   functionblock |     Input |       Audio |      0x00 |              0x80 |            0x01 | 0x01 |    IsoStream | FB Audio In Spdif Mix
 8 |   functionblock |    Output |       Audio |      0x00 |              0x80 |            0x01 | 0x00 |    IsoStream | FB Audio Out Ext Spdif

SPDIF source selector

0x00 08 B8 80 01 10 02 XX 01 00 00 00

(function block id = 0x01)

But there should be additional, unknown settings...

XX: source
	'stream in ch3/4':		0x00
	'mixer spdif out ch1/2':	0x01

Input Jack or Input Stream Control

Nr | AddressType     | Direction | SubUnitType | SubUnitId | FunctionBlockType | FunctionBlockId | Id   | Type         |Name
---+-----------------+-----------+-------------+-----------+-------------------+-----------------+------+--------------+------
 9 |   functionblock |     Input |       Audio |      0x00 |              0x81 |            0x01 | 0x00 |    IsoStream | FB Audio In  Ext Line
10 |   functionblock |    Output |       Audio |      0x00 |              0x81 |            0x01 | 0x00 |    IsoStream | FB Audio Out Ext Line
11 |   functionblock |     Input |       Audio |      0x00 |              0x81 |            0x02 | 0x00 |    IsoStream | FB Audio In  Ext Spdif
12 |   functionblock |    Output |       Audio |      0x00 |              0x81 |            0x02 | 0x00 |    IsoStream | FB Audio Out Ext Spdif
13 |   functionblock |     Input |       Audio |      0x00 |              0x81 |            0x03 | 0x00 |    IsoStream | FB Audio In  1394 Line
14 |   functionblock |    Output |       Audio |      0x00 |              0x81 |            0x03 | 0x00 |    IsoStream | FB Audio Out 1394 Line
15 |   functionblock |     Input |       Audio |      0x00 |              0x81 |            0x04 | 0x00 |    IsoStream | FB Audio In  1394 Spdif
16 |   functionblock |    Output |       Audio |      0x00 |              0x81 |            0x04 | 0x00 |    IsoStream | FB Audio Out 1394 Spdif

0x00 08 B8 81 XX 10 02 YY 02 02 ZZ ZZ

(9th byte = 0x02 = defined as 'Volume Control' in the specification)

XX: function block id
	'analog in ch1/2':	0x01
	'digital in ch1/2':	0x02
	'stream in ch1/2':	0x03
	'stream in ch3/4':	0x04
YY: source channel
	ch1/2:	0x00
	ch1:	0x01
	ch2:	0x02
ZZ ZZ:
	Mute:		0x8000
	Unmute/Gain:	0x8001-0xFFFF

0x00 08 B8 81 XX 10 02 YY 03 02 ZZ ZZ

(9th byte = 0x03 = defined as 'LR Balance Control' in the specification)

XX: function block id
	'analog in ch1/2':	0x01
	'digital in ch1/2':	0x02
YY: source channel
	ch1:	0x01
	ch2:	0x02
ZZ:
	ch1:	0x7FFF-0x0000
	center:	0x0000
	ch2:	0x8000-0x0000

Mixing control

Nr | AddressType     | Direction | SubUnitType | SubUnitId | FunctionBlockType | FunctionBlockId | Id   | Type         |Name
---+-----------------+-----------+-------------+-----------+-------------------+-----------------+------+--------------+------
 7 |   functionblock |     Input |       Audio |      0x00 |              0x82 |            0x01 | 0x00 |    IsoStream | FB Audio In Ext Line
18 |   functionblock |     Input |       Audio |      0x00 |              0x82 |            0x01 | 0x01 |    IsoStream | FB Audio In Ext Spdif
19 |   functionblock |     Input |       Audio |      0x00 |              0x82 |            0x01 | 0x02 |    IsoStream | FB Audio In 1394 Line
20 |   functionblock |     Input |       Audio |      0x00 |              0x82 |            0x01 | 0x03 |    IsoStream | FB Audio In 1394 Spdif
21 |   functionblock |    Output |       Audio |      0x00 |              0x82 |            0x01 | 0x00 |    IsoStream | FB Audio Out Ext Mix
22 |   functionblock |     Input |       Audio |      0x00 |              0x82 |            0x02 | 0x00 |    IsoStream | FB Audio In  InputMixer
23 |   functionblock |    Output |       Audio |      0x00 |              0x82 |            0x02 | 0x00 |    IsoStream | FB Audio Out Line Mix
24 |   functionblock |     Input |       Audio |      0x00 |              0x82 |            0x03 | 0x00 |    IsoStream | FB Audio In In Mixer
25 |   functionblock |    Output |       Audio |      0x00 |              0x82 |            0x03 | 0x00 |    IsoStream | FB Audio Out Spdif Mix

0x00 08 B8 82 01 10 04 WW XX YY 03 02 ZZ ZZ ZZ ZZ

(11th byte = 0x03 = defined as 'MIXER_CONTROL' in the specification) (function block = 0x01)

NOTE: here the gain is controlled by Feature Function Block command

WW: source
	'analog in ch1/2':	0x00
	'digital in ch1/2':	0x01
	'stream in ch1/2':	0x02
	'stream in ch3/4':	0x03
XX: source channel
	'ch1/2':		0x01 or 0x02 (no differences)
YY: sink
	'analog out ch1/2':	0x01 or 0x02 (no differences)
	'digital out ch1/2':	0x03 or 0x04 (no differences)
ZZ ZZ ZZ ZZ:
	Enable:		0x00000000
	Disable:	0x80000000

Attachments